搜尋
首頁科技週邊人工智慧大模型精準反哺小模型,知識蒸餾可協助提升 AI 演算法效能

01 知識蒸餾誕生的背景

來,深度神經網路(DNN)在工業界和學術界都取得了巨大成功,尤其是在 電腦視覺任務 方面。深度學習的成功很大程度上歸功於其具有數十億參數的用於編碼資料的可擴展性架構,其訓練目標是在已有的訓練資料集上建模輸入和輸出之間的關係,其效能高度依賴網路的複雜程度及有標註訓練資料的數量和品質。

相較於電腦視覺領域的傳統演算法,大多數基於DNN 的模型都因為 過參數化 而具備強大的 泛化能力 ,這種泛化能力體現在對於某個問題輸入的所有數據上,模型能給出較好的預測結果,無論是訓練數據、測試數據,或是屬於該問題的未知數據。

在當前深度學習的背景下,演算法工程師為了提升業務演算法的預測效果,常常會有兩種方案:

使用過參數化的更複雜的網絡,這類網絡學習能力非常強,但需要大量的運算資源來訓練,而且推理速度較慢。

整合模型,將許多效果較弱的模型整合起來,通常包括參數的整合和結果的整合。

這兩種方案能顯著提升現有演算法的效果,但都提升了模型的規模,產生了較大的運算負擔,所需的運算和儲存資源很大。

在工作中,各種演算法模型的最終目的都是要 服務某個應用 。就像在買賣中我們需要控制收入和支出一樣。在工業應用中,除了要求模型要有好的預測以外, 計算資源的使用也要嚴格控制,不能只考慮結果不考慮效率。在輸入資料編碼量高的電腦視覺領域,運算資源較顯有限,控制演算法的資源佔用就更為重要。

通常來說,規模較大的模型預測效果更好,但訓練時間長、推理速度慢的問題使得模型難以即時部署。尤其是在視訊監控、自動駕駛汽車和高吞吐量雲端環境等運算資源有限的設備上,響應速度顯然不夠用。規模較小的模型雖然推理速度較快,但是因為參數量不足,推理效果和泛化表現可能就沒那麼好。如何權衡大規模模型和小規模模型一直是個熱門話題,目前的解決方法大多是 根據部署環境的終端設備效能選擇合適規模的 DNN 模型。

如果我們希望有一個規模較小的模型,能在保持較快推理速度的前提下,達到和大模型相當或接近的效果該如何做到呢?

在機器學習中,我們常常假定輸入到輸出有一個潛在的映射函數關係,從頭學習一個新模型就是輸入資料和對應標籤中一個 近似 未知的映射函數。在輸入資料不變的前提下,從頭訓練一個小模型,從經驗上來看很難接近大模型的效果。為了提升小模型演算法的效能,一般來說最有效的方式是標註更多的輸入數據,也就是提供更多的監督信息,這可以讓學習到的映射函數更魯棒,性能更好。舉兩個例子,在電腦視覺領域中,實例分割任務透過額外提供掩膜訊息,可以提高目標包圍框檢測的效果;遷移學習任務透過提供在更大資料集上的預訓練模型,顯著提升新任務的預測效果。因此 提供更多的監督資訊 ,可能是縮短小規模模型和大規模模式差距的關鍵。

依照先前的說法,想要獲取更多的監督資訊意味著標註更多的訓練數據,這往往需要龐大的成本,那麼有沒有一種低成本又高效的監督資訊取得方法呢? 2006 年的文獻[1]中指出,可以讓新模型近似(approximate)原始模型(模型即函數)。因為原模型的函數是已知的,新模型訓練時等於天然地增加了更多的監督訊息,這顯然要更可行。

進一步思考,原模型帶來的監督資訊可能蘊含著不同維度的知識,這些與眾不同的資訊可能是新模型自己無法捕捉到的,在某種程度上來說,這對於新模型也是一種「跨域」的學習。

