Neural Network and DeepLearning (3.1)改进神经网络的学习方法
The cross-entropy cost function(交叉熵代价函数)
二次代价函数:
二次代价函数权重和偏置的偏导数:
σ函数的图像:
从图中可以看出,当神经元的输出接近1的时候,曲线变得非常平,所以σ’(z)就很小,这导致了∂C/∂w和∂C/∂b也会非常小。最终导致学习速度下降。
引入交叉熵函数
交叉熵代价函数:
将交叉熵函数看作是代价函数有两点原因:
1.交叉熵是非负的。
2.实际输出和目标输出之间的差距越小,最终的交叉熵值越低。
也就是说交叉熵函数的特性是:交叉熵是非负的,在神经元达到很好的正确率的时候会接近0。这也是二次代价函数具备的。
对交叉熵函数应用链式法则求导并化简,得到w,b的偏导数:
这个两个公式告诉我们权重(偏置)的学习速度受到σ(z)-y,也就是输出误差的控制。更大的误差,更快的学习速度。
使用二次函数时,当神经元在接近正确的输出前犯了明显的错误的时候,学习变得更加的缓慢;而是用交叉熵,在神经元犯了明显错误的时候学习的更快。
总结:如果在输出神经元是S型神经元时,交叉熵一般都是更好的选择。
交叉熵的含义
我们想选择一个w,b的偏导数不包含σ’(z)的代价函数,即:
由链式法则可以推导出b的偏导数:
使用带入得到:
对比等式(72)有:
对此方程关于a积分,得到:
这是一个单独的训练样本x对代价函数的贡献,为了得到整个的代价函数,需要对所有的训练样本进行平均:
summary:Then the cross-entropy measures how "surprised" we are, on average, when we learn the true value for y.We get low surprise if the output is what we expect, and high surprise if the output is unexpected.
总结:交叉熵衡量我们学习到y的正确值的平均起来的不确定性,如果输出我们希望的结果,不确定性就会小一点;反之,不确定性就大些。
softma(柔性最大值)
应用softmax在zjL上,第j个神经元的激活值ajL是:
softmax层的输出使一些相加为1的正数的集合,softmax输出可以被看作是一个概率分布。
softmax输出层的神经网络激活值ajL对应的带权输入zjL为:
解决softmax学习缓慢问题
定义一个对数似然(log-likehood)代价函数:
对数似然函数能作为代价函数的原因:
1.0<ayL<1,导致C非负;
2.在神经元达到很好的正确率时,ayL接近1,会导致代价函数很小。
通过运算可以得到w,b的偏导数:
这些方程与前面交叉熵得到的方程类似。
所以,可以把一个具有对数似然代价的softmax输出层,看作与一个具有交叉熵代价的S型输出层非常类似。