Softmax函数反向传播求导详细过程

Softmax函数反向传播求导详细过程

图:纽约,曼哈顿(Manhattan, New York)

Guderian出品

回顾:Softmax函数正向传播

第一步:计算Z函数

对神经网络输出层(即第$ L $层)有$Z^{[L]}=W^{[L]}a^{[L-1]}+b^{[L]}$,其中$a^{[L-1]}$为上一层输出值。

第二步:计算Softmax函数

for i in range(1, C + 1):

$\quad a_i^{[L]}=\frac{e^{Z_i^{[L]}}}{\sum_{k=1}^C e^{Z_k^{[L]}}}$

其中$C$表示要预测的类别数,上式满足$\sum_{i=1}^C a_i{[L]}=1$,即输入样本属于各类别的概率和为$1$

第三步:计算损失函数

单个样本的损失函数为$L(a,y)=-\sum_{i=1}^C y_i\log{a_i}$,其中$y$为目标输出。

求导

第一步:对Softmax函数求导

​ 对$\mathrm{Softmax}$函数求导,即求$\frac{\partial a_i}{\partial z_j}$:第$\mathrm{i}$项输出对第$\mathrm{j}$项输入的偏导数。

$\frac{\partial a_i}{\partial z_j}=\frac{\partial\frac{e^{z_i}}{\sum_{k=1}^C e^{z_k}}}{\partial z_j}$(省略$[ L ]$标记,默认为第$ L $层,下同),分类讨论:

​ $(1)$当$\mathrm{i=j}$时,把$a_i$分母中除$e^{z_j}$项外视作常量

$\frac{\partial a_i}{\partial z_j}=\frac{\partial\frac{e^{z_j}}{\sum_{k=1}^C e^{z_k}}}{\partial z_j}=(\frac{e^{z_j}}{e^{z_j}+\sum_{k\ne j}^C e^{z_k}})^\prime=a_j(1-a_j)$

​ $(2)$当$\mathrm{i\ne j}$时,把$a_i$分子和分母中除$e^{z_j}$项外视作常量

$\frac{\partial a_i}{\partial z_j}=\frac{\partial\frac{e^{z_i}}{\sum_{k=1}^C e^{z_k}}}{\partial z_j}=(\frac{e^{z_i}}{e^{z_j}+\sum_{k\ne j}^C e^{z_k}})^\prime=\frac{e^{z_i}e^{z_j}}{\sum_{k=1}^C e^{z_k}}=-a_i a_j$

第二步:对损失函数求导

对损失函数求导,即求$\frac{\partial L}{\partial z_j}$:损失函数对第$\mathrm{j}$项输入的偏导数。

$\because L(a,y)=-\sum_{i=1}^C y_i\log{a_i}$

$\therefore \frac{\partial L}{\partial z_j}=-\sum_{i=1}^C y_i\frac{\partial \log a_i}{\partial z_j}=-\sum_{i=1}^C \frac{y_i}{a_i}\frac{\partial a_i}{\partial z_j}$

(把$y_i$视作常量,再用链导法则转化为对$\mathrm{Softmax}$函数求导)

分别代入$(1)(2)$得:

$-\sum_{i=1}^C \frac{y_i}{a_i}\frac{\partial a_i}{\partial z_j}=-\frac{y_i}{a_i}\frac{\partial a_i}{\partial z_j} \, -\sum_{i=1,i \ne j}^C \frac{y_i}{a_i}\frac{\partial a_i}{\partial z_j}$

$\quad =$ $-\frac{y_j}{a_j}a_j(1-a_j)\,+\sum_{i=1,i \ne j}^C \frac{y_i}{a_i}a_ia_j$

$\quad =$ $-y_j\, +y_ja_j\, +\sum_{i=1,i \ne j}^C y_ia_j$

$\quad =$ $-y_j\, +\sum_{i=1}^C y_ia_j$ (合并$y_ja_j$$\sum_{i=1,i \ne j}^C y_ia_j$中)

$\quad =$ $-y_i\, +a_j\sum_{i=1}^C y_i$ (提出$a_j$

$\quad =$ $a_j-y_j$

从上述结果可以看出,$\mathrm{Softmax}$回归和$\mathrm{Logistic}$回归中损失函数求导后具有相同的形式,这也说明了$\mathrm{Softmax}$回归和$\mathrm{Logistic}$回归具有相同的本质,$\mathrm{Softmax}$回归是$\mathrm{Logistic}$的推广。


Reference and lots of thanks:https://www.cnblogs.com/zhaopAC/p/9539118.html

本文标题:Softmax函数反向传播求导详细过程

文章作者:G-SS-Hacker

发布时间:2020年02月04日 - 22:22:46

最后更新:2020年02月06日 - 19:14:56

原始链接:https://G-SS-Hacker.github.io/Softmax函数反向传播求导详细过程/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。