-- 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/ml/ann/202303252/
-- EOF --
-- MORE --