Neural-Networks

具有指數 衰減的 Adam 優化器

  • March 5, 2016

在我見過的大多數 Tensorflow 代碼中,Adam Optimizer 以恆定的學習率1e-4(即 0.0001)使用。代碼通常如下所示:

...build the model...
# Add the optimizer
train_op = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
# Add the ops to initialize variables. These will include 
# the optimizer slots added by AdamOptimizer().
init_op = tf.initialize_all_variables()

# launch the graph in a session
sess = tf.Session()
# Actually intialize the variables
sess.run(init_op)
# now train your model
for ...:
 sess.run(train_op)

我想知道,在使用亞當優化器時使用指數衰減是否有用,即使用以下代碼:

...build the model...
# Add the optimizer
step = tf.Variable(0, trainable=False)
rate = tf.train.exponential_decay(0.15, step, 1, 0.9999)
optimizer = tf.train.AdamOptimizer(rate).minimize(cross_entropy, global_step=step)
# Add the ops to initialize variables. These will include 
# the optimizer slots added by AdamOptimizer().
init_op = tf.initialize_all_variables()

# launch the graph in a session
sess = tf.Session()
# Actually intialize the variables
sess.run(init_op)
# now train your model
for ...:
 sess.run(train_op)

通常,人們使用某種學習率衰減,對於亞當來說這似乎並不常見。這有什麼理論上的原因嗎?將 Adam 優化器與衰減結合起來有用嗎?

從經驗上講:一定要試試,你可能會發現一些非常有用的訓練啟發式,在這種情況下,請分享!

通常人們使用某種衰變,對於亞當來說這似乎並不常見。這有什麼理論上的原因嗎?將 Adam 優化器與衰減結合起來有用嗎?

我還沒有看到足夠多的人使用 ADAM 優化器來說明這是否正確。如果這是真的,也許是因為 ADAM 相對較新,學習率衰減“最佳實踐”尚未建立。

但是我確實想指出,學習率衰減實際上是 ADAM 理論保證的一部分。具體在他們ICLR 文章的 Theorem 4.1 中,他們的假設之一是學習率具有平方根衰減,. 此外,對於他們的邏輯回歸實驗,他們也使用平方根衰減。

簡單地說:我認為理論上沒有任何東西不鼓勵在 ADAM 中使用學習率衰減規則。我看到人們使用 ADAM 報告了一些好的結果,並且找到一些好的訓練啟發式方法將非常有價值。

引用自:https://stats.stackexchange.com/questions/200063

comments powered by Disqus