前言:
关于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是一个矩阵 W W W, W i , j W_{i,j} Wi,j是 ∂ y i ∂ x j \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