【问题标题】:Tensorflow Adam OptimizerTensorFlow Adam 优化器
【发布时间】:2018-10-02 20:13:09
【问题描述】:

好吧,我一直在阅读一些关于 TensorFlow 中的 AdamOptimizer 的帖子。我认为周围存在一些混淆,至少在像我这样的神经网络初学者中是这样。

如果我理解正确的话,tf.train.AdamOptimizer 会保持所谓的“自适应学习率”。我认为这个学习率会随着时间的增加而变小。

但是,当我绘制学习率缩放的函数时,取自docs,

t <- t + 1
lr_t <- learning_rate * sqrt(1 - beta2^t) / (1 - beta1^t)

这是我得到的:

t = np.arange(200)
result = np.sqrt(1-0.999**t)/(1-0.9**t)
plt.plot(result)
plt.show

所以,对于 t = 1,用户选择的学习率的值乘以 0.3 然后它会快速下降,直到其值的 0.15,然后随着时间的推移逐渐增加,慢慢接近极限 = 用户选择的学习率.

是不是有点奇怪?我想在某个地方我错了,但我希望学习率从较高的值开始,然后逐渐降低到较小的值。

【问题讨论】:

    标签: python tensorflow optimization neural-network


    【解决方案1】:

    你不能像这样绘制 Adam 的学习率,因为 Adam 是一个动量优化器。每一步应用的梯度取决于前一步梯度的均值和标准差的移动平均值。

    通常不能保证学习收敛,原始学习率alpha 本身并不会被 Adams 直接改变。它仅使用梯度的动量重新缩放。只有当梯度的均值和标准差在达到全局最小值时随时间减小时,学习才能很好地收敛,这通常是简单神经网络的情况。

    然而,对于高度随机的问题,可能仍需要实施某种形式的学习率衰减来抑制围绕最佳参数的“振荡”,或者至少使它们更小以确保真正收敛。

    如果您真的想了解它的工作原理,您可能需要阅读 Adam paper,它比第一眼看上去要简单得多。

    【讨论】:

    • 进展如何?
    • 对不起,我忘了回来。实际上并不难读你是对的。现在我明白了你所说的动量优化器
    • 太好了,很高兴能帮到你。
    猜你喜欢
    • 1970-01-01
    • 2016-02-20
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2018-06-04
    相关资源
    最近更新 更多