首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow Adam优化器

Tensorflow Adam优化器
EN

Stack Overflow用户
提问于 2018-04-22 19:35:02
回答 1查看 583关注 0票数 2

好的,我一直在读一些关于AdamOptimizer在tensorflow的文章。我觉得有些混乱,至少在像我这样的NNs初学者中是这样的。

如果我的理解正确的话,tf.train.AdamOptimizer会保持一个所谓的“适应性学习率”.我认为随着时间的推移,这一学习速度会越来越小。

然而,当我从文档中绘制出学习速率缩放函数时,

代码语言:javascript
复制
t <- t + 1
lr_t <- learning_rate * sqrt(1 - beta2^t) / (1 - beta1^t)

我得到的是:

代码语言:javascript
复制
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,然后随着时间的推移而增加,慢慢接近极限=用户选择的学习速率。

是不是有点奇怪?我想我错了,但我希望学习率从一个更高的值开始,然后逐渐减少到更小的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-23 09:15:13

你不能像这样画出亚当的学习速度,因为亚当是一个动量优化器。每个步骤的应用梯度取决于前几步梯度的均值和标准差的移动平均值。

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

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

如果你真的想了解这到底是如何工作的,你可能想读亚当,这比乍一看要简单得多。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49969957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档