1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 机器学习系列手记(七):优化算法之随机梯度下降法

机器学习系列手记(七):优化算法之随机梯度下降法

时间:2024-07-19 15:34:40

相关推荐

机器学习系列手记(七):优化算法之随机梯度下降法

优化算法

随机梯度下降法

在机器学习中,优化问题的目标函数通常可以表示成

其中 θ\thetaθ 是待优化的模型参数, xxx 是模型输入, f(x,θ)f(x,\theta)f(x,θ) 是模型的实际输出, yyy 是模型的目标输出,函数 LLL 刻画了模型在数据 (x,y)(x,y)(x,y) 上的损失, PdataP_{data}Pdata​ 表示数据的分布, EEE 表示期望。因此, L(θ)L(\theta)L(θ) 刻画了当参数为 θ\thetaθ时,模型在所有数据上的平均损失。

我们希望能够找到平均损失最小的模型参数,也就是求解优化问题

θ∗=argminL(θ)\theta^*=arg min L(\theta)θ∗=argminL(θ)

经典的梯度下降法采用所有训练数据的平均损失来近似目标函数,即

其中 MMM 为训练样本的个数。模型参数的更新公式为

θt+1=θt−α▽L(θt)\theta_{t+1}=\theta_t-\alpha ▽L(\theta_t)θt+1​=θt​−α▽L(θt​)

因此,经典的梯度下降法在每次对模型参数进行更新时,需要遍历所有的训练数据。当 MMM 很大时,这需要很大的计算量,耗费很长的计算时间,在实际应用中基本不可行。

为了解决这个问题,随机梯度下降法(Stochastic Gradient Descent,SGD)用单个训练样本的损失来近似平均损失,即

因此,随机梯度下降法用单个训练数据即可对模型参数进行一次更新,大大加快了收敛速率。该方法也非常适用于源源不断到来的在线更新场景。

为了降低随机梯度的方差,从而使得迭代算法更加稳定,也为了充分利用高度优化的矩阵运算操作,在实际应用中我们会同时处理若干训练数据,该方法被称为小批量梯度下降法(Mini-Batch Gradinet Descent)。假设需要同时处理 mmm 个训练数据{(xi1,yi1),...,(xim,yim)(x_{i_{1}},y_{i_{1}}),...,(x_{i_{m}},y_{i_{m}})(xi1​​,yi1​​),...,(xim​​,yim​​)},则目标函数及其梯度为

对于小批量梯度下降法的使用,有以下三点需要注意:

(1)如何选取参数 mmm。在不同应用中,最优的 mmm 通常会不一样,需要通过调参选取。一般 mmm 取为2的幂次时能充分利用矩阵运算操作,如选取32、64、128等。

(2)如何挑选 mmm 个训练数据。为了避免数据的特定顺序给算法收敛带来影响,一般会在每次遍历训练数据之前,先对所有的数据进行随机排序,然后在每次迭代时按顺序挑选 mmm 个训练数据直至遍历完所有的数据。

(3)如何选取学习率 α\alphaα。为了加快收敛速率,同时提高求解精度,通常会采用衰减学习率的方案:一开始算法采用较大的学习率,当误差曲线进入平台期后,减小学习速率做更精细的调整。最优的学习速率方案也通常需要调参才能得到。

综上,通常采用小批量梯度下降法解决训练数据量过大的问题。每次更新模型参数时,只需要处理 mmm 个训练数据即可,其中 mmm 是一个远小于总数据量 MMM 的常数,这样能够大大加快训练过程。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。