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条留言
前一篇:为什么要用cross entropy作为损失函数?
后一篇:urllib模块的使用
©Copyright 麦新杰 Since 2019 Python笔记
本文内容中的推导,关键的一点:\(a_i\)相互之间不独立! [ ]