有論文說swa能漲分,那么我來實驗一下
那么我將在cifar10資料集上進行實驗
原理
論文地址:https://arxiv.org/pdf/2012.12645.pdf

SGD傾向于收斂到loss的平穩區域 平穩區域的大部分都處于邊界,由于權重空間的維度比較高,SGD通常只會走到這些平穩區域的邊界;SWA通過平均多個SGD的權重引數,使其能夠達到平穩區域的中心.

為什么要去中心化呢?trainloss 最小的時候test error并不是最小,那么也就是泛化能力最好的地方不在train loss最小的地方,所以采用這個方法可以收斂到一個wide minima,這個wide minima有更好的泛化性;
在一個loss landscape上做visualization,優化分析,讓他收斂到一個更好的local minima(極小值)
如何能收斂到這個泛化性更好的地方呢,那么采用SWA(類似優化器)能找到更好的local minima,故而泛化能力更好
wide minima資料集擬合極小值,類似定義的函式求各個引數擬合的極小值,而這個值不一定是loss最小的地方,因為loss不一定能反應擬合的曲線最小的函式,所以有時候需要更換loss
實驗
模型采用:
shufflenet_v2_x0_5
資料集是cifar10
首先是沒有用SWA
https://github.com/carlsummer/python_developer_tools/blob/main/python_developer_tools/cv/classes/demo/train_cifar10.py
然后是用swa
https://github.com/carlsummer/python_developer_tools/blob/main/python_developer_tools/cv/train/%E4%BA%8C%E9%98%B6%E6%AE%B5%E8%AE%AD%E7%BB%83/swa_pytorch.py
實驗結果表明:
用之前41%用之后69%
推薦庫:https://github.com/carlsummer/python_developer_tools
參考
https://pytorch.org/docs/master/optim.html?highlight=swa_utils
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/293806.html
標籤:區塊鏈
