首先看一下二次代价函数:
以二分类问题,常见的sigmoid激活函数为例,假设表示输入值,
表示真实标签(0或1),
表示预测输出,则二次代价函数可表示为:
其中
那么代价函数对权重和偏置
的偏导数分别为:
从上式可以分析:当代价较大即输入输出差别较大时,的值趋于0或1,此时
的值趋于0,既权重
和偏置
的梯度趋于0。这与我们所期望的当代价较大即输入输出差别较大时,以较大的梯度下降更新权重
和偏置
相违背。
再看交叉熵损失函数:
同样以二分类问题为例,损失函数为:
简单分析一下:当为1时,上式变为:
,当预测结果越接近真实标签时损失越小。当
为0时,上式变为:
,当预测结果越接近真实标签时同样损失越小。这么看来交叉熵函数具有作为损失函数的性质。
接下来先推导一下交叉熵损失函数是怎么来的,再从导数角度分析其作为损失函数的可行性:
首先sigmoid函数的输出可以表征预测标签的概率,假设预测标签为1的概率表示为,那么预测标签为0的概率则为
。根据最大似然估计,有:
我们希望最大,对其取对数,再取负数,有:
即变成最小化的问题,这便是交叉熵损失函数推导过程。
再看交叉熵损失函数对权重和偏置
的偏导数,分别为:
将带入上式,得:
同理得:
从上式可以分析:当代价较大即输入输出差别较大时,权重和偏置
的梯度越大。这与我们所期望的当代价较大时以较大的梯度下降更新权重
和偏置
相符。因此,相比二次代价函数交叉熵损失函数更好。