Neural-Networks
具有指數 衰減的 Adam 優化器
在我見過的大多數 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 報告了一些好的結果,並且找到一些好的訓練啟發式方法將非常有價值。