前向传播与反向传播
- 反向传播(back-propagation)是计算深度学习模型参数梯度的方法。总的来说,反向传播中会依据微积分中的链式法则,按照输出层、靠近输出层的隐含层、靠近输入层的隐含层和输入层的次序,依次计算并存储模型损失函数有关模型各层的中间变量和参数的梯度。反向传播回传误差(只在训练过程中实现)
- 反向传播对于各层中变量和参数的梯度计算可能会依赖各层变量和参数的当前值。对深度学习模型按照输入层、靠近输入层的隐含层、靠近输出层的隐含层和输出层的次序,依次计算并存储模型的中间变量叫做正向传播(forward-propagation)。前向传播求损失(训练与测试均需要)
反向传播公式推导
在这里,我们先按照周志华《机器学习》的反向传播理解思路进行公式推导,对后面深入理解深度神经网络中的反向传播预热!
深入理解反向传播
计算图
计算图的三要素:节点,连接线,操作
- 节点:用于表示变量,变量可以是标量,矢量,向量,矩阵等
- 连接线:用于连通节点
- 操作:一个或多个变量的简单函数
举例说明计算图的表示方式
链式法则与雅可比矩阵
- 单项链式法则
- 多项链式法则
- 雅可比矩阵
- 高维链式法则表示
反向传播的优点
我们通过计算图结合链式法则举例说明反向传播在计算上的优势:
反向传播与梯度下降的关系
有很多人会将反向传播与梯度下降算法混为一谈,但其实两者是可以分离的,我们独立出两个概念来讨论问题会使得学习的重点更加清晰!
- 反向传播仅仅是计算梯度的算法
- 梯度下降是使用该梯度进行学习的算法
总结
反向传播与梯度下降总结图示:
参考
李宏毅机器学习课程
Deep Learning Book
Principles of training multi-layer neural network using backpropagation