神经网络与深度学习笔记系列一共有五个专题,分别是
第一章使用神经网络识别手写数字——梯度下降算法是什么。主要介绍了神经网络的基础例如感知器激活函数等概念,最主要介绍了梯度下降算法。
第二章反向传播算法如何工作——反向传播算法原理。主要介绍了反向传播算法的工作原理。
第三章改变神经网络的学习方法——代价函数,规范化,过拟合。主要介绍了不同的代价函数,以及规范化等对传统代价函数的改造。
第四章深度神经网络为何难以训练——梯度消失和爆炸。主要介绍了梯度消失问题和梯度爆炸问题。
第三章改进神经网络的学习方法
3.1交叉熵代价函数
类似于人类试错过程,我们希望神经网络在预测的最终结果和我们想要的结果差距越大时,神经网络对权重和偏置的改变也越大,当慢慢接近真实结果时,改变变小。但是事实上神经网络的学习却是非常缓慢的,原因是我们采用的sigmoid函数两端变得非常平,代价函数对权重和偏置的偏导数变得很小,所以导致了学习缓慢。我们可以通过使用交叉熵代价函数在替换二次代价函数,改善这个问题。
3.1.1交叉熵代价函数的引入
首先给出交叉熵代价函数的公式:
a表示神经元的输出,求和是对所有的输入x进行求和。
首先解释为什么可以把交叉熵函数看做是网络的代价函数。原因有两个,第一,交叉熵函数是正值。因为a的取值是0到1。第二,如果神经元的输出a与标签y接近,代价函数的值趋于0。①当a趋于1,y=1时,第二项为0,第一项趋于0。②当a趋于0,y=0时,第一项为0,第二项趋于0。
而且,交叉熵函数避免了学习缓慢的问题,让我们利用代价函数对权重和偏置求偏导数:
因为所以上式化简为:
通过上式,我们可以看到,代价函数对权重的偏导数取决于的值,也就是说,网络输出的结果与实际结果相差越大,网络学习得越快,网络输出的结果与实际结果相差的越小,网络学习得越慢。
同样的方法可以求出代价函数对偏置的偏导数:
以上是一个神经元的交叉熵函数,对于输出层所有的所有神经元,假设是神经元的目标输出值,是网络的预测输出值,则代价函数的表达式为: