選自arXiv機器之心編譯編輯:趙陽
如果硬件跟不上需求,我們可以盡可能提高算法效率。 訓練越來越大的深度學習模型已經成為過去十年的一個新興趨勢。如下圖所示,模型參數量的不斷增加讓神經網絡的性能越來越好,也產生了一些新的研究方向,但模型的問題也越來越多。
首先,這類模型往往有訪問限制,沒有開源,或者即使開源,仍然需要大量的計算資源來運行。第二,這些網絡模型的參數是不能通用的,因此需要大量的資源來進行訓練和推導。第三,模型不能無限擴大,因為參數的規模受到硬件的限制。為了解決這些問題,專注于提高效率的方法正在形成一種新的研究趨勢。 近日,來自希伯來大學、華盛頓大學等多所機構的十幾位研究者聯合撰寫了一篇綜述,歸納總結了自然語言處理(NLP)領域的高效方法。
論文地址://arxiv.org/pdf/2209.00099.pdf 效率通常是指輸入系統的資源與系統產出之間的關系,一個高效的系統能在不浪費資源的情況下產生產出。在 NLP 領域,我們認為效率是一個模型的成本與它產生的結果之間的關系。
方程(1)描述了一個人工智能模型產生某種結果(R)的訓練成本(Cost)與三個(不完備的)因素成正比:
(1)在單個樣本上執行模型的成本(E); (2)訓練數據集的大小(D); (3)模型選擇或參數調整所需的訓練運行次數(H)。
然后,可以從多個維度衡量成本 Cost(·) ,如計算、時間或環境成本中的每一個都可以通過多種方式進一步量化。例如,計算成本可以包括浮點運算(FLOPs)的總數或模型參數的數量。由于使用單一的成本指標可能會產生誤導,該研究收集和整理了關于高效 NLP 的多個方面的工作,并討論了哪些方面對哪些用例有益。
該研究旨在對提高 NLP 效率的廣泛方法做一個基本介紹,因此該研究按照典型的 NLP 模型 pipeline(下圖 2)來組織這次調查,介紹了使各個階段更高效的現有方法。
這項工作給 NLP 研究人員提供了一個實用的效率指南,主要面向兩類讀者:
(1)來自 NLP 各個領域的研究人員,幫助他們在資源有限的環境下工作:根據資源的瓶頸,讀者可以直接跳到 NLP pipeline 所涵蓋的某個方面。例如,如果主要的限制是推理時間,論文中第 6 章描述了相關的提高效率方法。 (2)對改善 NLP 方法效率現狀感興趣的研究人員。該論文可以作為一個切入點,為新的研究方向尋找機會。
下圖 3 概述了該研究歸納整理的高效 NLP 方法。
此外,雖然硬件的選擇對模型的效率有很大的影響,但大多數 NLP 研究者并不能直接控制關于硬件的決定,而且大多數硬件優化對于 NLP pipeline 中的所有階段都有用。因此,該研究將工作重點放在了算法上,但在第 7 章中提供了關于硬件優化的簡單介紹。最后,該論文進一步討論了如何量化效率,在評估過程中應該考慮哪些因素,以及如何決定最適合的模型。
一旦抽象數學計算被用于數字計算機上的計算,這些計算中數值的有效表示、操作和通信的問題就出現了。與數字表示問題密切相關的是量化問題:一組連續的實數應該以何種方式分布在一組固定的離散數上,以最小化所需的位數,并使伴隨的計算的準確性最大化?當內存和/或計算資源受到嚴重限制時,量化這個長期存在的問題就顯得尤為重要。由于神經網絡模型在計算機視覺、自然語言處理和相關領域的出色表現,這一問題近年來已經成為一個前沿問題。從浮點表示方式移動到以4位或更少表示的低精度固定整數值可以將內存占用和延遲減少16倍;事實上,4倍到8倍的縮小在這些應用中經常被實現。因此,量化最近作為神經網絡計算的有效實現的一個重要和非常活躍的研究子領域出現就不足為奇了。在這篇文章中,我們調研了在深度神經網絡計算中量化數值問題的方法,包括當前方法的優點/缺點。通過這個調研和它的組織,我們希望已經提出了一個有用的量化神經網絡研究綜述,以方便在這一領域的未來研究的拓展。
//www.zhuanzhi.ai/paper/c451f4f98fbca30e3edee0a9751a0b93
引言
在過去的十年中,我們已經觀察到神經網絡(NNs)在精度上的顯著改進,用于解決廣泛的問題,通常是通過高度過參數化的模型實現的。雖然這些過度參數化(因此非常大)的神經網絡模型的精度顯著提高了,但這些模型的純粹規模?相等的貢獻。這意味著不可能為許多資源受限的應用程序部署它們。這給在資源受限的環境下實現普適深度學習帶來了問題,普適深度學習需要實時推理,具有低能耗和高精度。這種普遍深度學習預計將對實時智能醫療保健監控、自動駕駛、音頻分析和語音識別等廣泛應用產生重大影響。
要實現高效、實時的、具有最優精度的神經網絡,需要重新思考神經網絡模型的設計、訓練和部署[71]。有大量的文獻專注于通過使NN模型更有效(在延遲、內存占用和能量消耗等方面)來解決這些問題,同時仍然提供最佳的準確性/泛化權衡。這些努力可以大致分為以下幾類。
a) 設計高效的NN模型架構: 一些工作都集中在優化神經網絡模型結構的微架構(101,111,127,167,168,212,253,280](例如,內核類型深度方面卷積或低秩分解等)以及它macro-architecture(100、101、104、110、214、233](如模塊類型,例如殘差,或inception)。這里的經典技術大多使用手動搜索找到新的體系結構模塊,這是不可擴展的。因此,一個新的工作是設計自動機器學習(AutoML)和神經結構搜索(NAS)方法。這些方法的目的是在給定模型尺寸、深度和/或寬度的約束下,自動找到正確的NN架構[161,194,232,245,252,291]。我們向有興趣的讀者推薦[54]來了解NAS方法的最新調查。
b) 協同設計網絡架構和硬件: 最近的另一項工作是為特定的目標硬件平臺調整(并協同設計)網絡架構。這是因為NN組件的開銷(在延遲和能量方面)是依賴于硬件的。例如,具有專用緩存層次結構的硬件可以比沒有專用緩存層次結構的硬件更有效地執行受帶寬限制的操作。與神經網絡體系結構設計類似,體系結構-硬件協同設計的最初方法是手動的,即由專家調整/更改神經網絡體系結構[70],然后使用自動化的AutoML和/或NAS技術[22,23,100,252]。
c) 剪枝: 另一種減少網絡的內存占用和計算成本的方法是運用剪枝。在剪枝過程中,去掉敏感性小的神經元,得到稀疏計算圖。這里,具有小顯著性的神經元是指那些去除后對模型輸出/損失函數影響最小的神經元。剪枝方法可以大致分為非結構剪枝[49,86,139,143,191,257]和結構剪枝[91,106,156,166,274,275,279]。在非結構化剪枝中,我們可以去除那些不太顯著的神經元,無論它們在哪里出現。該方法可以進行主動剪枝,去除大部分神經網絡參數,對模型的泛化性能影響很小。然而,這種方法導致了稀疏矩陣操作,這是眾所周知的難以加速,并且通常是內存受限的[21,66]。另一方面,使用結構化剪枝,一組參數(例如,整個卷積濾波器)被刪除。這可以改變層和權重矩陣的輸入和輸出形狀,從而仍然允許密集的矩陣操作。然而,積極的結構修剪往往導致顯著的精度退化。具有高水平修剪/稀疏性的訓練和推理,同時保持最先進的性能,仍然是一個開放問題[16]。有興趣的讀者請參閱[66,96,134],了解修剪/稀疏性相關工作的詳細情況。
d) 知識蒸餾: 模型蒸餾[3,95,150,177,195,207,269,270]涉及訓練一個大模型,然后作為教師使用它來訓練一個更緊湊的模型。在對學生模型的訓練中,不是使用“硬”的類別標簽,模型蒸餾的關鍵思想是利用老師產生的“軟”概率,因為這些概率可以包含更多關于輸入的信息。盡管在蒸餾方面做了大量的工作,但這里的一個主要挑戰是僅用蒸餾就能獲得高壓縮比。與量化和剪枝相比,在壓縮≥4×的情況下(具有INT8和較低的精度),知識蒸餾方法在壓縮強度大的情況下具有不可忽略的精度退化。然而,將知識精餾與之前的方法(即量化和剪枝)相結合已經取得了巨大的成功[195]。
e) 量化: 最后,量化方法在神經網絡模型的訓練和推理方面都表現出了巨大和一致的成功。雖然數字表示和量化的問題和數字計算一樣古老,但神經網絡提供了獨特的改進機會。雖然對量化的研究主要集中在推理方面,但我們應該強調量化在神經網絡訓練方面取得了重要的成功[10,35,57,130,247]。特別是,半精度和混合精度訓練的突破[41,72,79,175]是人工智能加速器實現一個數量級更高吞吐量的主要驅動因素。然而,事實證明,如果沒有顯著的調整,很難達到半精度以下,而且最近的大多數量化研究都集中在推理上。這種用于推理的量化是本文的重點。
f) 量化和神經科學: 神經網絡量化是神經科學領域的一項工作,表明人類大腦以離散/量化的形式存儲信息,而不是以連續的形式存儲信息[171,236,240]。這一觀點的一個普遍理由是,以連續形式存儲的信息不可避免地會被噪聲(噪聲總是存在于物理環境中,包括我們的大腦,它可以由熱噪聲、感覺噪聲、外部噪聲、突觸噪聲等引起)所損壞[27,58]。然而,離散信號表示對這種低水平噪聲更有魯棒性。其他原因,包括離散表示更高的泛化能力[128,138,242]和有限資源下更高的效率[241],也被提出。我們建議讀者參考[228]對神經科學文獻中相關工作的全面回顧。
深度學習已經在計算機視覺、自然語言理解、語音識別、信息檢索等領域掀起了一場革命。然而,隨著深度學習模型的不斷改進,其參數數量、延遲時間、訓練所需資源等都有了顯著增加。因此,關注模型的度量也變得很重要,而不僅僅是它的質量。我們提出深度學習中的效率問題,隨后對模型效率的五個核心領域(包括建模技術、基礎設施和硬件)以及其中的開創性工作進行了全面調研。我們還提供了一個基于實驗的指南和代碼,供從業者優化他們的模型訓練和部署。我們相信,這是在高效深度學習領域的第一次全面綜述,涵蓋了從建模技術到硬件支持的模型效率景觀。我們的希望是,這個綜述將為讀者提供心理模型和必要的理解,應用通用的效率技術,立即獲得顯著的改進,并促使他們的想法,進一步的研究和實驗,以實現額外的收益。
//www.zhuanzhi.ai/paper/0f8f07193a10367d2246a95c3c7785bb
引言
在過去的十年里,利用神經網絡進行深度學習一直是訓練新的機器學習模型的主要方法。它的崛起通常歸功于2012年的ImageNet競賽[45]。那一年,多倫多大學的一個團隊提交了一個深度卷積網絡(AlexNet[92],以首席開發人員Alex Krizhevsky的名字命名),其表現比排名第二的好41%。這一開創性工作的結果是,人們競相創造具有越來越多參數和復雜性的更深度網絡。一些模型架構,如VGGNet [141], Inception [146], ResNet[73]等,在隨后幾年的ImageNet競賽中連續打破了先前的記錄,同時它們的占用空間(模型大小,延遲等)也在增加。
這種效應在自然語言理解(NLU)中也得到了關注,其中主要基于注意力層的Transformer[154]體系結構刺激了通用語言編碼器(如BERT[47]、GPT-3[26]等)的開發。BERT在發布時擊敗了11個NLU基準測試。GPT-3還通過其API在行業的多個地方得到了應用。這些域之間的共同方面是模型占用空間的快速增長(參見圖1),以及與訓練和部署它們相關的成本。
深度學習研究一直專注于提高現有SOTA性能,圖像分類、文本分類等基準的逐步改進與網絡復雜度、參數數量、訓練網絡所需的訓練資源數量、預測延遲等的增加有關。例如,GPT-3包含1750億個參數,僅訓練一次迭代([26])就要花費數百萬美元。這排除了試驗/嘗試不同超參數組合的成本,這在計算上也是昂貴的。
雖然這些模型可以很好地執行它們所接受的任務,但它們可能不足以在現實世界中進行直接部署。在培訓或部署模型時,深度學習從業者可能面臨以下挑戰。
可持續的服務器端擴展: 訓練和部署大型深度學習模型的成本很高。雖然訓練可能是一次性成本(或者如果使用的是預先訓練的模型,則可能是免費的),但是部署并讓推理運行很長一段時間,在服務器端RAM、CPU等方面的消耗仍然是昂貴的。對于谷歌、Facebook、亞馬遜等機構來說,數據中心的碳足跡也是一個非常現實的問題,這些機構每年在數據中心的資本支出上都要花費數十億美元。
終端設備上部署: 某些深度學習應用程序需要在物聯網和智能設備上實時運行(模型推斷直接發生在設備上),原因有很多(隱私、連通性、響應性)。因此,必須為目標設備優化模型。
隱私和數據敏感性: 當用戶數據可能很敏感時,能夠使用盡可能少的數據進行訓練是至關重要的。因此,使用一小部分數據高效地訓練模型意味著所需的數據收集較少。
新的應用: 某些新的應用提供了新的約束(關于模型質量或足跡),現有的現成模型可能無法解決。
模型爆炸: 雖然一個單一的模型可能工作得很好,但為不同的應用在相同的基礎設施(托管)上訓練和/或部署多個模型可能會耗盡可用資源。
高效深度學習
圍繞上述挑戰的共同主題是效率。我們可以進一步細分如下:
推理效率: 這主要處理部署推理模型(計算給定輸入的模型輸出)的人會問的問題。型號小嗎?它快嗎,等等?更具體地說,模型有多少參數、磁盤大小、推斷期間的RAM消耗、推斷延遲等。
訓練效率: 這涉及到訓練模型的人會問的問題,比如模型需要多長時間來訓練?有多少設備?模型能適應內存嗎?等。它可能還包括這樣的問題,模型需要多少數據才能在給定的任務上實現期望的性能?
在本節中,我們將介紹mental模型來思考與高效深度學習相關的算法、技術和工具的集合。我們提出在五個主要領域構建它們,前四個集中在建模上,最后一個圍繞基礎設施和工具。
(1) 壓縮技術: 這些是用于優化模型架構的通用技術和算法,通常是通過壓縮層數。一個經典的例子是量化[82],它試圖壓縮一層的權矩陣,通過降低其精度(例如。(從32位浮點值到8位無符號整數),質量損失最小。
(2) 學習技術: 這些算法專注于不同的訓練模型(做出更少的預測錯誤,需要更少的數據,收斂更快等)。如果需要的話,通過削減參數的數量,可以將改進的質量轉換為更小的內存占用/更高效的模型。學習技術的一個例子是蒸餾[75],它通過學習模仿較大的模型來提高較小模型的準確性。
(3) 自動化: 這些是使用自動化改進給定模型的核心度量的工具。一個例子是超參數優化(HPO)[61],優化超參數有助于提高精度,然后可以用較少參數的模型進行交換。類似地,體系結構搜索[167]也屬于這一類,其中體系結構本身進行了調優,搜索有助于找到一個模型,該模型既優化了損耗/準確性,又優化了一些其他指標,如模型延遲、模型大小等。
(4) 高效架構: 這些是從頭開始設計的基本塊(卷積層、注意力等),是對之前使用的基線方法(分別是完全連接層和RNN)的重大飛躍。例如,卷積層引入了參數共享用于圖像分類,避免了為每個輸入像素學習單獨的權值,也使其對過擬合具有魯棒性。同樣,注意力層[21]解決了Seq2Seq模型中的信息瓶頸問題。這些架構可以直接用于提高效率。
(5) 基礎設施: 最后,我們還需要基礎設施和工具來幫助我們構建和利用有效的模型。這包括模型訓練框架,如Tensorflow[1]、PyTorch[119]等(以及部署高效模型所需的工具,如Tensorflow Lite (TFLite)、PyTorch Mobile等)。我們依賴于基礎設施和工具來利用高效模型的收益。例如,要獲得量化模型的規模和延遲改進,我們需要推理平臺支持量化模式下的常見神經網絡層。
當前自然語言處理的發展為低資源語言和領域提供了挑戰和機遇。眾所周知,深度神經網絡需要大量的訓練數據,而這些數據在資源貧乏的情況下可能無法得到。然而,也有越來越多的工作來提高低資源環境下的性能。基于對神經模型的基本改變和目前流行的預訓練和微調范式,我們概述了低資源自然語言處理的有前途的方法。在討論了低資源場景的定義和數據可用性的不同維度之后,我們接著研究了在訓練數據稀少時支持學習的方法。這包括創建附加標簽數據的機制,如數據增強和遠程監督,以及轉移學習設置,以減少對目標監督的需要。調查結束時,簡要地看了一下在非NLP機器學習社區中建議的方法,這些方法在資源少的情況下可能對NLP有益。
近年來,自然語言處理(NLP)和信息檢索(IR)領域取得了巨大的進展,這要歸功于深度學習模型,如回歸神經網絡(RNNs)、門控回歸單元(GRUs)和長短時記憶(LSTMs)網絡,以及基于Transformer (Vaswani et al., 2017)的雙向編碼器表示模型(BERT) (Devlin et al., 2018)。但這些模型都是巨大的。另一方面,現實世界的應用程序要求較小的模型尺寸、低響應時間和低計算功率。在這個綜述中,我們討論了六種不同類型的方法(剪枝、量化、知識蒸餾、參數共享、張量分解和基于線性變壓器的方法)來壓縮這些模型,使它們能夠在實際的工業NLP項目中部署。考慮到構建具有高效和小型模型的應用程序的迫切需要,以及最近在該領域發表的大量工作,我們相信,本論文調研組織了“NLP深度學習”社區在過去幾年里所做的大量工作,并將其作為一個連貫的故事呈現出來。
//www.zhuanzhi.ai/paper/3fba50f6f54fa8722b1c7fd56ec0bcfb
由于硬件資源有限,深度學習模型的訓練目標通常是在訓練和推理的時間和內存限制下最大化準確性。在這種情況下,我們研究了模型大小的影響,關注于計算受限的NLP任務的Transformer模型:自監督的預訓練和高資源機器翻譯。我們首先展示了,盡管較小的Transformer模型在每次迭代中執行得更快,但更廣、更深入的模型在顯著更少的步驟中收斂。此外,這種收斂速度通常超過了使用更大模型的額外計算開銷。因此,計算效率最高的訓練策略是反直覺地訓練非常大的模型,但在少量迭代后停止。
這導致了大型Transformer 模型的訓練效率和小型Transformer 模型的推理效率之間的明顯權衡。然而,我們表明大模型比小模型在壓縮技術(如量化和剪枝)方面更健壯。因此,一個人可以得到最好的兩個好處: 重壓縮,大模型比輕壓縮,小模型獲得更高的準確度。
//www.zhuanzhi.ai/paper/4d7bcea8653fcc448137766511ec7d8a
概述:
在當前的深度學習范式中,使用更多的計算(例如,增加模型大小、數據集大小或訓練步驟)通常會導致更高的模型準確度(brock2018large;raffel2019exploring)。最近自監督預訓練的成功進一步論證了這種趨勢經模型。因此,計算資源日益成為提高模型準確度的關鍵制約因素。這個約束導致模型訓練的(通常是隱含的)目標是最大化計算效率:如何在固定的硬件和訓練時間下達到最高的模型準確度。
最大化計算效率需要重新考慮關于模型訓練的常見假設。特別是,有一個典型的隱式假設,即模型必須經過訓練直到收斂,這使得較大的模型在有限的計算預算下顯得不太可行。我們通過展示以收斂為代價來增加模型大小的機會來挑戰這一假設。具體地說,我們表明,訓練Transformer 模型的最快方法(vaswani2017attention)是大幅度增加模型大小,但很早停止訓練。
在我們的實驗中,我們改變了Transformer模型的寬度和深度,并在自監督的預訓練(RoBERTa (liu2019roberta)在Wikipedia和BookCorpus上訓練)和機器翻譯(WMT14英語→法語)上評估了它們的訓練時間和準確性。對于這些任務,我們首先展示了更大的模型比更小的模型在更少的梯度更新中收斂到更低的驗證錯誤(第3節)。此外,這種收斂速度的增加超過了使用更大模型所帶來的額外計算開銷——計算效率最高的模型是非常大的,并且遠遠不能收斂(例如,圖2,左)。我們還表明,收斂的加速主要是參數計數的函數,只有模型寬度、深度和批大小的微弱影響。
雖然較大的模型訓練速度更快,但它們也增加了推理的計算和內存需求。這種增加的成本在現實應用中尤其成問題,推理成本占訓練成本的主要比例(jouppi2017datacenter;crankshaw2017clipper;metz2017tpu)。然而,對于RoBERTa來說,這種明顯的權衡可以與壓縮相協調:與小型模型相比,大型模型在壓縮方面更加健壯(第4節)。因此,使用可比較的推理成本,大型重壓縮的模型優于小型輕壓縮的模型(例如,圖2,右)。
【導讀】知識蒸餾是一種典型的模型壓縮和加速方法,在很多應用場景對此有需求。來自悉尼大學的學者發布了《知識蒸餾》的綜述論文,值的關注。
近年來,深度神經網絡在工業和學術界取得了巨大的成功,特別是在視覺識別和神經語言處理方面的應用。深度學習的巨大成功,主要歸功于其巨大的可擴展性,既有大規模的數據樣本,也有數十億的模型參數。然而,在資源有限的設備如移動電話和嵌入式設備上部署這些笨重的深模型也帶來了巨大的挑戰,不僅因為計算量大,而且存儲空間大。為此,開發了各種模型壓縮和加速技術,如剪枝、量化和神經結構搜索。知識蒸餾是一種典型的模型壓縮和加速方法,旨在從大教師模型中學習小學生模型,越來越受到社會的關注。本文從知識分類、訓練方案、知識提取算法以及應用等方面對知識提取進行了綜述。此外,我們簡要回顧了知識提煉的挑戰,并對未來的研究課題提供了一些見解。
概述
在過去的幾年里,深度學習在人工智能領域取得了巨大的成功,包括計算機視覺(Krizhevsky et al., 2012)、強化學習(Silver et al., 2016)和神經語言處理(Devlin et al., 2018)的各種應用。借助最近許多技術,包括殘差連接(He et al., 2016)和批處理歸一化(Ioffe and Szegedy, 2015),我們可以輕松地在強大的GPU或TPU集群上訓練具有數千層的深度模型。例如,只需不到10分鐘就可以在數百萬張圖像的數據集上訓練ResNet模型(Deng et al. , 2009 ; Sun et al. , 2019); 訓練一個強大的BERT模型進行語言理解只需要不到一個半小時 (Devlin et al., 2018; You et al., 2019).。雖然大規模的深度模型帶來了令人難以置信的性能,但其龐大的計算復雜度和海量的存儲需求給實時應用的部署帶來了巨大的挑戰,特別是對于那些資源有限的設備,比如嵌入式人臉識別系統和自動駕駛汽車。
為了開發高效的深度模型,最近的工作通常集中在1)基于深度可分離卷積的高效基本塊,如MobileNets (Howard et al. , 2017 ; Sandler et al. , 2018) 和ShuffleNets (Zhang et al. , 2018a ; Ma et al. , 2018); (2)模型壓縮和加速技術,主要包括以下類別(Cheng et al., 2018)。
參數修剪和共享: 這些方法主要是去除深層神經網絡中不重要的參數,去除的參數對性能影響不大。該類別又分為模型量化(Wu et al., 2016)和二值化(Courbariaux et al., 2015)、參數共享(Han et al., 2015)和結構矩陣(Sindhwani et al., 2015)。
低秩分解: 這些方法通過矩陣/張量分解來探索深度神經網絡參數的冗余性(Denton et al., 2014)。
傳輸/壓縮卷積濾波器: 這些方法通過傳輸/壓縮卷積濾波器來減少不必要的參數(Zhai et al., 2016)。
知識蒸餾(KD): 這些方法通常將知識從一個較大的深度神經網絡提取到一個較小的網絡中(Hinton et al., 2015)。
對模型壓縮和加速的全面回顧超出了本文涵蓋的范圍,而我們關注的是知識蒸餾,這已經得到越來越多的研究社區關注。在實踐中,大型深度模型往往會取得非常好的性能,因為過參數化提高了泛化性能 (Brutzkus and Globerson, 2019; Allen-Zhu et al., 2019; Arora et al., 2018)。知識蒸餾通過在大教師模型的監督下學習小學生模型,從而探究深度模型中參數的冗余性,用于推理(Bucilua et al., 2006; Ba and Caruana, 2014; Hinton et al., 2015; Urban et al., 2016),而知識蒸餾的關鍵問題是如何將知識從大教師模型轉移到小學生模型。一般情況下,知識蒸餾的師生框架如圖1所示。雖然在實踐中取得了巨大的成功,但在理論或經驗上理解知識提煉方法的工作并不多(Cheng et al., 2020; Phuong and Lampert, 2019; Cho and Hariharan, 2019)。具體來說,為了理解知識蒸餾的工作機制,Phuong和Lampert在深度線性分類器的情況下,從理論上證明了學習精餾學生網絡快速收斂的泛化邊界(Phuong和Lampert, 2019)。這一解釋理論上回答了學生學習的內容和速度,并揭示了決定蒸餾成功的因素。蒸餾的成功依賴于數據幾何、蒸餾目標的優化偏差和學生分類器的強單調性。Cheng等人量化了來自深度神經網絡中間層的視覺概念知識,以解釋知識蒸餾(Cheng et al., 2020)。Cho和Hariharan對知識蒸餾的有效性進行了詳細的實證分析(Cho和Hariharan, 2019)。實證分析發現,由于模型容量的差距,較大的模型不一定是更好的老師(Mirzadeh et al., 2019),而精餾會對學生的學習產生不利影響。據我們所知,(Cho and Hariharan, 2019)忽略了對教師和學生之間不同知識、不同蒸餾和相互感情的經驗評價。此外,通過實證分析,從標簽平滑、教師和先驗對最優輸出層幾何形狀的預測置信度等角度探討了對知識蒸餾的理解(Tang et al., 2020)。
模型壓縮的知識蒸餾思想與人類的學習方案非常相似。為此,近年來的知識蒸餾方法不僅擴展到了師生學習(Hinton et al., 2015),還擴展到了相互學習(Zhang et al., 2018b)、自學(Yuan et al., 2019)、輔助教學(Mirzadeh et al., 2019)和終身學習(Zhai et al., 2019)。知識蒸餾的大部分擴展集中于壓縮深度神經網絡,因此輕量級的學生網絡可以很容易地部署在諸如視覺識別、語音識別和自然語言處理(NLP)等應用程序中。此外,知識蒸餾中從一個模型到另一個模型的知識轉移符號也可以擴展到其他任務,如對抗攻擊(Papernot et al., 2016b)、數據增強(Lee et al., 2019a;Gordon和Duh, 2019),數據隱私和安全(Wang等,2019a)。
本文對知識蒸餾的研究進行了綜述。本綜述的主要目的是1) 全面概述知識蒸餾,包括動機的背景,基本符號和公式,以及幾種典型知識,蒸餾和算法; 2) 全面回顧知識蒸餾的最新進展,包括理論、應用和在不同現實場景下的擴展; 3) 從知識遷移的不同角度,包括不同類型的知識、訓練方案、知識提煉算法/結構和應用,闡述知識蒸餾的一些挑戰和見解。本文組織概況如圖2所示。具體地說,本文的其余部分結構如下。第二節給出了知識蒸餾的重要概念和常規模型。知識和蒸餾的種類分別在第3節和第4節中進行了總結。現有的關于知識提煉中的師生結構的研究在第5部分進行了說明。第6節對許多最新的知識蒸餾方法進行了全面的總結和介紹。知識蒸餾的廣泛應用將在第7節的不同方面加以說明。第8節討論了知識蒸餾中具有挑戰性的問題和未來的方向。最后,在第9節給出結論。