反向传播 Backpropagation/BP
反向传播的定义
反向传播是「误差反向传播」的简称,是一种与最优化方法结合使用的,用来训练人工神经网络的常见方法,该方法对网络中所有权重计算损失函数的梯度。
这个梯度会反馈给最优化方法,用来更新权值,从而最小化损失函数。
反向传播要求有对每个输入值想得到的已知输出,来计算损失函数梯度。它是多层前馈网络的 Delta 规则的推广,可以用链式法则对每层迭代计算梯度,反向传播要求人工神经元(或「节点」)的激励函数可微。
反向传播的阶段
反向传播算法主要由两个阶段组成:激励传播与权重更新。
第 1 阶段:激励传播
每次迭代中的传播环节包含两步:
(前向传播阶段)将训练输入送入网络以获得激励响应;
(反向传播阶段)将激励响应同训练输入对应的目标输出求差,从而获得输出层和隐藏层的响应误差。
第 2 阶段:权重更新
对于每个突触上的权重,按照以下步骤进行更新:
将输入激励和响应误差相乘,从而获得权重的梯度;
将这个梯度乘上一个比例并取反后加到权重上。
这个比例将会影响到训练过程的速度和效果,梯度的方向指明了误差扩大的方向,因此在更新权重的时候需要对其取反,从而减小因权重引起的误差。
第 1 和第 2 阶段可以反复循环迭代,直到网络对输入的响应达到满意的预定的目标范围为止。
反向传播的限制
结果可能会收敛到极值。如果只有一个极小值,梯度下降的「爬山」策略一定可以起作用;
梯度下降法可以找到局部最小值,而不是全局最小值;
从反向传播学习获得的收敛很慢;
反向传播学习的收敛性不能保证;
反向传播学习不需要输入向量的标准化;然而,标准化可提高性能。