2015年Hinton在論文《Distilling the Knowledge in a Neural Network》[2] 中沿用近似的思想,率先提出「 知識蒸餾 (Knowledge Distillation, KD)」的概念:可以先訓練出一個大而強的模型,然後將其包含的知識轉移給小的模型,就實現了“保持小模型較快推理速度的同時,達到和大模型相當或接近的效果”的目的。這其中先訓練的大模型可以稱為教師模型,後訓練的小模型則稱為學生模型,整個訓練過程可以形像地比喻為「師生學習」。隨後幾年,湧現了大量的知識蒸餾與師生學習的工作,為工業界提供了更多新的解決想法。目前,KD 已廣泛應用於兩個不同的領域:模型壓縮和知識遷移[3]。

大模型精準反哺小模型,知識蒸餾可協助提升 AI 演算法效能


02 Knowledge Distillation

簡介 

Knowledge Distillation 是一種基於「教師-學生網路」思想的模型壓縮方法,由於簡單有效,在工業界被廣泛應用。其目的是將已經訓練好的大模型所包含的知識-蒸餾(Distill),提取到另一個小的模型中去。那怎麼讓大模型的知識,或者說泛化能力轉移到小模型身上呢? KD 論文把大模型對樣本輸出的機率向量當作軟目標(soft targets)提供給小模型,讓小模型的輸出盡量去向這個軟目標靠(原來是往one-hot 編碼上靠),去近似學習大模型的行為。

在傳統的硬標籤訓練過程中,所有負標籤都被統一對待,但這種方式把類別間的關係割裂開了。比如說辨識手寫數字,同是標籤為“3”的圖片,可能有的比較像“8”,有的比較像“2”,硬標籤區分不出來這個信息,但是一個訓練良好的大模型可以給出。大模型 softmax 層的輸出,除了正例之外,負標籤也帶有大量的訊息,例如某些負標籤對應的機率遠大於其他負標籤。近似學習此行為使得每個樣本帶給學生網路的資訊量大於傳統的訓練方式。

因此,作者在訓練學生網路時修改了一下損失函數,讓小模型在擬合訓練資料的真值(ground truth)標籤的同時,也要擬合大模型輸出的機率分佈。這個方法叫做知識 蒸餾訓練 (Knowledge Distillation Training, KD Training)。知識蒸餾過程所使用的訓練樣本可以和訓練大模型用的訓練樣本一樣,或是另找一個獨立的 Transfer set。

大模型精準反哺小模型,知識蒸餾可協助提升 AI 演算法效能

方法詳解 

具體來說,知識蒸餾使用的是Teacher—Student 模型,其中teacher 是「知識」的輸出者,student 是「知識」的接受者。知識蒸餾的過程分為2 個階段:

  • 教師模型訓練:訓練」Teacher 模型「, 簡稱為Net-T,它的特徵是模型相對複雜,也可以由多個分別訓練的模型整合而成。對「Teacher模型」不作任何關於模型架構、參數量、是否集成方面的限制,因為該模型不需要部署,唯一的要求就是,對於輸入X, 其都能輸出Y,其中Y 經過softmax 的映射,輸出值對應相應類別的機率值。
  • 學生模型訓練:訓練「Student 模型」, 簡稱為 Net-S,它是參數量較小、模型結構相對簡單的單一模型。同樣的,對於輸入 X,其都能輸出 Y,Y 經過 softmax 映射後同樣能輸出對應對應類別的機率值。

由於使用softmax 的網路的結果很容易走向極端,即某一類的置信度超高,其他類別的置信度都很低,此時學生模型關注到的正類信息可能還是僅屬於某一類。除此之外,因為不同類別的負類資訊也有相對的重要性,所有負類分數都差不多也不好,達不到知識蒸餾的目的。為了解決這個問題,引入溫度(Temperature)的概念,使用高溫將小機率值所攜帶的資訊蒸餾出來。具體來說,在 logits 過 softmax 函數前除以溫度 T。

訓練時先將教師模型學習到的知識蒸餾給小模型,具體來說對樣本X,大模型的倒數第二層先除以一個溫度T,然後透過softmax 預測一個軟目標Soft target,小模型也是一樣,倒數第二層除以同樣的溫度T,然後透過softmax 預測一個結果,再把這個結果和軟目標的交叉熵當作訓練的total loss 的一部分。然後再將小模型正常的輸出和真值標籤(hard target)的交叉熵作為訓練的 total loss 的另一部分。 Total loss 把這兩個損失加權合起來作為訓練小模型的最終的 loss。

在小模型訓練好了要預測時,就不需要再有溫度 T 了,直接按照常規的 softmax 輸出就可以了。

