首页 > 解决方案 > Adam opitmizer 中的 epsilon 参数

问题描述

使用 pyTorch 和 tensorflow (TF),我一直好奇 Adam 优化器是如何实现的。而且我不知道我是否错了,但在我看来,这两种实现方式不同,pyTorch 一种是来自https://arxiv.org/pdf/1412.6980.pdf的原始实现。

我的问题来自 eps 参数。使用 TF 实现似乎会导致此参数的时间和 b2 依赖性,即

q(t+1) = q(t) - \gamma * sqrt[(1-b2^t)]/(1-b1^t) * m(t)/[sqrt[v(t)]+eps]

在原始算法符号中可以重新表述为

 q(t+1) = q(t) - \gamma * mhat(t)/[sqrt[vhat(t)]+ eps/sqrt[(1-b2^t)]]

这指出了 eps 参数的变化,这在原始算法和 pyTorch 实现中都不是这种情况。

我错了吗?还是众所周知?谢谢你的帮助。

标签: tensorflowpytorchadam

解决方案


您可以从第二个到第一个导出公式,如下所示。所以在tensorflow实现中,epsilon其实就是这里的epsilon。此外,在 tensorflow 实现中,学习率在以下公式中调整为 alpha'。希望这可以帮助。

在此处输入图像描述


推荐阅读