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