03 FitNet 

簡介 

FitNet 論文在蒸餾時引入了中間層隱藏映射(intermediate-level hints)來指導學生模型的訓練。使用一個寬而淺的教師模型來訓練一個窄而深的學生模型。在進行 hint 引導時,提出使用一個層來匹配 hint 層和 guided 層的輸出 shape,在後人的工作裡面常被稱為 adaptation layer。

總的來說,相當於在做知識蒸餾時,不僅用到了教師模型的 logit 輸出,還用到了教師模型的中間層特徵圖作為監督資訊。可以想到的是,直接讓小模型在輸出端模仿大模型,這個對於小模型來說太難了(模型越深越難訓,最後一層的監督信號要傳到前面去還是挺累的),不如在中間加一些監督訊號,使得模型在訓練時可以從逐層接受學習更難的映射函數,而不是直接學習最難的映射函數;除此之外,hint 引導加速了學生模型的收斂,在在一個非凸問題上找到更好的局部最小值,使得學生網路能更深的同時,還能訓練得更快。這感覺就好像是,我們的目的是讓學生做高考題,那麼就先把國中的題目給他教會了(先讓小模型用前半個模型學會提取圖像底層特徵),然後再回到本來的目的、去學高考題(用KD 調整小模型的全部參數)。

這篇文章是提出蒸餾中間特徵圖的始祖,提出的演算法很簡單,但思路具有開創性。

大模型精準反哺小模型,知識蒸餾可協助提升 AI 演算法效能

方法詳解 

FitNets 的具體做法是:

  • 確定教師網路,並訓練成熟,將教師網路的中間特徵層hint 提取出來。
  • 設定學生網絡,一般較教師網絡較窄且較深。訓練學生網路使得學生網路的中間特徵層與教師模型的 hint 相符。由於學生網路的中間特徵層和與教師 hint 尺寸不同,因此需要在學生網路中間特徵層後添加回歸器用於特徵升維,以匹配 hint 層尺寸。其中匹配教師網路的 hint 層與回歸器轉換後的學生網路的中間特徵層的損失函數為均方差損失函數。

實際訓練的時候往往和上一節的KD Training 聯合使用,用兩階段法訓練:先用hint training 去pretrain 小模型前半部分的參數,再用KD Training 去訓練全體參數。由於蒸餾過程中使用了更多的監督信息, 基於中間特徵圖的蒸餾方法比基於結果 logits 的蒸餾方法效果要好 ,但是訓練時間更久。

04 總結

知識蒸餾對於將知識從整合或從高度正規化的大型模型轉移到較小的模型中非常有效。即使在用於訓練蒸餾模型的遷移資料集中缺少任何一個或多個類別的資料時,蒸餾的效果也非常好。在經典之作 KD 和 FitNet 提出之後,各種各樣的蒸餾方法如雨後春筍般湧現。未來我們也希望能在模型壓縮和知識遷移領域中做出更進一步的探索。

作者簡介 

馬佳良,網易易盾資深電腦視覺演算法工程師,主要負責電腦視覺演算法在內容安全領域的研發、最佳化與創新。

以上是大模型精準反哺小模型,知識蒸餾可協助提升 AI 演算法效能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
易於理解的解釋如何使用ChatGpt提高庫存管理效率!易於理解的解釋如何使用ChatGpt提高庫存管理效率!May 14, 2025 am 03:44 AM

即使對於中小型企業,易於實施!與Chatgpt和Excel的明智庫存管理 庫存管理是您業務的命脈。儲存過多和庫存的物品對現金流和客戶滿意度有嚴重影響。但是,目前的情況是,在成本方面引入全尺度庫存管理系統很高。 您想關注的是Chatgpt和Excel的組合。在本文中,我們將逐步解釋如何使用此簡單方法簡化庫存管理。 自動化數據分析,需求預測和報告以顯著提高運營效率等任務。而且,

易於理解的解釋如何檢查和切換chatgpt的版本!易於理解的解釋如何檢查和切換chatgpt的版本!May 14, 2025 am 03:43 AM

