cs231n assignment1 Q4 softmax梯度推导
程序员文章站
2024-03-25 10:32:46
...
本文推导了斯坦福课程cs231n(2017)assignment1 Q4的反向传播梯度
网络结构为
输入–全连接层–ReLU–全连接层–softmax
其中,为输入,每一行表示一个样本,分别为第一和第二连接层的权重,分别为第一和第二连接层的偏置。为第二连接层的输出(score)。
首先定义损失函数,对于每个训练样本,损失函数定义如下
总的损失函数为所有样本损失函数的均值加上正则项
记
则
对求导,得
写成矩阵形式,我们得到
其中为mask矩阵,即第行的个元素为1,其余为0。Python代码如下
dscores = probs
dscores[range(num_examples),y] -= 1
dscores /= num_examples
接下来要算。因为均为矩阵,该偏导应该是一个四维向量,但包含大量0,展开计算后可得
(这一步如果不清楚的话把展开来写就好,参见Vector, Matrix, and Tensor Derivatives)
我们通过计算分量来探究的矩阵计算表达式。
上式中的求和项可看作矩阵的第行乘矩阵的第列,故矩阵可表示为
类似地,我们可以求得的导数,注意这里应该是一个矩阵而非向量(因为要和矩阵相加)。
这里得到的结果和cs231n官方笔记中得到的不同,我没有想明白这一步。笔记中的结果如下代码所示
db = np.sum(dscores, axis=0, keepdims=True)
完全类似于的推导过程,我们可以得到矩阵的梯度
注意到和,我们可以进一步得到的梯度
参考资料:
cs231n官方笔记
cs231n - assignment1 - softmax 梯度推导
Vector, Matrix, and Tensor Derivatives
上一篇: 使用opencv打开双目usb摄像头
下一篇: 3.3