天天看點

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

新智元報道

編輯:LRS 好困

【新智元導讀】ImageNet排行榜又雙叒叕被重新整理啦!不過這回,新霸主谷歌沒有提出新模型,隻靠微調「幾個」模型就做到了第一,論文通篇都是實驗分析,這也引起了網友的争議:全靠财大氣粗!

最近,谷歌又靠着強大的計算資源豪橫了一把,而且還順手捎上了一位Meta AI的朋友。

不得不說,這兩個「冤家」的合作可不多見。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

論文連結:https://arxiv.org/abs/2203.05482

研究團隊提出了一種稱為「模型湯」的概念,通過在大型預訓練模型下使用不同的超參數配置進行微調,然後再把權重取平均。

實驗結果證明了,這種簡單的方法通常都能夠提升模型的準确率和穩健性。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

一般來說,想獲得一個性能最佳的模型需要兩步:

1、使用不同的超參數訓練多個模型

2、選擇在驗證集上效果最好的模型

但這種方法産生的單個模型有一個緻命缺陷:運氣成分很大,非常容易陷入局部最優點,導緻性能并非全局最優。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

是以另一個常用政策是模型內建(ensemble),但內建後的模型還是本質上還是多個模型,是以同一個輸入需要推理多次,推理成本更高。

而模型湯通過對模型權重進行平均,最後得到的是一個模型,則可以在不産生任何額外推理或記憶體成本的情況下提升性能。

當然了,你可能在想,模型方法這麼簡單,怎麼Google就敢把論文發出來?

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

Method部分隻占了半頁,文章的通篇基本全是實驗,也就是說Google做了一件别人都沒做到的事:用大量的計算資源,做大量的實驗,來證明這個簡單的方法就是有效的。

并且模型還重新整理了ImageNet 1K的新紀錄:90.94%。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

是以對高校的研究人員來說,這篇文章可能沒有太大的學術價值,完全就是實驗科學。但對于有錢、有資源的大公司來說,性能強就夠了!

模型湯(Model Soup)名字的靈感來源可能來自「斐波那契例湯」,具體做法是把昨天的和前天剩下的東加熱後混合,得到就是今天新鮮的「斐波那契例湯」。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

模型湯把昨天的多個模型加熱一下,就成了今天新鮮的SOTA模型了。

新瓶裝舊酒

CV模型的常見開發模式就是:有計算資源的大公司把模型預訓練好,其他研究人員在這基礎上,針對自己特定的下遊任務進行微調。

在單個模型的情況下,性能可能并非最優,是以另一個常用的提升性能方法就是內建(ensemble):使用不同的超參數,訓練多個模型,然後将這些模型的輸出結果組合起來,比如用投票的方式,選出多個模型預測一緻的結果作為最終輸出。

內建模型雖說可以提升模型的性能,但缺點也顯而易見:同一個輸入需要預測多次,推理性能顯著下降,必須得增大顯存、增加顯示卡或者等待更長的推理時間。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

Google提出将多個微調後的模型進行權重平均化,而非選擇在驗證集上達到最高精度的單個模型,最終産生的新模型就稱為模型湯。

因為正常訓練的時候也需要訓練多個模型,是以模型湯并沒有增加訓練成本。并且模型湯也是單模型,是以也沒有增加推理成本。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

其實之前就有研究結果表明,沿着單一訓練軌迹(single training trajectory)的權重平均化能夠提高随機初始化訓練模型的性能。

模型湯則是将權重平均化的有效性擴充到了微調的背景下。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

權重平均化的政策也有很多,論文中給了3種常用的方法 :均勻湯、貪婪湯、學習湯。

均勻湯(Uniform soup)最簡單,不同模型權重直接求平均即可。

貪婪湯則是通過依次添加模型作為湯中的潛在成分(potential ingredient)來建構的,隻有當模型在預留的驗證集上的性能提高時,才将其留在模型湯中。

在運作算法之前,先按照驗證集準确性的遞減順序對模型進行排序,是以貪婪湯模型不會比驗證集上最好的單個模型差。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

學習湯則是通過将各個模型在模型湯中的權重作為可學習的參數。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

