1. 程式人生 > >學習速率 learning rate

學習速率 learning rate

學習速率的選取策略

運用梯度下降演算法進行優化時,權重的更新規則中,在梯度項前會乘以一個係數,這個係數就叫學習速率 α α

  • 如果學習速率太小,則會使收斂過慢。

  • 如果學習速率太大,則會導致代價函式振盪,迭代過快,梯度下降法可能會越過最低點,甚至可能發散。

  • 學習速率的取值取決於資料樣本,可以多取一些值,從大到小,分別執行演算法,看看迭代效果,如果損失函式在變小,說明取值有效,否則要增大步長。

  • 例如:把學習速率設定為 0.01,然後觀察 training cost 的走向,如果cost 在減小,可以逐步地調大學習速率,試試 0.1,1.0 如果 cost 在增大,那就得減小學習速率,試試0.001,0.0001。經過一番嘗試之後,可以大概確定學習速率的合適的值。

學習速率的調節

  • 在優化的過程中,learning rate應該是逐步減小的,越接近“山谷”的時候,邁的“步伐”應該越小。

  • 人工調節

    可以先對 learning rate 設定初始值,如:0.25,迭代到一定程度時,如:第20個epoch時候,將 learning rate 除以10,設定為0.025。

  • 自動調節

    一個簡單有效的做法就是,當驗證集的準確率不再提高時,可以讓 learning rate 減半或除以10,然後繼續迭代。

參考的配置

AlexNet 以及 VGG 中的學習率設定:

  • 學習率初始設定為 0.01,然後當驗證集準確率停止改善時,減少10倍。學習率總共降低3次。

The heuristic which we followed was to divide the learning rate by 10 when the validation error rate stopped improving with the current learning rate. The learning rate was initialized at 0.01 and reduced three times prior to termination.