CS224N Lecture 3: Backpropagation, Neural Network

系列 - CS224N
目录
矩阵微积分
雅克比行列式
\[ \textbf{h}=f(\textbf{z}) \\ h_i=f(z_i) 且 \textbf{h} ,\textbf{z} \in R^n \]可以得到:
反向传播
- 前向传播就是单纯的计算
- 反向传播是根据梯度进行学习
单输入单输出的情况下,下游梯度就是局部梯度与上游梯度的乘积。
多输入的情况下仍然遵循链式法则。
如图是一种错误的计算反向传播的方式,如果依次计算$\frac{\partial{s}}{\partial{W}}$和$\frac{\partial{s}}{\partial{b}}$,那么会有一部分计算是重复的,就导致反向传播的效率下降。正确的方式应该是先计算公共部分,然后再计算单独的部分,这可以通过拓扑排序来实现。
demo实现
class multiplyGate():
def forward(x, y):
self.x = x
self.y = y
return x*y
def backward(dz):
dx = self.y * dz # dz/dx * dL/dz
dy = self.x * dz
return [dx, dy]

