ADAM
ADAM和ADAMAX來自同一篇論文[1],也是目前最泛用的optimizer.
其中要手動調整的參數共有三個,分別是𝛃1,𝛃2和𝛈
g本身代表誤差對權重的篇微分
𝛃1是偏微分的調整項
𝛃2是偏微分平方的調整項
𝛈是學習速率
運算如下:
以下是一些參數的比較:
ADAM的特性是可以在很短的運算次數中到達local minimum附近,但是當到達附近的時候,就會開始產生震盪的效應,或是收斂的速度變得很慢,因此目前常用的方法是當準確率上升速度變慢或停滯時,便轉換成SGD系列來持續優化.
ADAMAX
和ADAM同一篇論文所出,是作者假設ADAM運作無限次之後的數學模型,和ADAM相比可以節省一些運算資源.
以下是一些比較:
基本上收斂的模式和ADAM相似,但在接近local minimum的震盪和收斂有所不同.
各種optimizer比較
以pytorch 預設的值來跑resnet18,dataset是CIFAR-10,跑15輪的結果如下圖,可以發現不論是Loss還是準確度,ADAdelta, ADAM, ADAMAX,RMSprop都差不多在同一個水準,如果這個連續跑100輪也許會有所不同,但因為訓練時間的問題,所以就沒有做這樣的測試.
以上就是pytorch optimizer的一些介紹.
參考資料