性能強就是王道

雖說模型湯的想法很簡單,但這篇論文的重點并非是方法,而是實驗。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

在實驗部分,研究人員探索了在對各種模型進行微調時對模型湯的應用。微調的主要模型是CLIP和ALIGN模型,用圖像-文本對的對比監督進行預訓練,在JFT-3B上預訓練的ViT-G/14模型,以及文本分類的Transformer模型。實驗主要使用的是CLIP ViT-B/32模型。

微調是端到端的,也就是所有的參數都可修改,這種方式往往比隻訓練最後的線性層有更高的準确性。

在微調之前,實驗采用兩種不同的方法來初始化最後的線性層。第一種方法是從線性探針(linear probe, LP)初始化模型。第二種方法使用zero-shot初始化,例如,使用CLIP或ALIGN的文本塔産生的分類器作為初始化。

微調使用的資料集為ImageNet。實驗中還對五個自然分布shift進行評估:ImageNetV2,ImageNet-R, ImageNet-Sketch, ObjectNet, 和ImageNet-A。

由于官方的ImageNet驗證集被用作測試集,是以實驗中使用大約2%的ImageNet訓練集作為建構貪婪的湯的保留驗證集。

實驗結果對比了湯的政策,可以看到貪婪湯需要更少的模型就能達到與在保留的驗證集上選擇最佳個體模型相同的精度。X軸為超參數随機搜尋中所考慮的模型數量,Y軸為各種模型選擇方法的準确率。所有的方法在推理過程中都需要相同數量的訓練和計算成本。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

對于任何數量的模型,貪婪湯在ImageNet和分布外測試集上都優于最佳單一模型;貪婪湯在ImageNet上優于均勻湯,在分布外則與之相當。Logit內建在ImageNet上比貪婪湯好,但在分布外更差。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

貪婪湯比ViT-G/14在JFT-3B上預訓練并在ImageNet上微調後得到的最好的單個模型在分布内和分布外的情況下的性能都有所提升。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

為了測試通過模型湯獲得的模型性能提升是否可以擴充到圖像分類以外的領域,研究人員還對NLP任務進行了實驗。研究人員在四個文本分類任務上對BERT和T5模型進行了微調,這些任務來自于GLUE基準:MRPC,RTE,CoLA和SST-2。實驗結果雖然改進沒有圖像分類中那麼明顯,但貪婪湯在許多情況下可以比最好的單模型性能更好。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

有意義嗎?

大部分從事AI模型的研究人員看完論文的内心應該都是:就這?

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

論文一出,在知乎上也有論文的相關讨論。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

有網友表示,這種論文沒有意義,全靠資源堆砌,驗證了一個小idea罷了。之前的模型也有相似的idea,并且論文也缺乏對神經網絡的理論分析。

不過凡事都有兩面性,網友@昭昭不糟糟 則表示,sota隻是論文的性能展現,文章大量的實驗産生的結論還是比較具有啟發性的,簡單有效即是好idea!

網友@戰鬥系牧師 稱這是個極具谷歌風格的工作,思路不難想到,但Google勝在推理速度不變、且對問題的解釋也很到位,實驗充足(對于窮研究人員來說可能沒辦法複現)。确實有很多值得學習的地方。并且模型湯也更加環保,沒有把訓練後的模型直接扔掉,而是利用起來,不至于浪費電。

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

網友@蕃茄牛腩分析稱:「現在ImageNet刷榜的模型,10億參數不嫌少,100億參數不嫌多。而且Google、Facebook這些有錢的主,動不動就是1000塊顯示卡起步,不但用Conv+Transformer,還用JFT-3B作弊。然而,要是用1000層的ResNet達到了91%的Top 1,那就是時代的進步了。」

最後還調侃說:「假如讓我刷到92% Top 1,半夜都會笑醒,一年的KPI都達到了。」

谷歌“模型湯”靠微調屠了ImageNet的榜!方法竟然隻有半頁紙

參考資料:

https://arxiv.org/abs/2203.05482

https://www.zhihu.com/question/521497951

繼續閱讀