Review
在解決問題時一般分爲三個步驟:
步驟一:選擇一個function set
步驟二:找到loss function
步驟三:最小化loss function找到function set中最優的function。
步驟三中常用的方法就是梯度下降(Gradient Descent)。
θ∗=argminθL(θ)
L: loss function
θ: parameters
目標是最小化loss function,並找到使loss function 最小的θ,其中θ是function set的參數組成的vector。
假設θ有兩個參數{θ1,θ2},梯度下降的做法如下:
- 隨機從loss function上任意一點開始,隨機的使θ=θ0,其中θ0=[θ10θ20]
- 更新θ
- θ1=[θ11θ21]=[θ10θ20]−η[∂θ1∂L(θ10)∂θ2∂L(θ20)]
- θ2=[θ12θ22]=[θ11θ21]−η[∂θ1∂L(θ11)∂θ2∂L(θ21)]
- 將這個動作一直重複下去…
可以簡寫爲:θk+1=θk−η∇L(θk)
∇L(θ)=[∂θ1∂L(θ1)∂θ2∂L(θ2)]
直觀理解就是對每個參數在當前位置上求偏微分,這個偏微分就是當前點在這個參數方向上的梯度,向這個梯度的反方向走就可以走到一個更低的點,這個更低的點代表着loss function的值更小。如下圖,橫軸是θ1縱軸是θ2,初始點θ0是隨機選擇的。
Learning Rate:η
learning rate可以理解爲步長,就是在梯度反方向上走多長,learning rate是監督學習中重要的超參,它決定了能否走到一個足夠優的點,也決定了多久能走到一個足夠優的點,就是他決定了目標函數能否收斂到局部最小值也決定了收斂速度,所以learning rate的選擇十分重要。
藍色的線表示一個比較小的learning rate,這就導致目標函數收斂速度非常慢;綠線和黃線表示了一個比較大的learning rate,這就導致目標函數無法收斂甚至會發散。紅色的線是比較合適的learning rate。
Adaptive Learning Rates
假設在一個不規則的曲面上進行梯度下降,在每個方向上的梯度都是不斷變化的,這種情況下,使用統一的learning rate會導致在梯度較小的時候收斂太慢,在梯度較大的時候learning rate又相對過大,會出現無法收斂甚至發散的情況。
比較常用且簡單的方法:每隔幾步就將學習率降低一些。
- 一開始離目的地很遠,所以我們使用較大的學習率
- 經過幾次下降後,我們離目的地很近,所以我們降低了學習率
- 例如:t1decay:ηt=t+1η
Learning rate cannot be one-size-fits-all,所以對於不同的參數要有不同的learning rates
Adagrad
adagrad也是一種梯度下降方法,在普通的梯度下降的基礎上對於learning rates:η除以之前所有一階微分的RME。
Stochastic Gradient Descent
隨機梯度下降法不同於批量梯度下降,隨機梯度下降是每次迭代使用一個樣本來對參數進行更新。使得訓練速度加快。
Gradient Descent:對於全部的樣本進行求和
L=∑n(y^n−(b+∑wixin))
θi=θi−1−η∇L(θi−1)
Stochastic Gradient Descent:隨機選擇一個樣本xn
Ln=(y^n−(b+∑wixin))2
θi=θi−1−η∇L(θi−1)
所以SGD的速度更快。
Feature Scaling
對於不同的特徵,很可能比例不同,例如一個模型y=b+w1x1+w2x2,有兩個特徵x1和x2,x1的範圍是[-1,1],x2的範圍[-100,100],這導致x1和x2對目標函數的不同,同時可能梯度下降的速度會減慢。