首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >梯度下降

梯度下降
EN

Data Science用户
提问于 2019-04-25 22:56:00
回答 1查看 672关注 0票数 2

我们能用梯度下降找到全局/局部最大值吗?最大限度地发挥功能需要哪些类型的问题?我们能和GD一起做吗?有人能用一个与机器学习相关的例子来解释我的问题吗?

提前谢谢。

EN

回答 1

Data Science用户

回答已采纳

发布于 2019-04-25 23:58:30

从理论上讲,利用梯度下降可以求出全局最小值。

在现实中,然而,它很少发生-它也是几乎不可能证明你有全球最低!

假设我们有一个2d损失面;一个损失曲线,如下图所示。为了达到全局最小值(曲线上的最低点),您需要在实现最小值的过程中取得稳步的进展,并减少在此过程中所采取的步骤的大小,以避免超过最小值(左图)。如果你减速太快,你就永远不会达到最小值(中间位数)。如果你做得正好,你就能达到全局最小值(正确的数字)。这些跳跃的大小由学习速率控制,学习速率与每一次反向传播迭代中的损失相乘。

对于这一理论成果,理论要求损失曲线是凸的,这意味着它的形状类似于图中的形状。这是最近的一篇论文,它更详细地探讨了这一点。标题说明了一切:梯度下降法求深层神经网络的全局极小值

有一些方法可以增加你的成功机会,通常包括使用动态学习率,这个比率被调整成模型学习的速度,即在学习训练集的同时,它在验证数据集上的改进程度。如右图所示,当损失曲线变平时,需要降低学习速度。

在现实中,我们正在寻找的“损失面”并不是二维的,而是有更高的阶数,例如200。像随机初始化你的模型可能会改变你最终登陆的那一个。

这也许就是为什么使用集成方法 (模型组)通常比单个模型表现更好的原因。它更彻底地探索损失景观,并增加了找到更好的最小值的机会。

本地Minima

如果一个模型看起来很容易(例如,验证集上的丢失就会停止改进),但是测试集上的结果似乎远远不是最优的,或者什么应该是可能的,那么可能是这种情况下,该算法最终陷入了局部极小值,无法逃脱。

您可以想象,对参数的更新变得如此小,以至于它不再“活跃”或精力充沛,无法跳出最小值。克服这种情况(或防止这种情况)的常见方法包括:

  • 对权重使用更新规则,该规则具有一定的动量(例如亚当优化器)
  • 使用模拟退火,这是一个奇特的方式,我们执行更大的跳跃到不同的区域在损失曲线上,探索更多,而不是局限于局部极小。这里有一张(维基百科的)小图片,显示了它的作用:

下面是关于这些优化器和模拟退火的一流的博客文章,这是“跳出”局部极小值的另一种方法。

票数 5
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/50948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档