网站怎么做?/有什么好的网站吗
前言:
关于BP以及链式法则的意义不用多说,cs231n也专门提供了两个PDF,非常有用,建议看一下。
一个是derivations BP and vectorization,讲述了不同维度输入输出之间如何求导。
Derivatives, Backpropagation, and Vectorization
另一个是 BP for a linear layer,解决了一半全连接层的BP问题,基本可以解决所有神经网络的BP问题。
Backpropagation for a Linear Layer
这两个链接不翻墙也可以下。
Derivatives, Backpropagation, and Vectorization
这个前半部分介绍了不同形状的input output如何求导,后半部分和下一篇基本重复。
求导就是y的每个元素对x的每个元素求导。
- y,x都是标量。显然∂y∂x\frac{\partial y}{\partial x}∂x∂y也是一个标量。
- y是标量,x是一维向量。∂y∂x\frac{\partial y}{\partial x}∂x∂y也是一个向量,每个元素是y对x的每个维度的偏导。
- y,x都是一维向量。∂y∂x\frac{\partial y}{\partial x}∂x∂y是一个矩阵WWW,Wi,jW_{i,j}Wi,j是∂yi∂xj\frac{\partial y_i}{\partial x_j}∂xj∂yi
- y,x都是高维矩阵。∂y∂x\frac{\partial y}{\partial x}∂x∂y就是一个高维矩阵,形状为yx叉乘的维度。(这里他提出了一个广义矩阵的概念,就是将y,x的形状当成一个标量一样运算,但是实际上没有什么意义,后面可以看到在BP里面都是一个标量L对矩阵BP,高维矩阵作为中间过程有办法跳过。)
Backpropagation for a Linear Layer
这就是重点了。
重要性质
∂L∂x\frac{\partial L}{\partial x}∂x∂L,∂L∂W\frac{\partial L}{\partial W}∂W∂L,∂L∂b\frac{\partial L}{\partial b}∂b∂L是标量对一维向量 or 矩阵求导,不管中间套娃多少层其形状肯定和x,W,b一样。
如标题所言,linear layer。作者给出了下面一个可以代表所有情况的例子。
其中上游导数∂L∂Y\frac{\partial L}{\partial Y}∂Y∂L认为是已知的,是下面这样;
如果直接链式法则的话:
∂L∂Y\frac{\partial L}{\partial Y}∂Y∂L是一个(2,3)的矩阵。
∂Y∂X\frac{\partial Y}{\partial X}∂X∂Y是一个(2,3)×\times×(2,2)的四维矩阵。显然是难以表现。
但是仔细想想,最终的∂L∂X\frac{\partial L}{\partial X}∂X∂L是一个(2,2)的矩阵。四维矩阵只在中间过程中出现。所以作者就像能不能对矩阵中的单个元素进行分析,得到一些规律性的东西规避了高维矩阵。(这个思想非常有亮点,宏观微观的接合)
单个元素分析:
分析∂Y∂X1,1\frac{\partial Y}{\partial X_{1,1}}∂X1,1∂Y。
可以认为是∑forally∂L∂Y∂Y∂X1,1\sum\limits_{for\ all\ y} \frac{\partial L}{\partial Y} \frac{\partial Y}{\partial X_{1,1}}for all y∑∂Y∂L∂X1,1∂Y。
具体展开带入:
∂L∂X1,1=∂L∂Y1,1∂Y1,1∂X1,1+∂L∂Y1,2∂Y1,2∂X1,1+......+∂L∂Y2,3∂Y2,3∂X1,1\frac{\partial L}{\partial X_{1,1}}=\frac{\partial L}{\partial Y_{1,1}}\frac{\partial Y_{1,1}}{\partial X_{1,1}}+\frac{\partial L}{\partial Y_{1,2}}\frac{\partial Y_{1,2}}{\partial X_{1,1}}+......+\frac{\partial L}{\partial Y_{2,3}}\frac{\partial Y_{2,3}}{\partial X_{1,1}}∂X1,1∂L=∂Y1,1∂L∂X1,1∂Y1,1+∂Y1,2∂L∂X1,1∂Y1,2+......+∂Y2,3∂L∂X1,1∂Y2,3
其中后三项都是零,所以:
∂L∂X1,1=∂L∂Y1,1w1,1+∂L∂Y1,2w1,2+∂L∂Y1,3w1,3\frac{\partial L}{\partial X_{1,1}}=\frac{\partial L}{\partial Y_{1,1}}w_{1,1}+\frac{\partial L}{\partial Y_{1,2}}w_{1,2}+\frac{\partial L}{\partial Y_{1,3}}w_{1,3}∂X1,1∂L=∂Y1,1∂Lw1,1+∂Y1,2∂Lw1,2+∂Y1,3∂Lw1,3
然后整合一下,通过目测法:

作者算这个∂L∂X1,1\frac{\partial L}{\partial X_{1,1}}∂X1,1∂L最后还是变成矩阵了,可能更加有道理,但是我的更好理解,至少对我来说。
结论
这个两个结论是最重要的,后面直接用不需要再依照元素分析了。
ifY=XW:if\ Y=XW:if Y=XW:
∂L∂W=XT∂L∂Y\frac{\partial L}{\partial W}=X^T\frac{\partial L}{\partial Y}∂W∂L=XT∂Y∂L
∂L∂W=∂L∂YWT\frac{\partial L}{\partial W}=\frac{\partial L}{\partial Y}W^T∂W∂L=∂Y∂LWT