Python Tensorflow Adam优化器

Python Tensorflow Adam优化器,python,tensorflow,optimization,neural-network,Python,Tensorflow,Optimization,Neural Network,好的,我一直在读一些关于tensorflow中AdamOptimizer的帖子。我认为,至少在像我这样的NNs初学者中,存在一些困惑 如果我理解正确,tf.train.AdamOptimizer会保持所谓的“适应性学习率”。我认为随着时间的增加,这种学习速度会变小 然而,当我绘制学习率缩放的函数时,从 因此,对于t=1,用户选择的学习率的值乘以0.3,然后迅速减小到其值的0.15,然后随着时间增加,慢慢接近极限=用户选择的学习率 这不是有点奇怪吗?我猜我错了,但我希望学习率从一个较高的值开始,

好的,我一直在读一些关于tensorflow中AdamOptimizer的帖子。我认为,至少在像我这样的NNs初学者中,存在一些困惑

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

然而,当我绘制学习率缩放的函数时,从

因此,对于t=1,用户选择的学习率的值乘以0.3,然后迅速减小到其值的0.15,然后随着时间增加,慢慢接近极限=用户选择的学习率


这不是有点奇怪吗?我猜我错了,但我希望学习率从一个较高的值开始,然后逐渐降低到较小的值

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

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

然而,对于高度随机的问题,可能仍然需要实现某种形式的学习速率衰减,以抑制最优参数周围的“振荡”,或者至少使它们变小,以确保确实存在收敛性


如果你真的想知道这到底是怎么回事,你可能想读《亚当》,它比乍一看要简单得多。

进展如何?对不起,我忘了回来。其实读起来并不难,你是对的。现在我明白你所说的动量优化了,我很高兴能帮助你。
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