清华提出LogME,无需微调就能衡量预训练模型的下游任务表现!
文 | 游凱超
源 | THUML
引言
在深度學(xué)習(xí)時(shí)代,神經(jīng)網(wǎng)絡(luò)的參數(shù)量越來越大,從頭開始訓(xùn)練(train from scratch)的成本也越來越大。幸運(yùn)的是,在計(jì)算機(jī)視覺、自然語言處理等人工智能應(yīng)用的主要領(lǐng)域,人們能夠采用遷移學(xué)習(xí)的預(yù)訓(xùn)練-微調(diào)范式來有效降低訓(xùn)練成本。遷移學(xué)習(xí)使得深度神經(jīng)網(wǎng)絡(luò)以預(yù)訓(xùn)練模型的形式走進(jìn)千家萬戶,不用上千塊TPU,我們也能夠使用BERT、EfficientNet等大型模型。
如今,對于深度學(xué)習(xí)框架來說,豐富的預(yù)訓(xùn)練模型庫已經(jīng)是標(biāo)配了(例如TensorFlow Hub, Torchvision Models)。在一些研究領(lǐng)域(比如2020年非常熱門的自監(jiān)督學(xué)習(xí)),研究成果最終也是以預(yù)訓(xùn)練模型的方式呈現(xiàn)給社區(qū)。在深度學(xué)習(xí)社區(qū)里,一些熱門領(lǐng)域已經(jīng)積累了成百上千個(gè)預(yù)訓(xùn)練模型。
面對眾多預(yù)訓(xùn)練模型,我們在進(jìn)行遷移時(shí),該用哪一個(gè)好呢?這個(gè)重要問題很少有人研究,因此人們目前只好使用一些簡單粗暴的辦法:
使用常見的預(yù)訓(xùn)練模型(例如ResNet50)
使用預(yù)訓(xùn)練指標(biāo)(例如ImageNet準(zhǔn)確率)高的模型
如果想要準(zhǔn)確地選擇最好的預(yù)訓(xùn)練模型,我們需要把每一個(gè)候選模型都做一遍微調(diào)。因?yàn)槲⒄{(diào)涉及到模型訓(xùn)練,時(shí)間至少幾個(gè)小時(shí)起步。有些預(yù)訓(xùn)練模型的微調(diào)還需要進(jìn)行超參數(shù)搜索,想要決定一個(gè)預(yù)訓(xùn)練模型的遷移效果就需要將近50個(gè)小時(shí)!
針對這一問題,我們進(jìn)行了深入探究,提出了一種名為LogME的方法。它能極大地加速預(yù)訓(xùn)練模型選擇的過程,將衡量單個(gè)預(yù)訓(xùn)練模型的時(shí)間從50個(gè)小時(shí)減少到一分鐘,瘋狂提速三千倍!目前該論文已被ICML2021接受。
論文標(biāo)題:
LogME: Practical Assessment of Pre-trained Models for Transfer Learning
論文鏈接:
https://arxiv.org/abs/2102.11005
GitHub鏈接:
https://github.com/thuml/LogME
問題描述
預(yù)訓(xùn)練模型選擇問題,就是針對用戶給定的數(shù)據(jù)集,從預(yù)訓(xùn)練模型庫中選擇一個(gè)最適合的預(yù)訓(xùn)練模型用于遷移學(xué)習(xí)。其流程可以簡單概括為下圖,核心就是要對每一個(gè)預(yù)訓(xùn)練模型進(jìn)行遷移性評估(Transferability Assessment),簡單來說就是為每個(gè)模型打分,然后選擇出打分最高的預(yù)訓(xùn)練模型。
▲預(yù)訓(xùn)練模型選擇問題最直接的打分方法,就是將預(yù)訓(xùn)練模型在給定數(shù)據(jù)集上進(jìn)行調(diào)參、微調(diào),將最終的準(zhǔn)確率或者其它衡量指標(biāo)作為預(yù)訓(xùn)練模型的分?jǐn)?shù)。我們將這種方法稱為ground-truth方法,它的選擇效果無疑是最好的,總是能選出最合適的預(yù)訓(xùn)練模型。然而,它的時(shí)間開銷太大(每個(gè)預(yù)訓(xùn)練模型需要50小時(shí)),因此無法實(shí)用。
一個(gè)好的打分標(biāo)準(zhǔn),需要在保持與ground-truth打分的高度相關(guān)性的同時(shí),盡可能降低時(shí)間開銷,才能滿足實(shí)際使用的要求。除了ground-truth方法之外,目前還有兩種打分方法(LEEP和NCE),但是它們的使用范圍非常有限,只能用于有監(jiān)督預(yù)訓(xùn)練模型遷移到分類任務(wù)的場景,如下表所示,而我們提出的LogME則能夠勝任幾乎所有常見的場景,覆蓋了視覺、NLP、分類、回歸、有監(jiān)督預(yù)訓(xùn)練模型、無監(jiān)督預(yù)訓(xùn)練模型等方向。
▲應(yīng)用場景比較,LogME能勝任幾乎所有常見場景LogME方法
LogME的優(yōu)越性能來自于以下三個(gè)方面:(1)無須梯度計(jì)算;(2)無須超參數(shù)調(diào)優(yōu);(3)算法實(shí)現(xiàn)優(yōu)化。下面圍繞這三個(gè)方面對LogME進(jìn)行具體介紹。
為了加速預(yù)訓(xùn)練模型選擇,我們僅將預(yù)訓(xùn)練模型視作特征提取器,避免更新預(yù)訓(xùn)練模型。這樣,只需要將預(yù)訓(xùn)練模型在給定數(shù)據(jù)集上前向傳播一遍,就可以得到特征和標(biāo)注。于是,這個(gè)問題就轉(zhuǎn)化成了如何衡量特征和標(biāo)注之間的關(guān)系,也就是說,這些特征能夠多大程度上用于預(yù)測這些標(biāo)注。
為此,我們采用一般性的統(tǒng)計(jì)方法,用概率密度來衡量特征與標(biāo)注的關(guān)系。考慮到微調(diào)一般就是在預(yù)訓(xùn)練模型的特征提取層之上再加一個(gè)線性層,所以我們用一個(gè)線性層來建模特征與標(biāo)注的關(guān)系。
說到這里,很多人會(huì)想到,一種直觀的方法是通過Logistic Regression或者Linear Regression得到最優(yōu)權(quán)重,然后使用似然函數(shù)作為打分標(biāo)準(zhǔn)。但是這樣容易導(dǎo)致過擬合問題,而且這些方法也有很多超參數(shù)需要選擇,這使得它們的時(shí)間開銷很大且效果不好。
我們選用的是統(tǒng)計(jì)學(xué)中的證據(jù)(evidence,也叫marginalized likelihood)來衡量特征與標(biāo)注的關(guān)系。它不使用某個(gè)特定的的值,而是使用的分布來得到邊緣化似然的值。它相當(dāng)于取遍了所有可能的值,能夠更加準(zhǔn)確地反映特征與標(biāo)注的關(guān)系,不會(huì)有過擬合的問題。其中,與分別由超參數(shù)和決定,但是它們不需要grid search,可以通過最大化evidence來直接求解。于是,我們就得到了對數(shù)最大證據(jù)(Log Maximum Evidence, 縮寫LogME)標(biāo)準(zhǔn)來作為預(yù)訓(xùn)練模型選擇的依據(jù)。具體數(shù)學(xué)細(xì)節(jié)不在這里贅述,感興趣的讀者可以閱讀底部的論文。算法的具體細(xì)節(jié)在下圖中給出了。注意,雖然LogME計(jì)算過程中將預(yù)訓(xùn)練模型視作特征提取器,但是LogME可以用于衡量被用于遷移學(xué)習(xí)(微調(diào))的性能。
▲LogME算法具體流程值得一提的是,LogME算法涉及到很多矩陣分解、求逆、相乘操作,因此一不小心就容易使得算法的復(fù)雜度很高(例如上圖第9行,粗糙的實(shí)現(xiàn)方式)。我們在深入研究該算法后發(fā)現(xiàn),很多矩陣運(yùn)算的開銷可以通過巧妙的計(jì)算優(yōu)化手段大大降低,因此將計(jì)算流程優(yōu)化為上圖第10行,整體的計(jì)算復(fù)雜度降低了一個(gè)階,從四次方降低為三次方(見下表),使得該算法在數(shù)秒內(nèi)就能處理常見情況。
▲優(yōu)化前后復(fù)雜度對比,n是數(shù)據(jù)量,D是特征維度,K是類別數(shù)目實(shí)驗(yàn)
在實(shí)驗(yàn)部分,我們用合成數(shù)據(jù)、真實(shí)數(shù)據(jù)等多種方式方式,測試了LogME在17個(gè)數(shù)據(jù)集、14個(gè)預(yù)訓(xùn)練模型上的效果,LogME在這么多數(shù)據(jù)集、預(yù)訓(xùn)練模型上都表現(xiàn)得很好,展現(xiàn)了它優(yōu)異的性能。
合成數(shù)據(jù)
首先讓我們看看,LogME給出的打分標(biāo)準(zhǔn)與人的主觀感覺是否一致。我們?yōu)榉诸悊栴}和回歸問題分別設(shè)計(jì)了一個(gè)toy實(shí)驗(yàn),使用生成數(shù)據(jù)來測量LogME的值。從下圖中可以看出,不管是分類任務(wù)還是回歸任務(wù),當(dāng)特征質(zhì)量越來越差時(shí),LogME的值也越來越低,說明LogME可以很好地衡量特征與標(biāo)注的關(guān)系,從而作為預(yù)訓(xùn)練模型選擇的標(biāo)準(zhǔn)。
▲特征質(zhì)量越來越差時(shí),LogME也越來越低。接下來,我們用LogME來進(jìn)行預(yù)訓(xùn)練模型選擇。我們使用若干個(gè)常用預(yù)訓(xùn)練模型,通過耗時(shí)的微調(diào)過程得到它們的遷移性指標(biāo),然后衡量LogME與遷移性指標(biāo)的相關(guān)性。相關(guān)性指標(biāo)為加權(quán)肯達(dá)爾系數(shù),它的取值范圍是。相關(guān)系數(shù)為意味著如果LogME認(rèn)為預(yù)訓(xùn)練模型比好,那么確實(shí)比好的概率是。也就是說,越大越好。
有監(jiān)督預(yù)訓(xùn)練模型遷移到分類數(shù)據(jù)集
我們將10個(gè)常用預(yù)訓(xùn)練模型遷移到9個(gè)常見分類數(shù)據(jù)集中,發(fā)現(xiàn)LogME與微調(diào)準(zhǔn)確率有很高的相關(guān)性(見下圖),顯著優(yōu)于之前的LEEP和NCE方法。在這幾個(gè)數(shù)據(jù)集中,LogME的相關(guān)系數(shù)至少有0.5,大部分情況下有0.7或者0.8,也就意味著使用LogME進(jìn)行預(yù)訓(xùn)練模型選擇的準(zhǔn)確率高達(dá)85%或者90%。
▲有監(jiān)督預(yù)訓(xùn)練模型遷移到分類數(shù)據(jù)集值得注意的是,之前的LEEP和NCE方法只能用于這一種場景。接下來的實(shí)驗(yàn)(回歸任務(wù)、無監(jiān)督預(yù)訓(xùn)練模型、NLP模型及任務(wù)),只有LogME能處理。
有監(jiān)督預(yù)訓(xùn)練模型遷移到回歸數(shù)據(jù)集
我們也做了回歸任務(wù)相關(guān)的實(shí)驗(yàn),可以看到LogME與MSE有明顯的負(fù)相關(guān)性,而MSE是越低越好,LogME是越大越好,結(jié)果符合預(yù)期。
▲有監(jiān)督預(yù)訓(xùn)練模型遷移到回歸數(shù)據(jù)集無監(jiān)督預(yù)訓(xùn)練模型
在2020年,視覺領(lǐng)域的重要進(jìn)展之一就是無監(jiān)督預(yù)訓(xùn)練模型。因此我們也嘗試了使用LogME來判斷無監(jiān)督預(yù)訓(xùn)練模型的質(zhì)量。從下圖的結(jié)果來看,不論是分類任務(wù)(Aircraft)還是回歸任務(wù)(dSprites),LogME都能準(zhǔn)確衡量無監(jiān)督預(yù)訓(xùn)練模型的質(zhì)量。
▲使用LogME來衡量無監(jiān)督預(yù)訓(xùn)練模型自然語言處理任務(wù)
LogME并不局限于視覺模型與任務(wù),我們還測試了它對NLP預(yù)訓(xùn)練模型的評價(jià)能力。可以看到,在五個(gè)任務(wù)上,LogME完美地預(yù)測了四個(gè)預(yù)訓(xùn)練模型的表現(xiàn)的相對大小,在另外兩個(gè)任務(wù)上的表現(xiàn)也不錯(cuò)。
![LogME衡量NLP預(yù)訓(xùn)練模型]
時(shí)間加速
LogME方法不僅效果好,更難得的是它所需要的時(shí)間非常短,可以快速評價(jià)預(yù)訓(xùn)練模型。如果將直接微調(diào)的時(shí)間作為基準(zhǔn),LogME只需要0.31‰的時(shí)間(注意不是百分號(hào),是千分號(hào)),也就是說加速了3000倍!而之前的方法如LEEP和NCE,雖然耗時(shí)更少,但是效果很差,適用范圍也很有限,完全不如我們的LogME方法。
▲各種方法耗時(shí)比較,LogME加速3000倍值得注意的是,像LogME這種根據(jù)概率公式計(jì)算的方法,一般效果更好,但是耗時(shí)也更高。事實(shí)上,如果我們采用簡單粗暴的實(shí)現(xiàn),評估一個(gè)模型就需要八百多秒。正是有了精心優(yōu)化的版本,我們才能夠既有概率方法的優(yōu)越效果,又有簡單高效的實(shí)現(xiàn)。
展望
因?yàn)樗臏?zhǔn)確、快速、實(shí)用性,我們相信LogME除了能夠用作預(yù)訓(xùn)練模型選擇之外,還能夠在其它領(lǐng)域有所作為。例如,在無監(jiān)督預(yù)訓(xùn)練中,評估一次預(yù)訓(xùn)練模型就需要在整個(gè)ImageNet數(shù)據(jù)集上進(jìn)行l(wèi)inear protocol evaluation,整個(gè)過程需要幾個(gè)小時(shí)。若采用LogME,則只需要一分鐘不到,因此可以在訓(xùn)練過程中將LogME作為early stopping的準(zhǔn)則。
后臺(tái)回復(fù)關(guān)鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺(tái)回復(fù)關(guān)鍵詞【頂會(huì)】
獲取ACL、CIKM等各大頂會(huì)論文集!
總結(jié)
以上是生活随笔為你收集整理的清华提出LogME,无需微调就能衡量预训练模型的下游任务表现!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 训练神经网络时如何确定batch的大小?
- 下一篇: Allen AI提出MERLOT,视频理