[cv231n] Backpropagation for a Linear Layer

Backpropagation for a Linear Layer 是李飞飞大牛学生Justin Johnson(注意断句),点击可以看他的个人主页发表的论文涉及了多个领域,博士期间在CVPR/ICCV/ECCV顶会上发表多达13篇论文。本文是他为cs231n课程撰写关于Backpropagation的notes,也是我迄今为止见过最简洁,数学推理比较完备的一篇notes。


在本篇笔记中主要是在线性层中推导反向传播的公式,使用Mini-batch。

在前向反馈中,线性层有一个大小是 N\times D 的输入 X ,以及一个大小是 N\times M 的矩阵 W 。

通过两个输入的矩阵内积计算出大小是 N\times M 的输出 Y=XW 。

为了让这个例子更具体,我们令 N = 2, D = 2, M = 3. 现在我们以这个例子可以写出前向传播的输入:

       X=\begin{pmatrix} x_{1,1}& x_{1,2} \\ x_{2,1} & x_{2,2} \end{pmatrix}\ \ \ \ \ \ \ W = \begin{pmatrix} w_{1,1}& w_{1,2} &w_{1,3}\\ w_{2,1} & w_{2,2} &w_{2,3} \end{pmatrix}

       Y=XW=\begin{pmatrix} x_{1,1}w_{1,1}+x_{1,2}w_{2,1} & x_{1,1}w_{1,2}+x_{1,2}w_{2,2} & x_{1,1}w_{1,3}+x_{1,2}w_{2,3}\\ x_{2,1}w_{1,1}+x_{2,2}w_{2,1} & x_{2,1}w_{1,2}+x_{2,2}w_{2,2}& x_{2,1}w_{1,3}+x_{2,2}w_{2,3} \end{pmatrix}

在前向传播后,我们假设输入会在网络的其他部分被使用,最后被用来计算损失 L

在反向传播中,我们假设它的导数(实际上是偏导)\frac{\partial L}{\partial Y} 已经被计算出来。比如说如果线性层是线性分类器的一部分,那么矩阵 Y 给出了分类的打分;这些分数被喂到了损失函数中(例如SVM中的softmax),用来基于打分scores计算损失 L 和 导数 \frac{\partial L}{\partial Y} 。

当 L 是矩阵 Y 的一个标量,大小为 N\times M 。梯度 \frac{\partial L}{\partial Y} 会使一个矩阵并且和矩阵 Y 的大小一样都是 N\times M 。并且梯度 \frac{\partial L}{\partial Y} 的每一个元素都给出了损失 L 基于矩阵 Y 的每一个元素的导数derivative

                                                                    \small \frac{\partial L}{\partial Y}=\begin{pmatrix} \frac{\partial L}{\partial y_{1,1}} &\frac{\partial L}{\partial y_{1,2}} &\frac{\partial L}{\partial y_{1,3}} \\ \frac{\partial L}{\partial y_{2,1}} & \frac{\partial L}{\partial y_{2,2}} & \frac{\partial L}{\partial y_{2,3}} \end{pmatrix}

在反向传播中,我们的目标是使用partial derivative \frac{\partial L}{\partial Y} 来计算 \frac{\partial L}{\partial X} 和 \frac{\partial L}{\partial W}。并且,当损失 L 是标量时, \frac{\partial L}{\partial X} 大小必须是 X (N \times D) , \frac{\partial L}{\partial W} 大小必须是 W (D \times M) 。

通过链式法则chain\ rule,我们有(Goal):

                                                                \frac{\partial L}{\partial X}=\frac{\partial L}{\partial Y}\frac{\partial Y}{\partial X}\ \ \ \ \ \ \ \ \frac{\partial L}{\partial W}=\frac{\partial L}{\partial Y}\frac{\partial Y}{\partial W}

上式中 \frac{\partial Y}{\partial X} 和 \frac{\partial Y}{\partial W} 称为雅可比矩阵 Jacobian\ matrices ,包含矩阵 Y 的每一个元素基于输入 X 和 W 每一个元素的偏微分 partial\ derivative


