深度学习原理与应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.7 随机梯度下降法

误差反向传播算法先对损失函数计算梯度,然后计算连接权重调整值,通过反复迭代训练,最终获得符合预期要求的解。

现在可以很容易地获得大量数据用于训练,将所有数据都用于神经网络的训练当然得到的效果会更好,但付出的代价也很大,需要大量的计算力和计算时间。在工程实践中,经常需要回答的问题是,如何不失一般性地在为数众多的训练数据中选取适当的训练样本?所谓不失一般性,就是要使训练样本数据的数字特征尽可能地与总体数据的数字特征一致,从而使样本数据得到的最优解就是全体数据的最优解。随机梯度下降收敛图如图3-33所示。

图3-33 随机梯度下降收敛图示

从图3-33中可以看出,由于每次的训练数据集不相同,相应的梯度值也不同,所以向最小值收敛的路径是随机曲折向前的。

误差反向传播算法有三种样本选取方式:

(1)批量学习(batch learning)算法:在每次进行迭代计算时,需要遍历全部训练样本。假定第t次迭代时各训练样本的误差为,全部训练样本的误差Et为:

批量学习由于每次迭代都计算全部训练样本,所以能够有效抑制噪声样本所导致的输入模式剧烈变动,但训练时间较长。

(2)在线学习(sequential learning或online learning)算法:这种算法每输入一个训练样本,就进行一次迭代,然后使用调整后的连接权重测试下一个训练样本。

由于每次只计算一个训练样本,所以训练样本的差异可能导致迭代结果出现大幅变动,这样会导致训练无法收敛。

为此,可以采取逐步降低学习率η,但这不能保证彻底解决此问题。

(3)小批量(mini-batch)梯度下降学习算法:这种算法介于在线学习和批量学习之间,它将训练集分成几个子集,每次使用其中一个子集。

由于每次迭代只使用少量样本,与批量学习相比,能够缩短单次训练时间。由于每次迭代使用了多个训练样本,与在线学习相比,能够减少结果变动。

小批量和在线学习使用部分训练样本进行迭代计算,部分的选取是随机的,所以称随机梯度下降法(Stochastic Gradient Descent,SGD)。

SGD法每次抽取部分训练样本,所以减少了迭代结果陷入局部最优的情况,是目前深度学习的主流算法。当然,SGD法不可避免地会出现在搜索最优路径中的“徘徊”情况,因为不可能每次选取的样本所算出的梯度方向就是目标函数值下降最大的方向。于是有学者提出了取代SDG的AdaGrad、Momentum、Adam等方法,在3.5.6节中也提到了这些方法。