简介
相比于最新的深度学习优化算法,梯度下降算法可以说是最初的起点。要实现梯度下降法的思想是需要不停地进行迭代,当损失函数的值小于一超参数阈值后,结束算法,这个时候梯度下降达到了最优值,由以下算法给出
其中,θt+1表示第t+1时间步的参数值,θt表示第t时间步的参数值,gt表示第t时间步的梯度,η表示学习率。
框架
梯度下降法由更新训练样本数据的规模展现了三种不同的形式∶批量梯度下降法(batch gradient decent,BGD)、随机梯度下降法(Stochastic gradient descent,SGD)、小批量随机梯度下降法(Mini-batch gradient descent,MBGD)∶
针对批量梯度下降法,思想是将该整批训练数据用于迭代计算,虽然最终会缓慢训练至最小值,但是每次训练都会产生大量冗余计算。对比这个不足,随机梯度下降法通过一次执行一次更新的策略进行了改进。但是由于随机梯度下降法抽取数据中的样本的随机性,导致每次更新方向的不确定,执行频繁更新会产生振荡。但从全局来看,随着迭代次数的增加,还是会接近最小值。小批量梯度下降采取了BGD和SGD的优点,没有用整批训练数据或随机抽取的单个样本,而是通过每次小部分的随机样本来执行迭代的策略。
梯度下降法的问题
虽然随机梯度下降法是一种能力很强的算法,但面对各种应用场景,仍需要进一步地扩展和增强。主要表现在以下4个方面:
(1)选择一个合适的学习率对训练过程有非常大的影响。学习率太小训练会减慢收敛速度,增加消耗时长学习率太高在训练趋于平缓时难以收敛至最优值,会导致过大的振荡性;
(2)每次模型参数更新使用相同的学习率。若数据样本表现出不同频率的特征,不希望将所有特征更新到相同的程度;
(3)学习率调整策略受限于预先指定的调整规则;
(4)高度非凸的损失函数的优化过程,训练会陷入众多次优的局部最小值或鞍点。