新智元報道
編輯:LRS 好困
【新智元導(dǎo)讀】ImageNet排行榜又雙叒叕被刷新啦!不過這回,新霸主谷歌沒有提出新模型,只靠微調(diào)「幾個」模型就做到了第一,論文通篇都是實驗分析,這也引起了網(wǎng)友的爭議:全靠財大氣粗!
最近,谷歌又靠著強大的計算資源豪橫了一把,而且還順手捎上了一位Meta AI的朋友。
不得不說,這兩個「冤家」的合作可不多見。
論文鏈接:https://arxiv.org/abs/2203.05482
研究團隊提出了一種稱為「模型湯」的概念,通過在大型預(yù)訓(xùn)練模型下使用不同的超參數(shù)配置進行微調(diào),然后再把權(quán)重取平均。
實驗結(jié)果證明了,這種簡單的方法通常都能夠提升模型的準(zhǔn)確率和穩(wěn)健性。
一般來說,想獲得一個性能最佳的模型需要兩步:
1、使用不同的超參數(shù)訓(xùn)練多個模型
2、選擇在驗證集上效果最好的模型
但這種方法產(chǎn)生的單個模型有一個致命缺陷:運氣成分很大,非常容易陷入局部最優(yōu)點,導(dǎo)致性能并非全局最優(yōu)。
所以另一個常用策略是模型集成(ensemble),但集成后的模型還是本質(zhì)上還是多個模型,所以同一個輸入需要推理多次,推理成本更高。
而模型湯通過對模型權(quán)重進行平均,最后得到的是一個模型,則可以在不產(chǎn)生任何額外推理或內(nèi)存成本的情況下提升性能。
當(dāng)然了,你可能在想,模型方法這么簡單,怎么Google就敢把論文發(fā)出來?
Method部分只占了半頁,文章的通篇基本全是實驗,也就是說Google做了一件別人都沒做到的事:用大量的計算資源,做大量的實驗,來證明這個簡單的方法就是有效的。
并且模型還刷新了ImageNet 1K的新紀(jì)錄:90.94%。
所以對高校的研究人員來說,這篇文章可能沒有太大的學(xué)術(shù)價值,完全就是實驗科學(xué)。但對于有錢、有資源的大公司來說,性能強就夠了!
模型湯(Model Soup)名字的靈感來源可能來自「斐波那契例湯」,具體做法是把昨天的和前天剩下的湯加熱后混合,得到就是今天新鮮的「斐波那契例湯」。
模型湯把昨天的多個模型加熱一下,就成了今天新鮮的SOTA模型了。
新瓶裝舊酒
CV模型的常見開發(fā)模式就是:有計算資源的大公司把模型預(yù)訓(xùn)練好,其他研究人員在這基礎(chǔ)上,針對自己特定的下游任務(wù)進行微調(diào)。
在單個模型的情況下,性能可能并非最優(yōu),所以另一個常用的提升性能方法就是集成(ensemble):使用不同的超參數(shù),訓(xùn)練多個模型,然后將這些模型的輸出結(jié)果組合起來,比如用投票的方式,選出多個模型預(yù)測一致的結(jié)果作為最終輸出。
集成模型雖說可以提升模型的性能,但缺點也顯而易見:同一個輸入需要預(yù)測多次,推理性能顯著下降,必須得增大顯存、增加顯卡或者等待更長的推理時間。
Google提出將多個微調(diào)后的模型進行權(quán)重平均化,而非選擇在驗證集上達到最高精度的單個模型,最終產(chǎn)生的新模型就稱為模型湯。
因為正常訓(xùn)練的時候也需要訓(xùn)練多個模型,所以模型湯并沒有增加訓(xùn)練成本。并且模型湯也是單模型,所以也沒有增加推理成本。
其實之前就有研究結(jié)果表明,沿著單一訓(xùn)練軌跡(single training trajectory)的權(quán)重平均化能夠提高隨機初始化訓(xùn)練模型的性能。
模型湯則是將權(quán)重平均化的有效性擴展到了微調(diào)的背景下。
權(quán)重平均化的策略也有很多,論文中給了3種常用的方法 :均勻湯、貪婪湯、學(xué)習(xí)湯。
均勻湯(Uniform soup)最簡單,不同模型權(quán)重直接求平均即可。
貪婪湯則是通過依次添加模型作為湯中的潛在成分(potential ingredient)來構(gòu)建的,只有當(dāng)模型在預(yù)留的驗證集上的性能提高時,才將其留在模型湯中。
在運行算法之前,先按照驗證集準(zhǔn)確性的遞減順序?qū)δP瓦M行排序,所以貪婪湯模型不會比驗證集上最好的單個模型差。
學(xué)習(xí)湯則是通過將各個模型在模型湯中的權(quán)重作為可學(xué)習(xí)的參數(shù)。
性能強就是王道
雖說模型湯的想法很簡單,但這篇論文的重點并非是方法,而是實驗。
在實驗部分,研究人員探索了在對各種模型進行微調(diào)時對模型湯的應(yīng)用。微調(diào)的主要模型是CLIP和ALIGN模型,用圖像-文本對的對比監(jiān)督進行預(yù)訓(xùn)練,在JFT-3B上預(yù)訓(xùn)練的ViT-G/14模型,以及文本分類的Transformer模型。實驗主要使用的是CLIP ViT-B/32模型。
微調(diào)是端到端的,也就是所有的參數(shù)都可修改,這種方式往往比只訓(xùn)練最后的線性層有更高的準(zhǔn)確性。
在微調(diào)之前,實驗采用兩種不同的方法來初始化最后的線性層。第一種方法是從線性探針(linear probe, LP)初始化模型。第二種方法使用zero-shot初始化,例如,使用CLIP或ALIGN的文本塔產(chǎn)生的分類器作為初始化。
微調(diào)使用的數(shù)據(jù)集為ImageNet。實驗中還對五個自然分布shift進行評估:ImageNetV2,ImageNet-R, ImageNet-Sketch, ObjectNet, 和ImageNet-A。
由于官方的ImageNet驗證集被用作測試集,因此實驗中使用大約2%的ImageNet訓(xùn)練集作為構(gòu)建貪婪的湯的保留驗證集。
實驗結(jié)果對比了湯的策略,可以看到貪婪湯需要更少的模型就能達到與在保留的驗證集上選擇最佳個體模型相同的精度。X軸為超參數(shù)隨機搜索中所考慮的模型數(shù)量,Y軸為各種模型選擇方法的準(zhǔn)確率。所有的方法在推理過程中都需要相同數(shù)量的訓(xùn)練和計算成本。
對于任何數(shù)量的模型,貪婪湯在ImageNet和分布外測試集上都優(yōu)于最佳單一模型;貪婪湯在ImageNet上優(yōu)于均勻湯,在分布外則與之相當(dāng)。Logit集成在ImageNet上比貪婪湯好,但在分布外更差。
貪婪湯比ViT-G/14在JFT-3B上預(yù)訓(xùn)練并在ImageNet上微調(diào)后得到的最好的單個模型在分布內(nèi)和分布外的情況下的性能都有所提升。
為了測試通過模型湯獲得的模型性能提升是否可以擴展到圖像分類以外的領(lǐng)域,研究人員還對NLP任務(wù)進行了實驗。研究人員在四個文本分類任務(wù)上對BERT和T5模型進行了微調(diào),這些任務(wù)來自于GLUE基準(zhǔn):MRPC,RTE,CoLA和SST-2。實驗結(jié)果雖然改進沒有圖像分類中那么明顯,但貪婪湯在許多情況下可以比最好的單模型性能更好。
有意義嗎?
大部分從事AI模型的研究人員看完論文的內(nèi)心應(yīng)該都是:就這?
論文一出,在知乎上也有論文的相關(guān)討論。
有網(wǎng)友表示,這種論文沒有意義,全靠資源堆砌,驗證了一個小idea罷了。之前的模型也有相似的idea,并且論文也缺乏對神經(jīng)網(wǎng)絡(luò)的理論分析。
不過凡事都有兩面性,網(wǎng)友@昭昭不糟糟 則表示,sota只是論文的性能體現(xiàn),文章大量的實驗產(chǎn)生的結(jié)論還是比較具有啟發(fā)性的,簡單有效即是好idea!
網(wǎng)友@戰(zhàn)斗系牧師 稱這是個極具谷歌風(fēng)格的工作,思路不難想到,但Google勝在推理速度不變、且對問題的解釋也很到位,實驗充足(對于窮研究人員來說可能沒辦法復(fù)現(xiàn))。確實有很多值得學(xué)習(xí)的地方。并且模型湯也更加環(huán)保,沒有把訓(xùn)練后的模型直接扔掉,而是利用起來,不至于浪費電。
網(wǎng)友@西紅柿牛腩分析稱:「現(xiàn)在ImageNet刷榜的模型,10億參數(shù)不嫌少,100億參數(shù)不嫌多。而且Google、Facebook這些有錢的主,動不動就是1000塊顯卡起步,不但用Conv+Transformer,還用JFT-3B作弊。然而,要是用1000層的ResNet達到了91%的Top 1,那就是時代的進步了。」
最后還調(diào)侃說:「假如讓我刷到92% Top 1,半夜都會笑醒,一年的KPI都達到了?!?/p>
參考資料:
https://arxiv.org/abs/2203.05482
https://www.zhihu.com/question/521497951
關(guān)鍵詞: 谷歌模型湯靠微調(diào)屠了ImageNet的榜方法竟然只有半