您當前的位置:首頁 > 書法

Ranking and Tuning: 解鎖預訓練模型庫的新正規化

作者:由 遊凱超 發表于 書法時間:2021-10-29

這裡是清華大學軟體學院機器學習組官方公眾號(THUML-LAB),歡迎關注我們,獲取最新資訊!

本文介紹我組新鮮出爐的論文《Ranking and Tuning Pre-trained Models: A New Paradigm of Exploiting Model Hubs》,作者為

遊凱超

劉雍

王建民

Michael I. Jordan

龍明盛

,詳情可參看連結

arxiv.org/abs/2110.10545

Ranking and Tuning: 解鎖預訓練模型庫的新正規化

預訓練模型庫現狀:下載量超高,利用率超低

預訓練模型(pre-trained model,簡稱PTM)在深度學習中的地位非常重要。使用深度學習技術來解決問題的第一步,往往就是從預訓練模型庫(pre-trained model hub, 簡稱PTM hub)中下載一個預訓練模型,再根據具體任務需求來改進該模型。

預訓練模型庫是深度學習的基礎設施之一

,其構建過程需要海量資源投入。例如,HuggingFace Transformer模型庫包含超過6000個預訓練模型,其中每個預訓練模型都需要上百塊GPU訓練數天。因此,預訓練模型庫背後離不開巨型科技公司(如Google、Facebook)的大力支援。

雖然預訓練模型庫的構建成本很高,但是它的使用率卻不高

。還是以HuggingFace Transformer模型庫為例,下圖展示了其中最受歡迎的模型的月度下載量(單位:百萬次每月)。整個預訓練模型庫每月提供了超過1。5億次(151 Million)服務,下載量可謂非常高。然而具體分析表明:

一半以上的下載量來自於BERT模型(每個月被下載了超過八千萬次);

除去BERT,前九個模型的下載總量還不足BERT下載量的一半,具體來說只有三千萬次(118 Million - 83 Million = 35 Million);

剩下的模型下載量就更難看了,近千個模型的下載總量不及BERT一個模型下載量的一半。

Ranking and Tuning: 解鎖預訓練模型庫的新正規化

上述資料說明,整個模型庫裡的六千多個模型,只有少數幾個模型被廣泛使用,剩下的大部分模型都無人問津,利用率可謂是非常低。

超高的下載量,超低的利用率

,這兩個看起來矛盾的現象,恰如其分地刻畫了現有預訓練模型庫的現狀。無論是TensorFlow Hub、PyTorch Hub,還是Huggingface Models,都難以避免。

預訓練模型庫利用率低的原因

為什麼預訓練模型庫的利用率很低、人們都傾向於使用最流行的少數幾個模型呢?我們發現,學術界和工業界各有原因。

對於學術界的朋友們來說,學術論文需要與過去的論文效果(baseline)進行對比。為了對比公平,

學術界的朋友們使用的預訓練模型有很大的慣性

,即去年發表的論文用了什麼預訓練模型,今年的論文也就用什麼預訓練模型。學術界這種現象無可厚非,畢竟換用一個新的預訓練模型可能會引發審稿人質疑對比公平性,從而導致論文被拒。

小插曲

:去年我們曾經以為預訓練模型庫利用率低的原因可能是學術界還沒有好的挑選預訓練模型的方法,因此在ICML 2021會議上提出了LogME方法用來作為pre-train model selection的準則。但因為上述原因,學術界對於預訓練模型選擇的需求並不高。後來,我們意外發現,LogME被學術界的朋友們挖掘出了新的用法:加州大學伯克利分校、浙江大學等高校的學者將LogME作為資料集feature和label之間相容性/遷移性的一般性指標,用於證明他們的方法在訓練後遷移性得到了提高。關於這部分內容,詳見

arxiv.org/abs/2109.01087

arxiv.org/abs/2110.04065

兩篇論文。

工業界的朋友們則沒有學術界的公平對比的煩惱。對於具體業務應用來說,滿足算力要求的前提下,自然是效果越高越好。那為什麼工業界的朋友們實際上也是隨大流,使用下載量最多的模型呢?

理想情況下,如果模型庫裡有

M

個預訓練模型,為了最大限度地利用整個模型庫,我們應該嘗試

M

個預訓練模型的

2^M

種組合,從而得出全域性最優的模型庫使用方案。顯而易見,這種理想方案存在兩個致命的缺點:

需要嘗試的方案數是指數量級的

,無法擴充套件到稍具規模的預訓練模型庫。

即使有人願意付出指數量級的計算量,目前

還沒有方法能解決一般條件下的多個預訓練模型的遷移學習問題

受上述問題限制,雖然工業界的朋友們有大量計算資源且不受學術論文慣性的限制,但他們仍然只使用最流行的少數幾個模型。

解鎖預訓練模型庫的新正規化

