新優化器SGDP+AdamP:減慢基於動量的優化器的權重增長

論文:https://arxiv.org/pdf/2006.08217.pdf
代碼:https://github.com/clovaai/AdamP

摘要

諸如batch normalization(BN)等正則化技術已導致深度神經網絡性能的顯著改善。先前的研究已經分析了梯度下降(GD)優化器所產生的權重尺度不變的好處:由於步長的自動調整,它導致了穩定的訓練。但是,我們表明,結合基於動量的算法,尺度不變性往往會導致權重規範的過度增長。這反過來又過度抑制了訓練過程中的有效步長,可能會導致深度神經網絡中的次優表現。我們在理論和經驗上都分析了這種現象。我們提出了一種簡單有效的解決方案:在對尺度不變權重(例如,BN層之前的Conv權重)應用基於動量的GD優化器(例如SGD或Adam)的每次迭代中,我們都會刪除徑向分量(即與權重平行)向量)。直觀地,該操作防止了沿徑向的不必要的更新,該更新僅增加了重量標準而無助於損失的最小化。我們驗證修改後的優化器SGDP和AdamP成功正則了norm增長並改善了廣泛模型的性能。我們的實驗涉及的任務包括圖像分類和檢索,目標檢測,魯棒性基準測試和音頻分類。

使用方法

使用方法,很簡單,源碼都已封裝好,直接調用API替代原有優化器即可。
先安裝:

pip3 install adamp

其次調包使用:

from adamp import AdamP

# define your params
optimizer = AdamP(params, lr=0.001, betas=(0.9, 0.999), weight_decay=1e-2)
from adamp import SGDP

# define your params
optimizer = SGDP(params, lr=0.1, weight_decay=1e-5, momentum=0.9, nesterov=True)

後面有時間嘗試一下效果。
好簡單複製粘貼是不是?溜了溜了。。。。。。。。

-------------------------------------更新時間2020.06.23 23:05------------------------------------------------------
嘗試了一下使用SGDP替代SGD,但是精度下降3,4個點。。。。。。。。。。。。。。。
說明還是要看數據集的。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章