天天看點

機器學習關于Learning Rate自動調整學習率

Learning Rate

機器學習嘗試Train的第一個資料集Mnist,大部分都會從此入手。

機器學習關于Learning Rate自動調整學習率

當你的Loss在逐漸減小的時候,Gradient卻不一定減小

機器學習關于Learning Rate自動調整學習率

怎樣做才能将gradient descent(下面用gd代替)做的更好?需要一個更好版本的gd?

在之前做gd的時候,所有的參數都是設同樣的Lr,這肯定是不夠的。

Lr應該為每一個參數客制化

客制化的Lr(Learning Rate)

Learning Rate(以下用Lr代替)将決定Update參數時的步伐有多大。

Lr設定的太大,顯然步伐很大。

不同參數需要不同的學習率

若在某一個方向上gd的值很小很小,非常平坦(如下圖藍色箭頭),我們希望Lr調大一點。

機器學習關于Learning Rate自動調整學習率

相反,如果在某一個方向上(下圖綠色箭頭)很陡峭,那麼,我們希望将Lr調小一點。

機器學習關于Learning Rate自動調整學習率

Learning Rate如何做自動調整?

我們需要修改原來的Gradient Descent的式子。

原本的gd公式,這裡隻更改一個參數θ θθ

原式

機器學習關于Learning Rate自動調整學習率

将上式原來的η ηη修改為下面

機器學習關于Learning Rate自動調整學習率
機器學習關于Learning Rate自動調整學習率
機器學習關于Learning Rate自動調整學習率
機器學習關于Learning Rate自動調整學習率

這個方法被用到Adagrad

到此,這并不是最終的Lr版本。Lr怎麼實作動态調整呢?

再來看以下Error Surface

當在陡峭的(綠色箭頭)地方,我們需要很小的Lr。

走到中間比較平滑的(紅色箭頭),我們需要很大的Lr。

和上面的不同,這是在同一個參數同一個方向上,也能夠動态的調整Learning Rate!

機器學習關于Learning Rate自動調整學習率

就出現了以下的一個江湖失傳的算法(找不到論文出處)

RMS Prop

第一步算g i 0 g_i^0g

i

和上面Root Mean Square是一樣的,從第二步開始有所變化,其中α需要自己調。

機器學習關于Learning Rate自動調整學習率
機器學習關于Learning Rate自動調整學習率
機器學習關于Learning Rate自動調整學習率

由此就得到了一個目前比較常用的Optimization政策—Adam

Adam : RMSProp + Momentum

現在在Pytorch上有Adam的套件,直接可用,Adam的介紹在Pytorch裡面的

Doc

講的更加詳細!

機器學習關于Learning Rate自動調整學習率

學習速率排程

Learning Rate Decay

通過不斷調整η ηη的大小。訓練結束後,我們離目的地很近,是以我們降低了學習率。

機器學習關于Learning Rate自動調整學習率
機器學習關于Learning Rate自動調整學習率
機器學習關于Learning Rate自動調整學習率
機器學習關于Learning Rate自動調整學習率

Summary

  • 從最原始的Gradient Descent版本
機器學習關于Learning Rate自動調整學習率
  • 進階版Gradient Descent
機器學習關于Learning Rate自動調整學習率
機器學習關于Learning Rate自動調整學習率

繼續閱讀