欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

cs231n assignment1 Q4 softmax梯度推导

程序员文章站 2024-03-25 10:32:46
...

本文推导了斯坦福课程cs231n(2017)assignment1 Q4的反向传播梯度

网络结构为
输入–全连接层–ReLU–全连接层–softmax
XH=XW1+b1R=max(0,H)F=RW2+b2softmax
其中,X为输入,每一行表示一个样本,W1W2分别为第一和第二连接层的权重,b1b2分别为第一和第二连接层的偏置。F为第二连接层的输出(score)。
首先定义损失函数,对于每个训练样本,损失函数定义如下

Li=log(eFi,yijeFi,j).

总的损失函数为所有样本损失函数的均值加上正则项
L=1NiLi+λ(klW1kl2+klW2kl2).


pi,k=eFi,kjeFi,j.


Li=log(pi,yi).

Li求导,得
(138)LiFj,k={pj,k1[yi==k],j=i,0,ji.

写成矩阵形式,我们得到
LF=1N(PM).

其中P(i,j)=pi,j,M为mask矩阵,即第i行的yi个元素为1,其余为0。Python代码如下

dscores = probs
dscores[range(num_examples),y] -= 1
dscores /= num_examples

接下来要算FW2。因为F,W2均为矩阵,该偏导应该是一个四维向量,但包含大量0,展开计算后可得

(134)Fa,bW2i,j={Ra,i,j=b,0,jb.

(这一步如果不清楚的话把Fa,b展开来写就好,参见Vector, Matrix, and Tensor Derivatives
我们通过计算分量来探究LW2的矩阵计算表达式。
LW2m,n=i,jLFi,jFi,jW2m,n+2λW2m,n=iLFi,nFi,nW2m,n+2λW2m,n=iLFi,nRi,m+2λW2m,n.

上式中的Σ求和项可看作矩阵RT的第m行乘矩阵LF的第n列,故矩阵LW2可表示为
LW2=RTLF+2λW2

类似地,我们可以求得b2的导数,注意这里b2应该是一个矩阵而非向量(因为要和矩阵RW2相加)。
Lb2m,n=i,jLFi,jFi,jb2m,n=LFm,n.

这里得到的结果和cs231n官方笔记中得到的不同,我没有想明白这一步。笔记中的结果如下代码所示

db = np.sum(dscores, axis=0, keepdims=True)

完全类似于LW2的推导过程,我们可以得到矩阵R的梯度

LR=LFW2T.

注意到H=XW1+b1R=max(0,H),我们可以进一步得到W1的梯度
LH=max(0,LR),LW1=XTLH+2λW1.

参考资料:
cs231n官方笔记
cs231n - assignment1 - softmax 梯度推导
Vector, Matrix, and Tensor Derivatives