在深度學習中,我們有許多優化器可以選擇,但是只有清楚了它們的原理才能更好地選擇。
1、sgd
隨機梯度下降是最經典的方法,其思想如下圖所示:
相信大家都很容易理解。
首先求出m個樣本的loss的和,求這個和對於神經網路引數theta的梯度,並將該梯度除以樣本數m,得到平均梯度。然後,利用反向梯度來更新引數theta。
η_k是學習率,k表示第k次迭代更新。通常,學習率會隨著k的增大逐漸減小。
其他的優化器,都是在這個基礎上修改完善得來的。
2、momentum
動量優化器如下圖所示:
與sgd相比,在更新引數theta時,除了像sgd一樣按照本次的反向梯度更新外,還會:
將上次更新的反向梯度乘以係數alpha後也更新到引數theta中。
這相當於:
上次更新時是往前走的,這次更新的梯度算出來是往左走,這變化太劇烈了,所以我們來做個折中,往左前方走。感覺上像是上次更新還帶有一定的慣性。
3、nesterov momentum
nesterov momentum如下圖所示:
該優化器相對於momentum,唯一不同的是計算反向梯度的時機。momentum計算的是當前位置的反向梯度,nesterov momentum 計算的是按照上次更新方向走一小步後的反向梯度。
4、adagrad
adagrad相當於增加了乙個學習率遞減係數:
特殊之處在於這個遞減係數由之前所有更新的反向梯度的平方的和來決定。可見,adagrad的學習率始終是在減小。
它的優點在於:上圖中的theta可以某乙個具體的引數,而不是所有引數組成的向量。當theta是某個具體引數時,可以發現,這樣計算學習率遞減係數相當於:
如果某個引數在這一步中梯度非常大,那麼這一步中學習率衰減就要大一些,好比坡太陡,往下走時必須小步走,步子一大就滾下去了。如果某個引數在這一步中梯度非常小,那麼,這一步中學習率衰減就小一些。
但它的問題在於,衰減係數累積了所有更新步驟中的梯度,我們可能更希望考察最近幾步中的梯度來決定衰減係數。這就是rmsprop。
5、rmsprop
如下圖所示:
隨著更新進行,越早時候計算的梯度對計算衰減係數的影響越小,這種影響的減小速度就是decay_rate的指數衰減速度。
6、adam
adam綜合了momentum的更新方向策略和rmprop的計算衰減係數策略,如下圖所示:
7、總結
可見,雖然優化器比較多,但是它們之間是有著內在關聯的,存在互相借鑑和改進的關係。最後,用圖來表示不同的優化器的效果:
機器學習面試之邏輯回歸
1.簡單介紹一下邏輯回歸 邏輯回歸解決分類問題而不是回歸問題 回歸問題用於 之所以名字中帶乙個回歸是因為決策邊界那個假定的是乙個滿足線性回歸的方程,所以取名為邏輯回歸。再說回邏輯回歸,通過引入乙個滿足線性回歸的決策邊界,將其代入非線性變換的sigmoid函式中,將結果對映到 0,1 之間,通過設定閾...
機器學習面試準備之二 優化方法
梯度下降法是一種最優化方法,用來優化cost function。梯度下降法的最大問題就是會陷入區域性最優,並且每次在對當前樣本計算cost的時候都需要去遍歷全部樣本才能得到cost值,這樣計算速度就會慢很多。現在好多框架中一般使用隨機梯度下降法,它在計算cost的時候只計算當前的代價,最終cost是...
機器學習之凸優化基礎二
20.共軛函式 21.凸優化 優化問題的基本形式 告訴幾個等式約束求最值 區域性最優問題 22.非凸優化問題的變形 23.對偶問題 24.lagrange對偶函式 dual function lagrange 對偶函式 若沒有下確界,定義 根據定義,顯然有 對 0,v,若原優化問題有最優值p 則 進...