softmax损失函数的求导

对于softmax函数$p_j = \frac{e^{o_j}}{\sum_k e^{o_k}}$

其损失函数为Normalized Negative Log-likelihood (NNL),即$L = -\sum_j y_j \log p_j,$

其中,$o$是一个向量,对$o$求$L$的导数如下

已知

$$\frac{\partial p_j}{\partial o_i} = \begin{cases} p_i(1 – p_i),&\quad i = j \\ -p_i p_j,&\quad i \neq j\end{cases}$$

$$\begin{split} \frac{\partial L}{\partial o_i}&=-\sum_ky_k\frac{\partial \log p_k}{\partial o_i} \\ &=-\sum_ky_k\frac{1}{p_k}\frac{\partial p_k}{\partial o_i} \\ &=-y_i(1-p_i)-\sum_{k\neq i}y_k\frac{1}{p_k}({-p_kp_i}) \\ &=-y_i(1-p_i)+\sum_{k\neq i}y_k({p_i}) \\ &=-y_i+{y_ip_i+\sum_{k\neq i}y_k({p_i})} \\ &={p_i\left(\sum_ky_k\right)}-y_i \\ &=p_i-y_i\end{split} $$

其中,$\sum_ky_k=1$

发表评论

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