log-likelihood损失函数

-- TOC --

log-likelihood损失函数,是为配合softmax作为output layer,正如 sigmoid 要配合 cross entropy一样,都是为了规避output layer的学习缓慢的问题。

log-likelihood函数如下:

$$C = - \sum_k y_k \ln{a_k}$$

y是 labeled data,要么0,要么1,这个cost function,其实只计算了输出vector中 y=1 的那一个元素。

计算 \(\delta^L\) (参考BP计算公式推导):

$$\begin{align} \delta_j^L &= \frac{\partial C}{\partial a_j^L} \\ &= - \frac{\partial (\sum_k y_k \ln{a_k})}{\partial a_j^L} \\ &= - \left(\frac{y_j}{a_j} \frac{\partial a_j}{\partial z_j} + \sum_{k \neq j} \frac{y_k}{a_j} \frac{\partial a_j}{\partial z_k}\right) \\ &\text{(代入softmax层的导数继续计算,得到:)} \\ &= - (y_j - y_j a_j - \sum_{k \neq j} y_k a_k) \\ &= a_j - y_j \ \end{align}$$

softmax层的推导,请看神经元激活函数。

因此:

$$\delta^L = a^L - y$$

这个表达式,与sigmoid配合cross entropy完全一样,继续推导可以w和b的梯度,output layer不存在学习缓慢的问题。

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

-- EOF --

-- MORE --