首頁 > 遊戲

一個知識蒸餾的簡單介紹,一看就懂

由 AI公園 發表于 遊戲2021-07-02

簡介一個高度複雜和深度的網路可以用作教師網路的例子:GoogleNet構建對應關係:在設計學生網路時,需要建立學生網路的中間輸出與教師網路的對應關係

蒸餾器是什麼

作者:Prakhar Ganesh

編譯:ronghuaiyang

導讀

對教師學生網路進行一個初步的瞭解。

什麼是知識蒸餾?

近年來,神經模型在幾乎所有領域都取得了成功,包括極端複雜的問題。然而,這些模型體積巨大,有數百萬(甚至數十億)個引數,因此不能部署在邊緣裝置上。

知識蒸餾指的是模型壓縮的思想,透過一步一步地使用一個較大的已經訓練好的網路去教導一個較小的網路確切地去做什麼。“軟標籤”指的是大網路在每一層卷積後輸出的feature map。然後,透過嘗試複製大網路在每一層的輸出(不僅僅是最終的損失),小網路被訓練以學習大網路的準確行為。

一個知識蒸餾的簡單介紹,一看就懂

一個知識蒸餾的簡單介紹,一看就懂

我們為什麼需要這樣做?

深度學習在計算機視覺、語音識別、自然語言處理等眾多領域取得了令人難以置信的成績。然而,這些模型中的大多數在行動電話或嵌入式裝置上執行的計算成本太過昂貴。要了解更多關於模型壓縮的需求和涉及的常見技術,請訪問下面的部落格:https://towardsdatascience。com/machine-learning-models-compression-and-quantization-simplified-a302ddf326f2。

這樣和從頭訓練一個模型有什麼不一樣?

顯然,模型越複雜,理論搜尋空間越大。但是,如果我們假設較小的網路也能實現相同(甚至相似)的收斂,那麼教師網路的收斂空間應該與學生網路的解空間重疊。

不幸的是,僅憑這一點並不能保證學生網路收斂在同一點。學生網路的收斂點可能與教師網路有很大的不同。但是,如果引導學生網路複製教師網路的行為(教師網路已經在更大的解空間中進行了搜尋),則其預期收斂空間會與原有的教師網路收斂空間重疊。

一個知識蒸餾的簡單介紹,一看就懂

教師學生網路 — 到底如何工作?

訓練教師網路

:首先使用完整資料集分別對高度複雜的教師網路進行訓練。這個步驟需要高計算效能,因此只能在離線(在高效能gpu上)完成。

一個知識蒸餾的簡單介紹,一看就懂

一個高度複雜和深度的網路可以用作教師網路的例子:GoogleNet

構建對應關係

:在設計學生網路時,需要建立學生網路的中間輸出與教師網路的對應關係。這種對應關係可以直接將教師網路中某一層的輸出資訊傳遞給學生網路,或者在傳遞給學生網路之前進行一些資料增強。

一個知識蒸餾的簡單介紹,一看就懂

構建對應關係的例子

透過教師網路前向傳播

:教師網路前向傳播資料以獲得所有中間輸出,然後對其應用資料增強(如果有的話)。

透過學生網路反向傳播

:現在利用教師網路的輸出和學生網路中反向傳播誤差的對應關係,使學生網路能夠學會複製教師網路的行為。

下一步工作?

對於上述傳統的學生教師,有很多新的修改建議,比如引入多名教師(即將整合網路轉換為單一網路),引入助教(教師先教助教,助教再教學生)等。然而,該領域還很年輕,在許多維度上還未被探索。

英文原文:https://towardsdatascience。com/knowledge-distillation-simplified-dd4973dbc764

Tags:網路教師學生收斂模型