我们能用梯度下降找到全局/局部最大值吗?最大限度地发挥功能需要哪些类型的问题?我们能和GD一起做吗?有人能用一个与机器学习相关的例子来解释我的问题吗?
提前谢谢。
发布于 2019-04-25 23:58:30
从理论上讲,利用梯度下降可以求出全局最小值。
在现实中,然而,它很少发生-它也是几乎不可能证明你有全球最低!
假设我们有一个2d损失面;一个损失曲线,如下图所示。为了达到全局最小值(曲线上的最低点),您需要在实现最小值的过程中取得稳步的进展,并减少在此过程中所采取的步骤的大小,以避免超过最小值(左图)。如果你减速太快,你就永远不会达到最小值(中间位数)。如果你做得正好,你就能达到全局最小值(正确的数字)。这些跳跃的大小由学习速率控制,学习速率与每一次反向传播迭代中的损失相乘。

对于这一理论成果,理论要求损失曲线是凸的,这意味着它的形状类似于图中的形状。这是最近的一篇论文,它更详细地探讨了这一点。标题说明了一切:梯度下降法求深层神经网络的全局极小值
有一些方法可以增加你的成功机会,通常包括使用动态学习率,这个比率被调整成模型学习的速度,即在学习训练集的同时,它在验证数据集上的改进程度。如右图所示,当损失曲线变平时,需要降低学习速度。
在现实中,我们正在寻找的“损失面”并不是二维的,而是有更高的阶数,例如200。像随机初始化你的模型可能会改变你最终登陆的那一个。
这也许就是为什么使用集成方法 (模型组)通常比单个模型表现更好的原因。它更彻底地探索损失景观,并增加了找到更好的最小值的机会。
如果一个模型看起来很容易(例如,验证集上的丢失就会停止改进),但是测试集上的结果似乎远远不是最优的,或者什么应该是可能的,那么可能是这种情况下,该算法最终陷入了局部极小值,无法逃脱。
您可以想象,对参数的更新变得如此小,以至于它不再“活跃”或精力充沛,无法跳出最小值。克服这种情况(或防止这种情况)的常见方法包括:

下面是关于这些优化器和模拟退火的一流的博客文章,这是“跳出”局部极小值的另一种方法。
https://datascience.stackexchange.com/questions/50948
复制相似问题