通過選擇chatgpt版本明智地使用AI!對最新信息以及如何檢查的詳盡說明 Chatgpt是一種不斷發展的AI工具,但其功能和性能因版本而異。在本文中,我們將以易於理解的方式解釋每個版本的Chatgpt的功能,如何檢查最新版本以及免費版本和付費版本之間的差異。選擇最佳版本,並充分利用您的AI潛力。 單擊此處以獲取有關Openai最新AI代理OpenAi Deep Research⬇️的更多信息 [chatgpt] openai d

解釋為什麼您不能將信用卡與Chatgpt的付費計劃一起使用以及如何處理的原因解釋為什麼您不能將信用卡與Chatgpt的付費計劃一起使用以及如何處理的原因May 14, 2025 am 03:32 AM

ChatGPT付費訂閱的信用卡支付故障排除指南 使用ChatGPT付費訂閱時,信用卡支付可能會遇到問題。本文將探討信用卡被拒的原因以及相應的解決方法,從用戶自行解決的問題到需要聯繫信用卡公司的情況,提供詳盡的指南,助您順利使用ChatGPT付費訂閱。 OpenAI發布的最新AI代理,“OpenAI Deep Research”詳情請點擊⬇️ 【ChatGPT】OpenAI Deep Research詳解:使用方法及收費標準 目錄 ChatGPT信用卡支付失敗的原因 原因一:信用卡信息輸入錯誤 原

易於理解的解釋如何在Chatgpt中創建VBA宏!易於理解的解釋如何在Chatgpt中創建VBA宏!May 14, 2025 am 02:40 AM

對於初學者和對業務自動化感興趣的人,編寫VBA腳本(Microsoft Office的擴展程序)可能會覺得很困難。但是,ChatGpt使簡化和自動化業務流程變得容易。 本文以易於理解的方式解釋瞭如何使用ChatGpt開發VBA腳本。我們將詳細介紹特定的示例,包括從VBA的基礎到使用ChatGpt集成,測試和調試的所有內容,以及要注意的好處和點。為了提高編程技能並提高業務效率,

我無法使用ChatGpt插件功能!解釋在錯誤時該怎麼做我無法使用ChatGpt插件功能!解釋在錯誤時該怎麼做May 14, 2025 am 01:56 AM

ChatGPT插件無法使用?這篇指南將幫助您解決問題!您是否遇到過ChatGPT插件無法使用或突然失效的情況? ChatGPT插件是提升用戶體驗的強大工具,但有時也會出現故障。本文將詳細分析ChatGPT插件無法正常工作的原因,並提供相應的解決方法。從用戶設置檢查到服務器故障排查,我們涵蓋了各種故障排除方案,助您高效利用插件完成日常任務。 OpenAI發布的最新AI代理——OpenAI Deep Research,詳情請點擊⬇️ [ChatGPT] OpenAI Deep Research詳解:使

chatgpt是否不遵循字符計數規範?關於如何處理這個問題的詳盡解釋!chatgpt是否不遵循字符計數規範?關於如何處理這個問題的詳盡解釋!May 14, 2025 am 01:54 AM

在使用chatgpt編寫句子時,有時您想指定字符數。但是,很難準確預測AI生成的句子的長度,並且匹配指定數量的字符並不容易。 在本文中,我們將解釋如何創建一個句子,其中chatgpt中的字符數量。我們將介紹有效的及時寫作,獲取適合您目的的答案的技術,並教您處理角色限制的技巧。此外,我們將解釋為什麼Chatgpt不擅長指定角色的數量及其工作方式,以及要謹慎和對策的要點。 本文

關於Python切片操作的所有內容關於Python切片操作的所有內容May 14, 2025 am 01:48 AM

對於每個Python程序員,無論是在數據科學和機器學習的領域還是軟件開發領域,Python切片操作都是最有效,最多功能和強大的操作之一。 Python切片語法

易於理解的解釋如何使用Chatgpt創建報價!易於理解的解釋如何使用Chatgpt創建報價!May 14, 2025 am 01:44 AM

AI技術的發展提高了業務效率。特別引起關注的是使用AI創建估計值。 Openai的AI助理Chatgpt有助於改善估計創建過程並提高準確性。 本文說明瞭如何使用chatgpt創建報價。我們將通過與Excel VBA的合作,系統開發項目的應用,AI實施的好處以及未來的前景來介紹效率提高。了解如何通過Chatgpt提高運營效率和生產力。 OP

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具