反向传播算法的理解(图片来自cs231n李飞飞课件)

1 链式求导法则(L是损失函数)

反向传播算法的理解(图片来自cs231n李飞飞课件)

2 简单例子(没有矩阵向量参与运算)

反向传播算法的理解(图片来自cs231n李飞飞课件)
把复杂的函数表达式拆分成一个个基础运算,每个基础运算记做一个节点,针对单个节点进行求导。需要服从链式求导法则,由后端开始反向传递,节点左边(前端)的梯度等于该节点求导的结果乘上右边(后端)的求导梯度(箭头上端是正向输入,下端是反向梯度,这里最末端的梯度1.0是提前假设的)。

2.1 引入Sigmoid函数可以简化节点图
反向传播算法的理解(图片来自cs231n李飞飞课件)

2.2 常见运算节点梯度传播总结
反向传播算法的理解(图片来自cs231n李飞飞课件)
加法运算:梯度不变
最大值运算:最大值的输入分支获得整个梯度,其他输入分支梯度为0
乘法运算:梯度交换(假设f(x)=xy,对y求导结果为x,对x求导结果为y)

3 复杂例子(有矩阵向量参与运算)

3.1 f(x,W)函数反向求q梯度
反向传播算法的理解(图片来自cs231n李飞飞课件)
思路解析:
反向传播算法的理解(图片来自cs231n李飞飞课件)
3.2 f(x,W)函数反向求W梯度
反向传播算法的理解(图片来自cs231n李飞飞课件)
思路解析:
反向传播算法的理解(图片来自cs231n李飞飞课件)
3.1 f(x,W)函数反向求x梯度
反向传播算法的理解(图片来自cs231n李飞飞课件)
思路解析:
反向传播算法的理解(图片来自cs231n李飞飞课件)