log-likelihood损失函数

2021年1月20日 / 511次阅读 / Last Modified 2021年1月22日
神经网络

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不存在学习缓慢的问题。

-- EOF --

本文链接:https://www.pynote.net/archives/3315

留言区

《log-likelihood损失函数》有1条留言

您的电子邮箱地址不会被公开。 必填项已用*标注

  • 麦新杰

    本文内容中的推导,关键的一点:\(a_i\)相互之间不独立! [回复]


前一篇:
后一篇:

More

麦新杰的Python笔记

Ctrl+D 收藏本页


©Copyright 麦新杰 Since 2019 Python笔记

go to top