是否研究了微积分或机器学习方法来改变学习率作为损失和时期的函数?

人工智能 深度学习 优化 拓扑 收敛 超参数
2021-11-15 05:22:36

许多人已经研究了在使用传统反向传播训练人工网络期间在离散时间修改学习率的想法。这些工作的目标是总体上人工网络训练目标的平衡。

  • 给定一组特定计算资源的最小收敛时间
  • 关于训练接受标准的最大收敛精度
  • 训练完成后获得可接受的测试结果的最大可靠性

涉及这三个测量的表面的开发将需要多次训练实验,但可能会提供一种关系,该关系本身可以通过曲线拟合或使用实验结果作为示例的不同深度人工网络来近似。

  • 时代指数
  • 学习率超参数值
  • 观察到的收敛速度

此类工作的目标是通过手动应用解析几何经验或通过深度网络训练来开发以下功能,其中

  • α是任何给定时期的理想学习率i,
  • ϵ是损失函数结果,并且
  • Ψ是一个函数,其结果近似于在明确定义的域内尽可能多的学习场景的理想学习率。

αi=Ψ(ϵ,i)

到达的发展Ψ作为一个封闭的形式(公式)将具有一般的学术和工业价值。

这已经完成了吗?

1个回答

这已经完成了吗?

很难证明是否定的,但我怀疑尽管已经进行了大量研究来寻找理想的学习率值(对学习率的需求根本令人烦恼),但它还没有达到建议一个值得近似的全局函数的水平.

问题是学习率调整,和其他超参数调整一样,高度依赖于手头的问题,加上当前使用的其他超参数值,例如层的大小,正在使用哪个优化器,正在使用什么正则化,激活职能。

虽然你可能希望Ψ(ϵ,i|P)存在于 P 是问题域的情况下,它很可能不存在,除了作为所有的平均值Ψ(ϵ,i|D,H)对于问题域,其中 D 是数据集,H 是所有其他超参数。

很可能存在这样一个函数,它具有理想的学习率,可实现每个时期的最佳预期收敛。然而,用足够的细节对其进行采样以使其近似有用会非常昂贵。再加上有限的适用性(不是特定领域的,但与数据和其他超参数相关联),搜索所有可能的学习率轨迹看起来会产生很差的投资回报。

相反,通常的务实方法是:

  • 在超参数搜索中包含学习率,例如网格搜索、随机搜索、遗传算法和其他全局优化器。

  • 使用已成功猜测且实验表明有效的几种方法之一来衰减学习率。这些通常通过绘制损失函数或其他指标的学习曲线来验证,并且在新实验中通常需要相同的跟踪来检查该方法是否仍然有益。

  • 一些优化器使用动态学习率参数,这与您的想法相似,但基于学习期间对测量的反应,而不是基于理想函数的变化。他们有一个起始学习率,然后根据从测量学习进度得出的启发式方法对其进行调整。这些启发式方法可以基于每个时期的测量,例如验证集结果是否在改进。一种这样的方法是在每个 epoch 的结果改善的同时提高学习率,如果结果没有改善或变得更糟,则降低学习率。

我在 Kaggle 比赛中尝试了最后一个选项,它在一定程度上对我有用,但并没有真正改善整体结果——我认为这是 ML 中许多有希望的想法之一,可以让它发挥作用,但这已经不像说 dropout 或使用 CNN 处理图像,不是作为“必须拥有”的。

一些优化器存储每层甚至每个权重的乘数 - RMSProp 和 Adam 例如跟踪每个参数的变化率,并在更新期间调整每个权重的比率。这些在大型网络中可以很好地工作,问题不是在任何时候都需要特定的学习率,而是单个学习率太粗糙,无法覆盖整个索引空间的大范围梯度和梯度差异所有的连接。使用 RMSProp 和 Adam,选择特定学习率或探索它们的需要大大减少,而且库的默认设置通常很好。