🐠随机梯度下降与动态学习率
2021-11-5
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property

 

随机梯度更新

在深度学习中,目标函数通常是训练数据集中每个样本的损失函数的平均值。给定 个样本的训练数据集,假设是关于索引 的训练样本的损失函数,其中 是参数向量。然后得到目标函数
的目标函数的梯度计算为
如果使用梯度下降法,则每个自变量迭代的计算代价为 ,它随线性增长。因此,当训练数据集较大时,每次迭代的梯度下降计算代价将较高。
 
随机梯度下降(SGD)可降低每次迭代时的计算代价。在随机梯度下降的每次迭代中,对数据样本随机均匀采样一个索引 ,其中 ,并计算梯度以更新
其中是学习率。可以看到,每次迭代的计算代价从梯度下降的 降至常数 。此外,随机梯度是对完整梯度的无偏估计,因为
这意味着,平均而言,随机梯度是对梯度的良好估计。
把它与梯度下降进行比较,方法是向梯度添加均值为0、方差为1的随机噪声,以模拟随机梯度下降:
notion image
随机梯度下降中变量的轨迹比梯度下降中观察到的轨迹嘈杂得多。这是由于梯度的随机性质,即使接近最小值,仍然受到通过 的瞬间梯度所注入的不确定性的影响。即使经过50次迭代,质量仍然不那么好。更糟糕的是,经过额外的步骤,它不会得到改善。这给我们留下了唯一的选择:改变学习率
但是,如果选择的学习率太小,一开始就不会取得任何有意义的进展。另一方面,如果选择的学习率太大,将无法获得一个好的解决方案,如上所示。解决这些相互冲突的目标的唯一方法是在优化过程中动态降低学习率。这也是在sgd步长函数中添加学习率函数lr的原因。
 
 

动态学习率

用与时间相关的学习率 取代 增加了控制优化算法收敛的复杂性。特别是,需要弄清的衰减速度。如果太快,将过早停止优化。如果减少的太慢,会在优化上浪费太多时间。以下是随着时间推移调整 时使用的一些基本策略:
在第一个分段常数(piecewise constant)场景中,会降低学习率,例如,每当优化进度停顿时。这是训练深度网络的常见策略。或者,可以通过指数衰减(exponential decay)来更积极地减低它。不幸的是,这往往会导致算法收敛之前过早停止。一个受欢迎的选择是多项式衰减(polynomial decay)。在凸优化的情况下,有许多证据表明这种速率表现良好。

分段衰减

 

指数衰减

notion image
正如预期的那样,参数的方差大大减少。但是,这是以未能收敛到最优解为代价的。即使经过1000个迭代步骤,仍然离最优解很远。事实上,该算法根本无法收敛。

多项式衰减

另一方面,如果使用多项式衰减,其中学习率随迭代次数的平方根倒数衰减,那么仅在50次迭代之后,收敛就会更好。
notion image
关于如何设置学习率,还有更多的选择。例如,可以从较小的学习率开始,然后使其迅速上涨,再让它降低,尽管这会更慢。甚至可以在较小和较大的学习率之间切换,这样的计划各种各样。
对于一般的非凸问题,很难获得有意义的收敛保证,因为总的来说,最大限度地减少非线性非凸问题是NP困难的。
 

凸目标的收敛性分析

以下对凸目标函数的随机梯度下降的收敛性分析是可选的,主要用于传达对问题的更多直觉。只限于最简单的证明之一 。存在着明显更先进的证明技术,例如,当目标函数表现特别好时。
假设所有的目标函数中都是凸的。更具体地说,考虑随机梯度下降更新:
其中是训练样本 的目标函数: 从第步的某个分布中提取, 是模型参数。用
表示期望风险, 表示对于的最低风险最后让 表示最小值(假设它存在于定义的域中)。在这种情况下,我们可以跟踪时间 处的当前参数 和风险最小化器 之间的距离,看看它是否随着时间的推移而改善:
假设随机梯度 范数受到某个常数 的限制,因此有
我们最感兴趣的是之间的距离如何变化的期望。事实上,对于任何具体的步骤序列,距离可能会增加,这取决于我们遇到的 。因此我们需要点积的边界。因为对于任何凸函数 ,所有 都满足,按凸性有:
将不等式代入,在时间时获得参数之间距离的边界,如下所示:
这意味着,只要当前损失和最优损失之间的差异超过 ,就会取得进展。由于这种差异必然会收敛到零,因此学习率 也需要消失。
接下取期望得到:
最后一步是对 的不等式求和。在求和过程中抵消中间项,然后舍去低阶项,可以得到
请注意,我们利用了给定的 ,因而可以去掉期望。最后定义
因为有
根据詹森不等式(令 )和 的凸性使其满足的 ,因此,
将其代入不等式得到边界
其中 是初始选择参数与最终结果之间距离的边界。简而言之,收敛速度取决于随机梯度标准的限制方式( )以及初始参数值与最优结果的距离( )。请注意,边界由 而不是 表示。因为 是优化路径的平滑版本。只要知道 ,就可以选择学习率 。这个就是上界 。也就是说,我们将按照速度 收敛到最优解。
 
对于凸问题,可以证明,对于广泛的学习率选择,随机梯度下降将收敛到最优解。
随机梯度下降的最优性保证在非凸情况下一般不可用,因为需要检查的局部最小值的数量可能是指数级的。
当训练数据集中有更多样本时,计算梯度下降的每次迭代的代价更高,因此在这些情况下,首选随机梯度下降。
 
 
  • PyTorch
  • 牛顿法小批量随机梯度下降
    目录