Cross-entropy
当神经元的输出接近1或0时,曲线很平缓,因而会使偏导数 ∂C/∂w 和 ∂C/∂b 值小,致使学习很慢
如何增快学习?
为此神经网络引入交叉熵代价函数cross-entropy函数
弥补 sigmoid 型函数的导数形式易发生饱和(saturate,梯度更新的较慢)的缺陷
首先来看平方误差函数(squared-loss function),对于一个神经元(单输入单输出),定义其代价函数:
其中 a=σ(z),z=wx+b,然后根据对权值(w)和偏置(b)的偏导(为说明问题的需要,不妨将 x=1,y=0):
根据偏导计算权值和偏置的更新:
无论如何简化,sigmoid 型函数的导数形式 σ′(z) 始终阴魂不散
上文说了 σ′(z) 较容易达到饱和,这会严重降低参数更新的效率。
交叉熵代价函数
对于多输入单输出的神经元结构而言,如下图所示:
我们将其损失函数定义为:
其中:
最终求导得:
softmax和overfitting
1.下面介绍另外一种类型的输出层函数:
第一步:和sigmoid一样
第二步:softmax函数
(分母是将每层所有的神经元的输出值加起来)
(分子是指第L层第J个神经元的输出)
由上可得:
2.介绍一种代价函数log-likelyhood函数
假设输入的是手写数字7的图片,输出比较确定接近7,对于对应的输出7的神经元,概率a接近1,对数C接近0,反之,对数C比较大,所有适合做Cost
是否存在学习慢的问题取决于:
求偏导数,得到:
对比之前用的cross-entropy得到的偏导公式