关于交叉熵和sigmoid函数的组合

在神经网络的训练中,当使用的**函数为sigmoid函数时,选择的代价函数一般为交叉熵,而不是二次代价函数。
原因如下:
二次代价函数公式:
关于交叉熵和sigmoid函数的组合
其中c代表代价函数,x代表样本,y代表实际值,a代表输出值,n为样本总数。
关于交叉熵和sigmoid函数的组合关于交叉熵和sigmoid函数的组合
对w和b求偏导数:
关于交叉熵和sigmoid函数的组合
根据偏导数的结果,w和b的梯度跟**函数的梯度成正比,**函数的梯度越大,w和b的大小调整得越快,训练收敛得就越快。
sigmoid函数的图像如下:
关于交叉熵和sigmoid函数的组合
假设目标是收敛到1,A为0.82,距离目标较远,梯度较大,权值调整较大,权值调整比较大;B为0.98,距离目标较近,梯度小,权值调整比较小。方案合理。
假设目标是收敛到0,A为0.82,距离目标较近,梯度较大,权值调整较大,权值调整比较大;B为0.98,距离目标较远,梯度小,权值调整比较小。方案不合理。
所以使用二次代价函数结合sigmoid函数进行梯度下降训练,方案不合理。
如果把损失函数换成交叉熵:
交叉熵代价函数公式:
关于交叉熵和sigmoid函数的组合
关于交叉熵和sigmoid函数的组合
可见,权值和偏置的偏导数与代价函数的导数无关,只与输出值和实际值的差值有关。当误差越大时,梯度越大,w和b的调整越快,训练的速度也就越快。
因此,如果输出神经元是线性的,那么二次代价函数合适。如果输出神经元是s型函数,则损失函数适合交叉熵。