Cross Entropy损失函数

-- TOC --

cross entropy函数的计算公式:

$$C=- \frac{1}{n} \sum_x \bigl(y\ln{a}+(1-y)\ln{(1-a)}\bigr)$$

首先,它是一个损失函数。C为正,并且随着a逐渐逼近y,C在逐渐变小。

在使用sigmoid神经元作为output layer的时候,如果损失函数为quadratic,存在一个学习缓慢的问题。这个缓慢的原因来自sigmoid函数的导数,最大值也才0.25,对应w和b的梯度就变小了很多,学习就慢了。而使用cross entropy损失函数,可以有效的避免最后一层学习缓慢的问题。

$$C_x = - \bigl( y\ln{a}+(1-y)\ln{(1-a)} \bigr)$$

对 \(C_x\) 求导:

$$\frac{\partial C_x}{\partial a}=\frac{a-y}{a(1-a)}$$

a代表神经元的激活输出,如果我们对sigmoid函数按z求导:

$$\frac{\partial a}{\partial z}=a(1-a)$$

很明显可以看到,在计算w和b的梯度的时候,\(a(1-a)\)这一项可以被约掉!相当于sigmoid函数的导数值被约掉了,那个最大才0.25的数值没有了。因此,在sigmoid作为output layer时,必须cross entropy损失函数,可以加快output layer的学习速度。

本文链接:https://cs.pynote.net/ag/ml/ann/202303251/

-- EOF --

-- MORE --