然而我们不想单独对 Jacobian\ matrices \frac{\partial Y}{\partial X}  \frac{\partial Y}{\partial W} 单独计算,因为我们知道他们会非常大。在经典的神经网络中,我们大概率有 N = 64 ,\ M = D = 4096 ,然后我们的 \frac{\partial Y}{\partial X} 包含了 64\cdot 4096\cdot 64\cdot ·4096 个标量值。(这足够有680万个数,使用32位的浮点数,这个Jacobian\ matrices会占据256G的存储空间)。因此需要额外单独存储Jacobian\ matrices矩阵。

但是我们对于大多数常见的神经网络层,我们的导数计算 \frac{\partial Y}{\partial X}\frac{\partial L}{\partial Y} 时不需要单独计算Jacobian\ matrices \frac{\partial Y}{\partial X} 。甚至我们连Jacobian\ matrices \frac{\partial Y}{\partial X} 也不需要单独计算;在许多场景中,我们只需要算出小样例的数据,然后在内部进行推导。

让我们看看这个如何对我们的例子来计算。


设置 N = 2, D = 2, M = 3,首先我们固定 \frac{\partial L}{\partial X} ,然后我们知道 \frac{\partial L}{\partial X} 和 X 大小相同。

对上式中每一项,首先我们计算 \frac{\partial L}{\partial x_{1,1}},通过链式法则,我们知道:

上式我们可以知道 L 和 x_{1,1} 都是标量,所以 \frac{\partial L}{\partial x_{1,1}} 也是一个标量。如果我们看见 Y 不是一个矩阵,而是由多个标量组成的集合,我们可以使用链式法则来单独计算标量导数 \frac{\partial L}{\partial x_{1,1}} 。

为了避免求和,更方便来收集所有的 \frac{\partial L}{\partial y_{i,j}} 变成一个单独的矩阵 \frac{\partial L}{\partial Y},这里的 L 是一个标量,Y 是一个矩阵,\frac{\partial L}{\partial Y} 的大小也是和 Y 一样的 (N\times M) ,\frac{\partial L}{\partial Y} 给出了 L 基于 Y 的每一个元素的导数。我们再简单的收集所有的 \frac{\partial y_{i,j}}{\partial x_{1,1}} 变成 \frac{\partial Y}{\partial x_{1,1}};因为 Y 是一个矩阵 x_{1,1} 是一个标量,\frac{\partial Y}{\partial x_{1,1}} 大小也是和 Y 一样的 (N\times M)。然后将\frac{\partial L}{\partial Y} 和 \frac{\partial Y}{\partial x_{1,1}}做点乘。

接下来我们有 \frac{\partial L}{\partial Y},然后我们只需要计算 \frac{\partial L}{\partial x_{1,1}} ,我们简单从Y=XW 计算微分:

综合上面两个式子,我们重新得到 \frac{\partial L}{\partial x_{1,1}}

然后继续重复计算 \frac{\partial L}{\partial X} ,其他三个元素:

最后我们综合上面4个元素 \frac{\partial L}{\partial X} 的运算,给出 \frac{\partial L}{\partial X} 基于 W 和 \frac{\partial L}{\partial Y} 的式子:

在式子24中,\frac{\partial L}{\partial Y} 大小是 N\times M ,矩阵 W 大小是 D\times M ;尽管最终 \frac{\partial L}{\partial X} 大小是 N\times D ,它同样和X大小相同。

 同理使用相同的原则,我们得到 \frac{\partial L}{\partial W} :

这种每次只考虑一个元素的策略可以帮助推导出一个层的反向传播方程,即使该层的输入和输出是任意形状的张量;这在推导卷积层的反向传播时尤其有价值。

CSDN的latex格式我还在摸索,有时候有花体时候会用别的字体,有强迫症的朋友抱歉了lol~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值