為了解決預訓練模型庫利用率低的問題,我們進行了長達一年的探索。為了突破理想方案存在的兩大缺陷,我們在論文中提出瞭解鎖預訓練模型庫的新正規化(A New Paradigm)。這一新正規化包括兩部分內容:

設計一種方法快速評估預訓練模型在當前任務上的效果

。將該方法應用於所有的預訓練模型,就可以將所有的預訓練模型按照在當前任務上的遷移性進行排序(Ranking)。有了排序之後,原本指數量級的選擇就變成了線性的貪心搜尋,即只需要考慮在排序中的top-K模型的遷移效果。

設計一種能用於異構多模型遷移的方法

。傳統遷移學習基於fine-tuning,雖然簡單易用,但是隻能利用一個模型;為了充分利用預訓練模型庫,我們可以將top-K的模型全部用起來。由於top-K模型之間很可能是異構的,我們需要設計能同時遷移多個異構模型的tuning方法。

這種新正規化我們稱之為

Ranking and Tuning

,它從兩個方面雙管齊下,提高預訓練模型庫利用率:

Ranking部分對全部預訓練模型進行排序,能夠篩選出可能適合當前任務、但是名氣不大的模型,從而使得

下載量低的模型也能有被利用的機會

Tuning部分進一步突破了fine-tuning只能利用單個預訓練模型的限制,使得

一次性利用多個預訓練模型

成為可能。

需要指出的是,Ranking and Tuning 是一種正規化,在這個正規化的框架下,可以有若干種不同的方法。下面我們給出一套具體可行的方法,我們相信隨著越來越多人研究這個正規化,還會湧現出更好的方法。

Ranking and Tuning 正規化的一種具體實現

Ranking and Tuning 正規化分為兩部分,即Ranking(排序)和Tuning(調優)。

在排序部分,我們可以使用本組今年發表於ICML 2021的

LogME方法

,它透過計算最優貝葉斯線性迴歸器的證據(即統計學裡的evidence),從而不需要微調就能預判模型在下游任務的表現。年初我們曾推出一篇

解讀文章

,感興趣的讀者可以前往檢視,這裡不再贅述細節。在這篇論文中,我們進一步證明了LogME演算法的理論性質,包括收斂性、對特徵複製補零等變換的不變性等,進一步夯實了LogME的理論基礎。

當排序部分給出了全部預訓練模型在當前任務上的排序之後,針對不同的應用場景,可以有兩種調優策略:(1)對於追求準確率等指標的學術界使用者來說,可以直接選擇排序最高(即對當前任務遷移性最好)的模型進行fine-tune;(2)工業界使用者對模型的引數量、計算量等有要求,滿足這些要求的模型裡排序最高的

\phi_t

可以作為調優的基礎,引數量計算量超過了限制、但是效果很好的排序中的前K個預訓練模型

\{\phi_{k}\}_{k=1}^K

,也可以拿過來利用,提高

\phi_t

的效果。

Ranking and Tuning 正規化的流程示意圖如下,下面我們重點介紹調優部分的多模型調優方法,這是本文相比於會議版論文的重要創新。

Ranking and Tuning: 解鎖預訓練模型庫的新正規化

B-Tuning: 一種通用的多預訓練模型調優方法

現在我們具體介紹本文提出的為多個預訓練模型調優場景設計的貝葉斯調優(Bayesian Tuning,簡稱B-Tuning)方法。

在調優部分,我們面對的問題是如何利用排序靠前的

K

個預訓練模型

\{\phi_{k}\}_{k=1}^K

,完成對目標模型

\phi_t

的fine-tuning。形象地說,就是

將#FormatImgID_16#個預訓練模型#FormatImgID_17#中的知識融入到#FormatImgID_18#

中。說到這裡,一種常見的想法是進行知識蒸餾,但知識蒸餾的難點在於

\{\phi_{k}\}_{k=1}^K

\phi_t

的結構存在差異,而且它們輸出的特徵維度

\{D_{k}\}_{k=1}^K

D_t

也可能不同。為了進行知識蒸餾,需要為每一個

\phi_{k}

引入變換矩陣

W_k

進行特徵維度的變換,然後最小化知識蒸餾的損失函式

\frac{1}{K} \sum_{k=1}^K \vert \vert \phi_k (x_i) - W_k \phi_t(x_i) \vert \vert_2^2

W_k

的引入,增加了知識蒸餾需要學習的引數量,加大了學習的難度,因此知識蒸餾的效果不盡人意。

從LogME的推導過程中,我們發現,它順帶計算了貝葉斯學習中的後驗預測分佈(posterior predictive distribution)

