epsilon超参数如何影响tf.train.AdamOptimizer?

时间:2017-04-05 03:05:22

标签: machine-learning neural-network deep-learning epsilon

当我设置epsilon=10e-8时,AdamOptimizer无法正常工作。当我将它设置为1时,它可以正常工作。

1 个答案:

答案 0 :(得分:3)

  

t< - t + 1

     

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

     

m_t< - beta1 * m_ {t-1} +(1 - beta1)* g

     

v_t< - beta2 * v_ {t-1} +(1 - beta2)* g * g

     

其中g是梯度

     

变量< - 变量 - lr_t * m_t /(sqrt(v_t)+ epsilon)

当梯度几乎为零时,epsilon应避免在上述等式中除以零误差。因此,理想情况下,epsilon应该是一个小值。但是,在分母中有一个小的epsilon将会进行更大的权重更新,并且随后的归一化,更大的权重将始终归一化为1.

所以,我想当你用小ε训练时,优化器会变得不稳定。

权衡是你制作epsilon(和分母)越大,重量更新越小,因此训练进度就越慢。大多数时候你希望分母能够变小。通常,大于10e-4的epsilon值表现更好。

  

一般来说,epsilon的默认值1e-8可能不是一个好的默认值。例如,在ImageNet上训练Inception网络时,当前的好选择是1.0或0.1。 check here