今天我們要來介紹一下,Optimizer是做甚麼用的,並簡單介紹一些常用的Optimizer。
簡單來說,Optimizer作用是用來幫助神經網路調整參數用的。
我們知道神經網路由許許多多的神經元所組成,而每一個神經元都具有屬於自己的權重,昨天我們知道了Loss function是要幫助我們判斷誤差值的,而Optimizer是要調整參數,來使Loss越小越好。
SGD就是最單純的梯度下降法,W為權重,L為loss function,η是learning rate。
Momentum的意思為動量,我們可以想像一下,動量的公式為P=MV,因此如果在同方向的速度越快,動量越高,而反方向的話,動量則會變低。
因此如果梯度為同方向時,就會慢慢加速,如果為反方向,學習速度則會下降。
可以看到球滾到最右邊時,梯度是往左的,但有一股Momentum的力量往右,因此球就可以度過這個小高峰。
公式為
公式為
可以發現和Momentum長得有點像,NAG就像是另一種的Momentum,它會在前一步累積梯度時學習的很快,接著會再做梯度的修正,這樣可以使我們不會學習得太快。
在RNN使用很好用。
這個優化器的學習速度與參數會互相對應。
因此很適合處理稀疏資料集,且減少Learning rate的手動調整。
但缺點就是學習率會不斷的縮小。
這個優化器為Adagrad的改良版,為了解決Adagrad學習率衰減的問題,且不需要設定學習率。
訓練前期加速很快,後期可能會在局部最小值徘徊。
也是一種自適應學習率的優化器,這個優化器也是為了解決Adagrad學習率衰減的問題而產生。效果介於Adadelta與
這個優化器還是依賴Global的學習率,適合處理非平穩目標,對於RNN效果很好。
圖片來源為Alec Radford大神
今天我們看了6種優化器,並了解了它們的特性。
tensorflow入门学习,优化器(optimizer)的作用是什么,tensorflow有哪些优化器(九)
Alec Radford's animations for optimization algorithms
[機器學習ML NOTE]SGD, Momentum, AdaGrad, Adam Optimizer
Hung-yi Lee-ML Lecture 9-1: Tips for Training DNN
深度學習——優化器算法Optimizer詳解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)
深度學習最全優化方法總結比較(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)