梯度下降(batch gradient descent, stochastic gradientdescent, 以及 mini-batchgradient descent)現在的
sgd一般都指
mini-batch gradient descent
sgd就是每一次迭代計算
mini-batch
的梯度,然後對引數進行更新,是最常見的優化方法了。即:
其中,η
是學習率,gt
是梯度sgd
完全依賴於當前
batch
的梯度,所以可理解為允許當前
batch
的梯度多大程度影響引數更新。
1)
選擇合適的
learning rate
比較困難
,太小了收斂很慢,太大了容易在
local minimum
周圍晃動,甚至發散
- 對所有的引數更新使用同樣的
learning rate
。對於稀疏資料或者特徵,有時我們可能想更新快一些對於不經常出現的特徵,對於常出現的特徵更新慢一些,這時候
sgd就不太能滿足要求;
2)
sgd容易收斂到區域性最優 加上
nesterov
項後,梯度在大的跳躍後,對當前梯度進行校正。
上述方法均需人工調整學習率,
接下來介紹幾種自適應學習率的方法
其實是對學習率進行了乙個約束對gt
從1到t
進行乙個遞推形成乙個約束項
缺點:由公式可以看出,仍依賴於人工設定乙個全域性學習率;η
設定過大的話,會使
regularizer
過於敏感,對梯度的調節太大;中後期,分母上梯度平方的累加將會越來越大,使梯度趨於
0,使得訓練提前結束。
經驗之談: 1.
對於稀疏資料,盡量使用學習率可自適應的優化方法,不用手動調節,而且最好採用預設值 2.
sgd通常訓練時間更長,但是在好的初始化和學習率排程方案的情況下,結果更可靠 3.
如果在意更快的收斂,並且需要訓練較深較複雜的網路時,推薦使用學習率自適應的優化方法。 4.
adadelta
,rmsprop
,adam
是比較相近的演算法,在相似的情況下表現差不多。 5.
在想使用帶動量的
rmsprop
,或者adam
的地方,大多可以使用
nadam
取得更好的效果。
牛頓法:思想:在現有極小點估計值的附近對f(x)
做二階泰勒展開,進而找到極小值點的下乙個估計值;
f(x)在xk
附近的二階泰勒展開。滿足
從而
牛頓法是採用其損失函式的二階偏導數尋找更好的訓練下降方向,所以它相比梯度下降只要更少的迭代次數就能下降到損失函式的極小值,因此函式收斂速度也會大幅度地加快。
優點:對於非二次函式,若函式的二次性態較強,或迭代點已進入極小點的鄰域,則其收斂速度很快;
缺點:是乙個定步長迭代,對非二次型目標函式,函式值有時會上公升,不能保證函式值穩定下降;計算量大。
擬牛頓法(
dfp、
bfgs
、l-bfgs
):求解非線性優化問題;不用二階偏導數二構造出可近似
hessian
矩陣的正定對稱陣。
優缺點:
無需選擇學習率
α,更快,但是更複雜
深度學習 筆記之優化演算法
本篇文章根據andrew ng的深度學習課程做個筆記。1.mini batch mini batch size 1 如果size為樣本個數m,就是批量梯度下降 batch gradient descent 2 如果size為1,就是隨機梯度下降法 stochastic gradient descen...
機器學習and 深度學習 and 優化演算法
ssh keygen t rsa c 我的ssh金鑰 將 我的金鑰 替換為新的自己命名的就行,然後github建倉進行ssh繫結 git remote v 檢視遠倉庫 git remote set url origin git github.com username newrepo.git 切換到自...
快速排序 演算法 詳解 及 深度優化
基本思想 以按從小到大排序為例說明 通過多次的排序,每次的排序均將要排序的陣列分為兩部分,前一部分均比中間值小,後一部分均比中間值大,這樣重複遞迴下去將每一部分按相同的思路進行分割,最終使整個陣列達到從小到大有序排列。較氣泡排序的優點 同為通過不斷的比較和移位來得到有序陣列,但快排增大了比較和移動的...