標準梯度下降法:
彙總所有樣本的總誤差,然後根據總誤差更新權值
SGD隨機梯度下降:
mini batch代替全部樣本
曲面的某個方向更加陡峭的時候會被困住
Xt+1=Xt-α Δf(x1)
隨機抽取一個樣本誤差,然後更新權值 (每個樣本都更新一次權值,可能造成的誤差比較大)
批量梯度下降法:相當於前兩種的折中方案,抽取一個批次的樣本計算總誤差,比如總樣本有10000個,可以抽取1000個作爲一個批次,然後根據該批次的總誤差來更新權值。(常用)
momentum:
當前權值的改變會收到上一次權值的改變的影響,就像小球滾動時候一樣,由於慣性,當前狀態會受到上一個狀態影響,這樣可以加快速度。
SGD+momentum:
保持速度,不斷用梯度對其進行更新。利用摩擦係數使得速度慢慢減小,直到停在極小值點。相當於梯度的平滑移動。
Nesterov momantum:
包含當前速度和先前速度的誤差修正,加入權重化的速度差
NAG(Nesterov Accelerated gradient)
與momentum相比,它更爲聰明,因爲momentum是一個路癡,它不知道去哪裏,而NAG則知道我們的目標在哪裏。也就是NAG知道我們下一個位置大概在哪裏,然後提前計算下一個位置的梯度。然後應用於當前位置指導下一步行動。
AdaGrad:
核心思想是對於常見的數據給予比較小的學習率去調整參數,對於不常見的數據給予比較大的學習率調整參數。它可以自動調節學習率,但迭代次數多的時候,學習率也會下降。
累加梯度的平方和再除掉
減慢大梯度方向的改變,加大小梯度方向的進步,自動調節學習率
但是時間太長的話,會造成步長太小,困在局部極值點
RMSprob :
採用前t-1次梯度平方的平均值 加上當前梯度的平方 的和再開放作爲分母
梯度平方+衰減,不會最後步長太小 &動量法 梯度+衰減
Adadelta :
不使用學習率
Adam :
會把之前衰減的梯度和梯度平方保存起來,使用RMSprob,Adadelta相似的方法更新參數
動量法+ Bias correct(動量的基於時間的無偏估計)+ RMSprob