网上很多教程都讲梯度下降,而且几乎都使用固定步长(学习率)。为什么没有使用线搜索(例如回溯线搜索或精确线搜索)?
深度学习中是否使用线搜索方法?为什么不?
使用线搜索可以使普通梯度下降更加可靠;我已经编写了执行此操作的算法,它使算法非常稳定(尽管不一定很快)。
然而,对随机梯度方法进行线搜索几乎没有意义。我这么说的原因是,如果我们基于最小化完整损失函数进行线搜索,我们会立即失去使用随机方法的主要动机之一;我们现在需要计算每次更新的完整损失函数,其计算成本通常与计算完整的一阶导数相当。考虑到由于计算成本我们想避免计算完整的梯度,我们似乎不太可能想要计算完整的损失函数。
或者,您可能会考虑根据随机采样的数据点进行线搜索之类的操作。但是,这也不是一个好主意。这不会告诉您您是否走得太远(这是行搜索的主要好处)。例如,假设您正在执行逻辑回归。然后每个结果只是一个 0 或 1,对于任何单个样本,我们很容易得到完美的分离,因此基于 1 的样本的回归参数的最佳解决方案很简单或者由豪克唐纳效应。这不好。
编辑
@DeltaIV 指出这也适用于小批量,而不仅仅是单个样本。
教程讲梯度下降大概是因为它是用于优化的最简单的算法之一,所以很容易解释。由于大多数此类教程都相当简短,因此它们专注于简单的东西。除了简单的梯度下降之外,至少还有几种流行的优化算法可用于深度学习。实际上人们经常使用与梯度下降不同的算法,因为它们通常收敛得更快。其中一些具有非恒定的学习率(例如随着时间的推移而减少)。要查看此类算法,您可以查看Sebastian Ruder 发表的梯度下降优化算法概述(或arXived 论文)。
这个问题是在 2018 年初提出的,但如果你还在等待答案:是的,现在在 DNN 中有一些线搜索的实现,性能很好。看:
https://arxiv.org/abs/1808.05160(发表在2种期刊上)
最近,由不同的组:
https://arxiv.org/abs/1905.09997(发表于 ICML)。
重要的是要注意,而不是许多声明:1st,随机设置中的理论结果不够强大(仅对于凸函数,大多数 DNN 是高度非凸的),2nd,DNN 中的实现需要一些修改以适应 mini-批量练习(随机优化虽然很接近,但与小批量练习不同)。
PS 表演是在 CIFAR10 和 CIFAR100 上完成的。现在需要更多的资源和人员来检查更大范围的数据集/DNN。
您还可以查看维基百科页面: