Knowledge distillation: A good teacher is patient and consistent
9 Jun 2021
CVPR2022 Oral
作者:Lucas Beyer, Xiaohua Zhai, Amélie Royer, Larisa Markeeva, Rohan Anil, Alexander Kolesnikov
單位:Google Research, Brain Team
原文:https://arxiv.org/abs/2106.05237
開源:https://github.com/google-research/big_vision
摘要:在實現最先進性能的大型模型和實際應用中代價合理的模型之間,計算機視覺的差異越來越大。在本文中,我們解決了這個問題,并顯著地彌合了這兩種模型之間的差距。在我們的實證研究中,我們的目標不一定是提出一種新的方法,而是努力確定一種穩健有效的方法,使最先進的大型模型在實踐中代價合理。我們證明,如果執行正確,知識蒸餾可以成為一種強大的工具,在不影響性能的情況下減少大型模型的大小。特別是,我們發現存在某些隱含的設計選擇,這可能會極大地影響蒸餾的有效性。我們的主要貢獻是明確確定了這些設計選擇,而這些選擇之前在文獻中沒有明確闡述。我們通過一項全面的實證研究來支持我們的發現,在廣泛的視覺數據集上展示了令人信服的結果,特別是,我們為ImageNet獲得了最先進的ResNet-50模型,該模型達到了82.8%的top-1準確度。我們將代碼和模型發布在:https://github.com/google-research/big_vision
1.????引言
大規模視覺模型目前在計算機視覺的許多領域占據主導地位。用于圖像分類[7,23,40,42,49]、對象檢測[8,27]或語義分割[53]的最新模型將模型大小推到了現代硬件允許的極限。盡管這些模型的性能令人印象深刻,但由于計算成本高,在實踐中很少使用。相反,實踐者通常使用更小的模型,如ResNet-50[23]或MobileNet[15],這些模型的運行成本要低幾個數量級。根據Tensorflow Hub五位模型的下載數量,最小的ResNet-50[12]模型的下載次數明顯多于較大的模型。因此,視覺方面的許多最新改進并沒有轉化為實際應用。
為了解決這個問題,我們將重點放在以下任務上:給定一個特定的應用程序和一個性能非常好的大型模型,我們的目標是在不影響性能的情況下將模型壓縮為一個更小、更高效的體系結構。針對這項任務,有兩種廣泛使用的范例:模型修剪[19]和知識蒸餾[13]。模型修剪通過剝離大模型的各個部分來減小其大小。該過程在實踐中可能具有限制性:首先,它不允許更改模型族,例如從ResNet更改為MobileNet。其次,可能存在與體系結構相關的挑戰,例如,如果模型使用組歸一化[47],修剪通道可能導致需要動態重新平衡通道組。
相反,我們專注于知識蒸餾方法,該方法沒有這些缺點。知識蒸餾背后的理念是將教師模型(在我們的例子中是一個龐大而繁瑣的模型或模型集合)“蒸餾”為一個小型而高效的學生模型。這是通過強制學生的預測(或內部激活)與教師的預測相匹配來實現的,因此自然允許作為壓縮的一部分更改模型族。我們密切遵循[13]中的原始蒸餾設置,發現如果操作得當,效果驚人:我們將蒸餾解釋為匹配教師和學生實現的函數的任務,如圖2所示。通過這種解釋,我們發現了用于模型壓縮的知識蒸餾的兩個原則。首先,教師和學生應該處理完全相同的輸入圖像視圖,或者更具體地說,相同的裁剪和增強。其次,我們希望在大量支持點(support points)上匹配的函數能夠很好地推廣。使用混合[52]的一種激進變體,我們可以在原始圖像流形之外生成支持點。考慮到這一點,我們通過實驗證明,一致的圖像視圖、積極的增強和非常長的訓練計劃是通過知識蒸餾實現模型壓縮的關鍵。
Second, we want the functions to match on a large number of support points to generalize well. Using an aggressive variant of mixup [52], we can generate support points outside the original image manifold.
盡管我們的發現很簡單,但有多個原因可能會妨礙研究人員(和從業者)做出我們建議的設計選擇。首先,為了節省計算量,特別是對于非常大的教師來說,很容易將教師對圖像的激活預計算一次。正如我們將要展示的,這種固定的教師方法并不奏效。第二,知識蒸餾也常用于不同的環境(模型壓縮除外),作者推薦不同甚至相反的設計選擇[41,49,51],見圖2。第三,知識蒸餾需要大量的epochs才能達到最佳性能,遠遠超過監督訓練的常用時間。最后,在常規長度的訓練中看起來不太理想的選擇,在長期訓練中反而表現最好,反之亦然。
在我們的實證研究中,我們主要集中于壓縮[23]中的BiT-ResNet-152x2,其在ImageNet-21k數據集[37]上進行了預訓練,并對相關數據集進行了微調。我們在一系列中小型數據集上將其蒸餾為標準的ResNet-50體系結構[12](但用組標準化代替批量標準化),而不影響準確性。我們在ImageNet[36]數據集上也取得了非常出色的結果:在總共9600個蒸餾epoch的情況下,我們將ImageNet上的新ResNet-50 SOTA設置為82.8%。這比[23]中的ResNet-50模型好4.4%,比文獻中使用更復雜設置的最佳ResNet-50模型好2.2%[38]。最后,我們證明了當同時壓縮和更改模型族時,我們的蒸餾配方也有效,例如,BiT ResNet體系結構到MobileNet體系結構。
2????實驗裝置
在本節中,我們將介紹本文中使用的實驗設置和基準測試。給定一個在特定任務上具有高精度的大規模視覺模型(teacher,或T),我們的目標是在不影響其性能的情況下將該模型壓縮為更小的模型(student,或S)。我們的壓縮配方依賴于[13]中介紹的知識蒸餾,以及對訓練設置中幾個關鍵成分的仔細調查。
數據集、指標和評估協議。
我們在五個流行的圖像分類數據集上進行了實驗:Flower102[31]、pets[33]、food101[21]、sun397[48]和ILSVRC-2012(“ImageNet”)[36]。這些數據集跨越不同的圖像分類場景;特別是,它們在類別數量上有所不同,從37到1000個類別,訓練圖像的總數從1020到1281167個訓練圖像。這使我們能夠在廣泛的實際設置中驗證我們的蒸餾配方,并確保其魯棒性。
作為衡量標準,我們始終報告分類精度。對于所有數據集,我們使用驗證集來執行設計選擇和超參數選擇,并在測試集上報告最終結果。驗證集和測試集的劃分的定義在附錄E中。
教師和學生模型。
在整篇論文中,我們選擇使用BiT[23]中預訓練的教師模型,該模型提供了大量在ILSVRC-2012和ImageNet-21k數據集上預訓練的ResNet模型,具有最先進的精度。BiT-ResNets和標準ResNets之間唯一的顯著差異是它們使用了組歸一化層[47]和權重標準化[34],而不是使用批量歸一化[17]。
我們特別關注BiT-M-R152x2架構:在ImageNet-21k上預訓練的BiT-ResNet-152x2(152層,'x2'表示寬度倍增器)。該模型在各種視覺基準上表現出優異的性能,并且仍然可以使用它進行廣泛的消融研究。部署成本很高(需要的計算量大約是標準ResNet-50的10倍),因此有效壓縮該模型具有實際意義。對于學生的架構,我們使用了BiT-ResNet-50變體,為簡潔起見,稱為ResNet-50。
蒸餾損失。
我們使用教師預測的類別概率向量和學生的
之間的KL散度作為蒸餾損失,正如最初在[13]中介紹的那樣。對于原始數據集的硬標簽,我們不使用任何額外的損失項:
? ? (1)
其中是一組類別。此外,如[13]中所述,我們引入了一個溫度參數
,用于在計算損失之前調整預測的softmax概率分布的熵:
和
。
訓練設置。
為了優化,我們使用Adam優化器[22]對模型進行訓練,并使用默認參數,除了初始學習率會作為要搜索的超參數。
我們使用了無熱重啟的余弦學習速率調度[28]。我們還掃描了我們所有實驗的權重衰減損失系數(為此,我們使用了“解耦”權重衰減慣例[29])。為了穩定訓練,我們在梯度的全局L2范數上啟用閾值為1.0的梯度剪裁。最后,我們在所有實驗中使用批次大小512,除了在ImageNet上訓練的模型,在那里我們使用批次大小4096進行訓練。對于剩余的超參數,我們將在下一節討論它們的掃描范圍以及相應的實驗。
我們配方的另一個重要組成部分是mixup數據增強策略[52]。特別是,我們在“函數匹配”策略中引入了一種mixup變量(見第3.1.1節),其中我們使用了從[0,1]均勻采樣的“漸近”混合系數,這可以被視為最初提出的β分布采樣的極端情況。
除非另有明確規定,否則我們使用“inception-style”裁剪[39],然后將圖像調整為固定的正方形大小。此外,為了使我們的廣泛分析在計算上可行(總的來說,我們訓練了數萬個模型),我們使用相對較低的輸入分辨率,并將輸入圖像調整為128×128大小,但我們的ImageNet實驗使用標準輸入224×224分辨率。
在我們的所有實驗中,我們使用谷歌云TPU加速器[20]。我們還報告了批量大小、epochs或更新步驟總數,從而可以估計任何特定感興趣實驗的資源需求。代碼和檢查點是公開的https://github.com/google-research/big_vision
3????用于模型壓縮的蒸餾
3.1????調查“一致且耐心的教師”假設
在本節中,我們對導言中提出的假設進行了實驗驗證,如圖2所示,當蒸餾被視為函數匹配時,即當學生和教師看到輸入圖像的一致視圖,通過mixup“填充”,學生使用長時間的訓練計劃進行訓練時(即“老師”是耐心的)時,蒸餾效果最佳。
為了確保我們的發現是可靠的,我們對四個中小型數據集進行了非常徹底的分析,即Flower102[31](1020個訓練圖像)、Pets[33](3312個訓練圖像),Food101[21](約68k個訓練圖像)和SUN397[48](76k個訓練圖)。
為了消除任何混雜因素(confounding factors),對于每個單獨的蒸餾設置,我們掃描學習率{0.0003、0.001、0.003、0.01}、權重衰減{1·10^-5、3·10^-5、1·10^-4、3·10^-4、1·10^-3}、蒸餾溫度{1,2,5,10}的所有組合。在所有報告的圖中,我們將每次運行顯示為低不透明度曲線,并突出顯示具有最佳最終驗證精度的運行。我們在附錄A中提供了相應的測試精度。
3.1.1????“一致”教學的重要性
首先,我們證明了一致性標準,即學生和教師看到相同的視圖,是執行蒸餾的唯一方法,在所有數據集中,學生的表現都會一致達到峰值。在本研究中,我們定義了多個蒸餾配置,這些配置對應于圖2中繪制的所有四個選項的實例,具有相同的顏色字體:
?????固定教師。我們探索了幾個選項,其中教師對給定圖像(預計算目標)的預測是恒定的。最簡單(也是最差)的方法是fix/rs,在這種方法中,學生和教師都只需將圖像大小調整為224^2px。fix/cc遵循一種更常見的方法,即為教師使用固定中心裁剪,為學生使用溫和的隨機裁剪。fix/ic_ens是一種大量數據擴充方法,其中教師的預測是1k初始裁剪的平均值,我們驗證這一點提高教師的性能。學生還使用隨機作物。后兩種設置類似于“嘈雜學生”論文[49]中的輸入噪聲策略。
?????獨立噪聲。我們以兩種方式實例化了這一常用策略:ind/rc分別為教師和學生計算兩個獨立的輕度隨機裁剪,而ind/ic使用較重的inception裁剪。[41]中使用了類似的設置。
?????一致性教學。在這種方法中,我們只隨機裁剪圖像一次,無論是輕度隨機裁剪(same/rc)還是重度inception裁剪(same/ic),并將此相同裁剪用于學生和教師的輸入。
?????函數匹配。這種方法擴展了一致性教學,通過mixup(mix)擴展圖像輸入流形,再次為學生和教師提供一致的輸入。為了簡潔起見,我們有時將這種方法稱為“FunMatch”。
圖3顯示了所有這些配置下Flower102數據集上的10000條epoch訓練曲線。這些結果清楚地表明,“一致性”是關鍵:所有“不一致”蒸餾設置的分數都較低,而一致性設置顯著提高了學生的成績,函數匹配方法效果最好。此外,訓練損失表明,對于如此小的數據集,使用固定教師會導致嚴重的過度擬合。相反,函數匹配在訓練集上從未達到這樣的損失,而在驗證集上的推廣效果更好。由于空間限制,我們在附錄C中顯示了其他數據集和訓練持續時間的類似結果。
3.1.2????“耐心”教學的重要性
人們可以將蒸餾解釋為監督學習的一種變體,其中標簽(可能是軟的)由強大的教師模型提供。當對單個圖像視圖(預先)計算教師預測時,尤其符合這種解釋。這種方法繼承了標準監督學習的所有問題,例如,激進的數據增強可能會扭曲實際圖像標簽,而溫和的增強可能會導致過度擬合。
然而,如果我們將蒸餾理解為函數匹配,情況就會發生變化,至關重要的是,要確保為學生和教師提供一致的輸入。在這種情況下,我們可以非常激進地進行圖像增強:即使圖像視圖過于扭曲,我們仍將在匹配此輸入上的相關函數方面取得進展。因此,我們可以在增強上做更多的嘗試,并通過進行激進的圖像增強來避免過擬合,如果是這樣的話,可以進行很長時間的優化,直到學生的函數接近教師的函數。
在圖4中,我們根據經驗證實了我們的直覺,其中對于每個數據集,我們展示了在不同訓練epoch訓練最佳函數匹配學生(根據驗證)期間測試精度的演變。老師被顯示為紅線,并且學生總是在經歷了比在監督訓練設置中使用的次數多得多的epoch之后達到老師模型的精度。至關重要的是,即使我們優化了100萬個epoch,也沒有過度擬合。
我們還訓練和調整了另外兩條基線,以供參考:使用數據集原始硬標簽從頭開始訓練ResNet-50,以及遷移在ImageNet-21k上預訓練的ResNet-50。對于這兩個基線,我們嚴格調整學習率和權重衰減,如第3.1節所述。使用原始標簽從頭開始訓練的模型大大落后于我們的學生模型。遷移模型的表現要好得多,但最終我們的學生模型還是會勝出。
值得注意的是,相對較短但通常持續100個epoch的訓練會導致比遷移基線差得多的表現。總的來說,ResNet-50學生耐心且一致地與非常強大但計算量大的ResNet-152x2教師進行全面匹配。
3.2????擴展到ImageNet
基于我們從前面章節中獲得的見解,我們現在研究擬議的蒸餾配方如何擴展到廣泛使用且更具挑戰性的ImageNet數據集[36]。按照與之前相同的方案,在圖5(左)中,我們報告了三種蒸餾設置的整個訓練過程中的學生精度曲線:(1)固定教師,(2)一致教學,(3)函數匹配。作為參考,我們的基礎教師模型達到了83.0%的最高精度。Fixed teacher再次遭受長時間的訓練,并在經歷了600個階段后開始過度適應。相反,隨著訓練時間的增加,一致的教學方法不斷提高性能。由此我們可以得出結論,一致性是使蒸餾在ImageNet上工作的關鍵,類似于之前討論的中小型數據集上的行為。
與簡單一致的教學相比,在短時間內,函數匹配的表現稍差,這可能是由于擬合不足。但是,當我們增加訓練計劃的長度時,函數匹配的改進變得顯而易見:例如,僅使用1200個epoch,它就能夠匹配4800個epoch的一致教學性能,從而節省75%的計算資源。最后,對于我們實驗的最長時間的函數匹配,vanilla ResNet-50 student架構在ImageNet上實現了82.31%的頂級精度。
3.3????跨不同輸入分辨率蒸餾
到目前為止,我們假設學生和教師都接收到相同的標準輸入分辨率224px。但是,可以將不同分辨率的圖像傳遞給學生和教師,同時保持一致:只需對原始高分辨率圖像執行裁剪,然后根據學生和教師的不同調整其大小:他們的視圖將保持一致,盡管分辨率不同。這種洞察可以用于向更好、更高分辨率的教師學習[23,43],也可以用于訓練更小、更快的學生[2]。我們研究了兩個方向:首先,在[2]之后,我們訓練了一名輸入分辨率為160px的ResNet-50學生,同時保持教師分辨率不變(224px)。這導致模型速度提高了兩倍,仍然達到了80.49%的頂級精度(見表1),這比[2]使用一系列修改在該分辨率下的最佳精度為78.8%要好。
其次,在[23]之后,我們蒸餾了一個分辨率為384px的教師(達到83.7%的頂級精度),這次保持了學生分辨率不變,即224px的輸入圖像。如表1所示,與基準教師相比,這在整體上提供了適度但一致的改進。
3.4? ??優化:二階預處理器second order preconditioner(Shampoo)提高了訓練效率
我們觀察到,“函數匹配”的角度的優化效果因為要訓練很長的時間造成了計算瓶頸。直覺上,我們認為優化困難源于這樣一個事實,即用多變量輸出擬合一般函數比用固定的圖像級標簽擬合要困難得多。因此,我們對更強大的優化器是否能夠更好地完成任務進行了初步探索。為此,我們將基礎優化器從Adam更改為Shampoo[1],使用二階預處理器。在圖5(中間)中,我們觀察到Shampoo在1200個時間段內達到了Adam在4800個時間段達到的相同測試精度,并且步長時間開銷最小。總的來說,我們在所有實驗環境中都觀察到了與Adam相比的持續改善。關于Shampoo優化器的實驗細節見附錄D。
3.5????優化:良好的初始化可以改善短期訓練,但最終會落后
受遷移學習文獻[11,23]和[38]的啟發,良好的初始化能夠顯著縮短訓練成本并獲得更好的解決方案,我們嘗試使用預訓練的BiT-M-ResNet50權重初始化學生模型,結果如圖5(下)所示。
當蒸餾持續時間較短時,BiT-M初始化提高了2%以上。然而,當訓練計劃足夠長時,差距就會縮小。我們的觀察結果與[11]的結論相似。從1200個epoch開始,從頭開始蒸餾與BiT-M初始化學生匹配,并在4800個epoch略微超過它。
3.6????跨不同模型族蒸餾
除了為學生和教師使用不同的輸入分辨率之外,原則上沒有任何東西阻止我們完全使用不同家族的架構,因為我們一貫的耐心教師方法仍然適用于這種情況。這使我們能夠有效地從更強大、更復雜的教師(如集成模型)那里遷移知識,同時保持ResNet50學生的簡單架構,還可以將大型ResNet模型的最先進性能遷移到更高效的架構(如MobileNet)。我們通過兩個實驗證明了這一點。首先,我們使用兩個模型的集合作為教師,并表明這進一步提高了性能。其次,我們訓練了一名MobileNet v3[14]學生,并獲得了迄今為止報道的最好的MobilenetV3模型。
MobileNet學生。
我們使用MobileNet v3(大型)作為學生,對于大多數實驗,我們選擇使用GroupNorm(默認為8組)而不是BatchNorm的變體。我們沒有使用原始文件中使用的任何訓練技巧,我們只是執行函數匹配。我們的學生在300個epoch后達到74.60%,在1200個epoch后為76.31%,從而獲得了最佳發布的MobileNet v3模型。更多結果見附錄A。
集成模型教師。
我們現在嘗試一個更好的老師:我們創建了一個模型,該模型包括以224px分辨率默認老師的logits,以及上一節的384px分辨率老師的logits的平均值。這是一種不同的、雖然密切相關的教師類型,其能力明顯更強,但速度也較慢。在我們嘗試的每個訓練長度(附錄A),該教師的學生都比我們默認的教師的學生要好,并且在9600個epoch后,達到了82.82%的最先進的top-1 ImageNet準確率。
3.7????與文獻結果的比較。
現在,當我們介紹我們的關鍵實驗時,我們將我們的最佳ResNet-50模型與文獻中可用的最佳ResNet-50模型進行了比較,見表2。特別是,對于224×224輸入分辨率,我們將其與[12]中的原始ResNet-50模型、在ImageNet-21k數據集[37]上預訓練的BiT-M-ResNet-50以及[38]中的先前最先進模型進行了對比。對于160×160輸入分辨率,我們將其與[2]中最近的競爭模型進行比較。我們觀察到,我們的蒸餾配方在這兩種情況下都領先于最先進的性能,并且在很大程度上領先。
3.8????蒸餾“域外”數據
通過將知識蒸餾視為“函數匹配”,可以得出一個合理的假設,即可以對任意圖像輸入進行蒸餾。在本節中,我們研究這一假設。
我們在pets和sun397數據集上進行實驗。我們使用我們的蒸餾配方,使用來自food101和ImageNet數據集的域外圖像蒸餾pets和sun397模型,為了參考,還使用來自pets和sun397數據集的“域內”圖像進行蒸餾。
圖6總結了我們的結果。首先,我們觀察到使用域內數據進行蒸餾效果最好。有些令人驚訝的是,即使圖像完全不相關,蒸餾在一定程度上仍然有效,盡管結果會變得更糟。例如,這意味著學生模型可以通過僅看到食物圖像軟標簽來對寵物粗分類(30%準確度)as breeds of pets.(This, for example, means that the student model can learn to classify pets with roughly 30% accuracy by only seeing food images (softly) labeled as breeds of pets)
最后,如果蒸餾圖像與實際的“域內”圖像(如Pets和ImageNet,或sun397和ImageNet)有些關聯或重疊,則結果可能與使用“域內”(in-domain)數據一樣好(或幾乎一樣好),但可能需要更長的優化計劃。
3.9????帶增強的微調ResNet-50
為了確保我們觀察到的最先進的蒸餾結果不是我們精心調整的訓練調試的產物,即非常長的時間表和激進的mixup增強,我們訓練了相應的基線ResNet-50模型。更具體地說,我們重復使用蒸餾訓練設置,在沒有蒸餾損失的情況下對ImageNet數據集進行監督訓練。為了進一步加強我們的基線,我們還嘗試了帶有動量的SGD優化器,這通常比Adam優化器更適合ImageNet。
結果如圖7所示。我們觀察到,帶標簽和無蒸餾損失的訓練會導致明顯更差的結果,并且在長期訓練下開始過擬合。因此,我們得出結論,蒸餾對于使我們的訓練配方工作良好是必要的。
4????相關工作
有許多壓縮神經網絡的范例。其中之一是剪枝,其總體思想是丟棄訓練模型的一部分,同時使其更有效,并且在性能上幾乎沒有或根本沒有損失。模型修剪有許多不同的風格:它可以是非結構化的(即專注于修剪單個連接)或結構化的(例如專注于修剪更大的構建塊,例如整個通道)。它還可以附帶或不附帶額外的微調步驟,也可以是迭代的或不迭代的。對這一主題的平衡和公平的討論超出了本文的范圍,因此我們請感興趣的讀者參考最近的概述作為起點[4,45]。
知識蒸餾[13]是一種通過優化學生模型以匹配教師模型的某些輸出(或中間激活),將知識從一個模型(教師)遷移到另一個模型的技術。這種技術用于許多不同的環境,例如半監督學習[41,49],甚至是自監督學習[9]。在本文中,我們只考慮將知識蒸餾作為模型壓縮的工具。蒸餾的效率已經在許多作品中得到了展示,例如[5,35],在學生和教師架構的不同深度/寬度模式下,甚至與其他壓縮技術相結合[30]。值得注意的是,MEIN[38]建議將大型ResNet教師集合蒸餾到較小的ResNet學生中,以對抗性損失,并取得了很好的效果。我們的工作與壓縮知識蒸餾方面的類似工作的主要區別在于,我們的方法同時是最簡單和性能最好的:我們不引入任何新組件,而是發現正確的訓練設置足以獲得最先進的結果。
權重量化[18,26,32,46]和分解[6,10,24,44]旨在通過用輕量級近似代替大型矩陣運算來加速和減少CNN的內存占用。這條研究路線在很大程度上與這項工作正交,通常可以與本文中的方法相結合,尤其是在最終模型部署階段。我們將這一主題的探索留給未來的研究。
最后,還有一系列工作,從不同的角度接近我們的目標(緊湊和高性能的模型),重點是改變架構,從頭開始訓練好的緊湊模型,因此無需壓縮大型模型。一些值得注意的例子包括ResNeXt[50]、擠壓和激勵網絡[16]和選擇性核[25],它們提出了改進,以提高固定計算預算的模型精度。這些改進是對本文所述研究問題的補充,可以進行復合。
5????結論
我們沒有提出一種新的模型壓縮方法,而是密切關注現有的常識蒸餾過程,并確定如何在模型壓縮的背景下使其真正工作良好。我們的主要發現源于對知識蒸餾的具體解釋:我們建議將其視為一項函數匹配任務。這不是知識蒸餾的典型觀點,因為通常情況下,它被視為“一個優秀的教師會產生更好的(軟)標簽,有助于培養更好、更小的學生模型”。
根據我們的解釋,我們同時納入了三個要素:(i)確保教師和學生始終獲得相同的輸入,包括噪聲,(ii)引入激進的數據增強,以豐富輸入圖像流形(通過mixup),以及(iii)使用非常長的訓練計劃。盡管我們的配方中的每一個組成部分看起來都很普通,但我們的實驗表明,必須將它們結合起來才能獲得最佳結果。
我們將非常大的模型壓縮為更實用的ResNet-50體系結構,獲得了非常強的經驗結果。我們相信,從實用的角度來看,它們非常有用,并且是未來壓縮大規模模型研究的一個非常強大的基線。
感謝。
我們感謝Daniel Keysers和Frances Hubis對本文的寶貴反饋;Ilya Tolstikhin和Google Brain團隊提供了一個支持性的研究環境
A???? 完整的結果表
我們在表3中提供了我們在ImageNet上的實驗的完整總結,并在我們認為沒有必要運行的設置上加了一個“-”標記,因為成本超過了潛在的見解。
此外,表4給出了圖4所示模型的數值結果,這是我們在128px分辨率的四個較小數據集上的最佳模型(根據驗證),以及基線和參數。
B????BiT模型下載統計
在圖8中,我們顯示了不同大小模型的下載統計信息:ResNet50、ResNet50x3、ResNet101、ResNet101x3和ResNet152x4。很明顯,最小的ResNet50模型使用最多,與其他模型相比有很大差距。從業者的行為激勵我們努力獲得最佳的ResNet50模型。
C????更多的一致性圖
在圖9至圖12中,我們展示了所有數據集和所有訓練持續時間的“一致性”圖(參見主要論文中的圖3)。值得注意的是,(相對)短時間運行可能會在最佳方法上提供欺騙性信號,并且只有在添加“耐心”的情況下,例如,當長時間蒸餾時,才能清楚地看出全函數匹配方法是最佳選擇。
D????Shampoo優化細節
對于所有實驗,學習速率計劃是一個最多1800步的線性預熱,然后是衰減至零的二次衰減。由于分塊技巧(每個preconditioner為最多128x128),Shampoo的開銷非常小,并且每一步inverse都以分布式方式在TPU核心上運行,具有nesterov動量。這些設置與[1]中的訓練配方相同,用于在大批量下從零開始有效地在ImageNet上訓練ResNet50架構。所有實驗均使用0.000375的權重衰減。
E???? 訓練、驗證和測試集劃分
在整個實驗過程中,我們依靠tensorflow數據集庫(https://www.tensorflow.org/datasets)訪問所有數據集。該庫的一個巨大優勢是,它能夠以統一且可重復的方式訪問不同的數據集。為此,我們在表5中報告了我們的訓練、驗證和測試劃分(按照庫的符號)
F????ImageNet蒸餾的配置文件
我們根據big vision[3]約定,給出了在ImageNet上執行蒸餾的配置