p(y

,其中

F/y

是整個資料集的特徵/標註,

f

是要預測的當前資料的特徵,

m, A, \beta^*

都是在LogME計算過程中能夠獲得的量(詳見論文)。每個預訓練模型都可以透過這種方式得到後驗預測分佈

p(y_{k}

,目標模型也有後驗預測分佈

p(y_{t}

。為了讓目標模型學習其他預訓練模型

\{\phi_{k}\}_{k=1}^K

中的知識,可以要求

y

的分佈向其他預訓練模型的平均分佈

\bar{y}

靠攏,於是就可以得到一項新的知識蒸餾損失函式(見下圖)。這樣,我們用貝葉斯學習中的後驗預測分佈,避免了知識蒸餾在異構多模型情況下的特徵變換

W_k

難以學習的問題。

Ranking and Tuning: 解鎖預訓練模型庫的新正規化

因為整個方法與貝葉斯學習中的後驗預測分佈有密切聯絡,因此我們把它叫做Bayesian Tuning,簡稱B-Tuning。雖然這部分方法敘述起來較為複雜,但是程式碼實現是很簡潔的。下圖給出了B-Tuning的流程圖,我們也會放出

示例程式碼

供大家參考。

Ranking and Tuning: 解鎖預訓練模型庫的新正規化

實驗結果

實驗結果分為兩部分,一部分是LogME演算法作為一種遷移性衡量指標的有效性,另一部分是Ranking and Tuning這一新的正規化的有效性。

關於LogME演算法作為一種遷移性衡量指標的有效性,下面兩張圖只列出一些簡單的結果,更詳細的內容請參考論文或者

往期推送

Ranking and Tuning: 解鎖預訓練模型庫的新正規化

Ranking and Tuning: 解鎖預訓練模型庫的新正規化

接下來我們重點關注Ranking and Tuning這一新的正規化的有效性。論文實驗在Aircraft資料集上進行,比較的基線是用最流行的ImageNet預訓練的ResNet-50進行單模型微調(fine-tuning),準確率為

82.99\%

同構模型庫

首先考慮一種簡單的情況,即模型庫中的模型都是同構的,具體來說,我們使用了ImageNet預訓練的ResNet-50、MoCo無監督預訓練的ResNet-50、MaskRCNN預訓練的ResNet-50、DeepLab V3預訓練的ResNet-50、COCO關鍵點檢測預訓練的ResNet-50。對於5個模型來說,遍歷所有的組合數目太多,所以我們只測試了從5個模型中選3個的十種可能性,用簡單的知識蒸餾方法進行訓練,考察fine-tune的次數以及準確率,結果如下表。

Ranking and Tuning: 解鎖預訓練模型庫的新正規化

結果表明,如果我們使用最常用的ImageNet預訓練的ResNet-50進行單模型微調,準確率是82。99。如果我們願意付出足夠的算力,把所有的可能組合都嘗試一遍,再取最優的結果,那麼可以得到84。64的準確率,但是需要付出10倍的代價。如果我們花少量時間對5個預訓練模型按照LogME值進行排序,直接選擇前三個模型,

只需要微調一次,準確率與最優結果相差無幾

!由此可見,ranking為後續的tuning提供了很好的參考依據。

選出了最優的三個預訓練模型後,我們也可以用上B-Tuning方法,準確率還可以進一步提高到84。70(即上表的最後一行)。

異構模型庫

在同構模型庫上驗證了ranking and tuning的有效性之後,我們在更貼近實際使用場景的異構模型庫中進行了實驗。具體來說,我們使用了Torchvision提供的12個預訓練模型作為模型庫,用它們的LogME值進行排序,並探究選擇top-K模型使用B-Tuning的效果,結果如下圖。

Ranking and Tuning: 解鎖預訓練模型庫的新正規化

在K較小時,B-Tuning的準確率隨著K變大而變大。K進一步變大時,變化規律稍顯複雜,但我們可以看到以下幾點結論:

最優準確率在

K=10

時得到,但是其準確率與

K=3

時的準確率相差無幾。

K=12

(即把所有預訓練模型都用上)的準確率反而不如

K=3

時的準確率,因為整個模型庫中有一些模型對當前任務的遷移性不高,需要將它們過濾掉才能得到更好的效果。

同時,需要注意的是

K

也會影響B-Tuning的計算複雜度,

K

越大需要的計算量越大。因此,我們推薦實際中使用

K=3

就可以了,效果夠好,計算開銷也不大。

總結

預訓練模型庫的構建開銷很大,然而我們發現它們的利用率卻很低。為了提高預訓練模型庫的利用率,我們提出了Ranking and Tuning的新正規化,用LogME指標對預訓練模型進行排序,並取top-K模型對目標模型進行B-Tuning。實驗結果表明,

Ranking and Tuning正規化可以充分利用整個預訓練模型庫,且在不增加推理開銷的情況下顯著提升效果

Ranking and Tuning正規化提供了一套框架,本文只是基於LogME方法的一種具體實現。未來,我們相信在Ranking和Tuning兩部分都會湧現更多的方法。

歡迎感興趣的朋友閱讀我們的論文(

arxiv.org/abs/2110.10545

)或者訪問GitHub專案頁面(

github.com/thuml/LogME

)檢視更多細節內容。

標簽: 模型  模型庫  訓練  tuning  ranking