Answers:
学习率是否与误差梯度的形状有关,因为它决定了下降率?
如果是这样,您如何使用此信息来告知您有关价值的决定?
Adagrad是其中最广为人知的工具,它根据每个维度上的误差梯度gt的历史记录的l2范数来缩放每个维度上的全局学习率η:
Adadelta是另一种这样的训练算法,它既使用了像adagrad这样的误差梯度历史,又使用了权重更新历史,并且具有根本不必设置学习率的优势。
如果不是那样,我应该选择哪种值,以及如何选择它们?
似乎您希望使用较小的值来避免过冲,但是如何选择一个值以免陷入局部最小值或花太长时间下降呢?保持恒定的学习速度有意义吗?还是应该在接近梯度最小值时使用一些指标来更改其值?
以下是Andrew Ng在神经网络(反向传播)中关于学习率的一个很好的注释(第12页)。您将找到有关学习率的详细信息。
http://web.stanford.edu/class/cs294a/sparseAutoencoder_2011new.pdf
对于您的第4点,您说对了,通常必须选择一种“平衡的”学习速率,该速率既不应过高,也不能收敛得太慢。可以绘制成本函数下降的学习率以进行诊断/微调。实际上,安德鲁通常使用L-BFGS算法(在第12页中提到)来获得“足够好”的学习率。
选择学习速率是被称为超参数优化的“元问题”的示例。最佳学习率取决于手头的问题,要优化的模型的体系结构,甚至取决于当前优化过程中模型的状态!甚至有专门超参数优化软件包,如留兰香和hyperopt(只是一对夫妇的例子,还有很多其他的!)。
除了全面的超参数优化外,我想提到一种到目前为止尚未提到的选择学习速率的非常普遍的技术。模拟退火是一种用于优化模型的技术,其中模型的学习速率较高,随着优化的进行逐渐降低学习速率。通常,您可以使用较高的学习率(0.1左右)来优化模型,然后逐渐降低该速度(通常降低一个数量级(依次降低到0.01、0.001、0.0001等))。
只要取得进展,就可以将其与早期停止相结合,以一种学习率优化模型,然后在进度似乎变慢时切换到较小的学习率。较高的学习率似乎可以帮助模型确定一般的大规模最优区域,而较低的学习率可以帮助模型将注意力集中在一个特定的局部最优值上。
除了在David的答案之外,在fastai中,我找到了使用特定架构为该数据找到最佳学习率的概念。
但是那件事只在fastai / pytorch上存在。最近有人实施了keras 。
而这些又是基于这些论文:
希望这可以帮助。