日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

【AI不惑境】模型压缩中知识蒸馏技术原理及其发展现状和展望

發布時間:2025/3/20 ChatGpt 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【AI不惑境】模型压缩中知识蒸馏技术原理及其发展现状和展望 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,這是專欄《AI不惑境》的第十一篇文章,講述知識蒸餾相關的內容。

進入到不惑境界,就是向高手邁進的開始了,在這個境界需要自己獨立思考。如果說學習是一個從模仿,到追隨,到創造的過程,那么到這個階段,應該躍過了模仿和追隨的階段,進入了創造的階段。從這個境界開始,講述的問題可能不再有答案,更多的是激發大家一起來思考。

作者&編輯 | 言有三

知識蒸餾是非常經典的基于遷移學習的模型壓縮技術,在學術界的研究非常活躍,工業界也有許多的應用和較大的潛力,本文給大家梳理知識蒸餾的核心技術,發展現狀,未來展望以及學習資源推薦。

1 知識蒸餾基礎

1.1 什么是知識蒸餾

一般地,大模型往往是單個復雜網絡或者是若干網絡的集合,擁有良好的性能和泛化能力,而小模型因為網絡規模較小,表達能力有限。利用大模型學習到的知識去指導小模型訓練,使得小模型具有與大模型相當的性能,但是參數數量大幅降低,從而可以實現模型壓縮與加速,就是知識蒸餾與遷移學習在模型優化中的應用。

Hinton等人最早在文章“Distilling the knowledge in a neural network”[1]中提出了知識蒸餾這個概念,其核心思想是一旦復雜網絡模型訓練完成,便可以用另一種訓練方法從復雜模型中提取出來更小的模型,因此知識蒸餾框架通常包含了一個大模型(被稱為teacher模型),和一個小模型(被稱為student模型)。

1.2 為什么要進行知識蒸餾

以計算機視覺模型的訓練為例,我們經常用在ImageNet上訓練的模型作為預訓練模型,之所以可以這樣做,是因為深度學習模型在網絡淺層學習的知識是圖像的色彩和邊緣等底層信息,某一個數據集學習到的信息也可以應用于其他領域。

那實際上知識蒸餾或者說遷移學習的必要性在哪里?

(1) 數據分布差異。深度學習模型的訓練場景和測試場景往往有分布差異,以自動駕駛領域為例,大部分數據集的采集都是基于白天,光照良好的天氣條件下,在這樣的數據集上訓練的模型,當將其用于黑夜,風雪等場景時,很有可能會無法正常工作,從而使得模型的實用性能非常受限。因此,必須考慮模型從源域到目標域的遷移能力。

(2) 受限的數據規模。數據的標注成本是非常高的,導致很多任務只能用少量的標注進行模型的訓練。以醫學領域為典型代表,數據集的規模并不大,因此在真正專用的模型訓練之前往往需要先在通用任務上進行預訓練。

(3) 通用與垂直領域。雖然我們可以訓練許多通用的模型,但是真實需求是非常垂直或者說個性化的,比如ImageNet存在1000類,但是我們可能只需要用到其中若干類。此時就可以基于1000類ImageNet模型進行知識遷移,而不需要完全從頭開始訓練。

因此,在工業界對知識蒸餾和遷移學習也有著非常強烈的需求,接下來我們講解其中的主要算法。

2 知識蒸餾主要算法

知識蒸餾是對模型的能力進行遷移,根據遷移的方法不同可以簡單分為基于目標驅動的算法,基于特征匹配的算法兩個大的方向,下面我們對其進行介紹。

2.1 知識蒸餾基本框架

Hinton最早在文章“Distilling the knowledge in a neural network”中提出了知識蒸餾的概念,即knowledge distilling,對后續的許多算法都產生了影響,其框架示意圖如下:

從上圖中可以看出,包括一個teacher model和一個student model,teacher model需要預先訓練好,使用的就是標準分類softmax損失,但是它的輸出使用帶溫度參數T的softmax函數進行映射,如下:

當T=1時,就是softmax本身。當T>1,稱之為soft softmax,T越大,因為輸入zk產生的概率f(zk)差異就會越小。

之所以要這么做,其背后的思想是當訓練好一個模型之后,模型為所有的誤標簽都分配了很小的概率。然而實際上對于不同的錯誤標簽,其被分配的概率仍然可能存在數個量級的懸殊差距。這個差距,在softmax中直接就被忽略了,但這其實是一部分有用的信息。

訓練的時候小模型有兩個損失,一個是與真實標簽的softmax損失,一個是與teacher model的蒸餾損失,定義為KL散度。

當teacher model和student model各自的預測概率為pi,qi時,其蒸餾損失部分梯度傳播如下:

可以看出形式非常的簡單,梯度為兩者預測概率之差,這就是最簡單的知識蒸餾框架。

2.2 優化目標驅動的知識蒸餾框架

Hinton等人提出的框架是在模型最后的預測端,讓student模型學習到與teacher模型的知識,這可以稱之為直接使用優化目標進行驅動的框架,類似的還有ProjectionNet[2]。

PrjojectNet同時訓練一個大模型和一個小模型,兩者的輸入都是樣本,其中大模型就是普通的CNN網絡,而小模型會對輸入首先進行特征投影。每一個投影矩陣P都對應了一個映射,由一個d-bit長的向量表示,其中每一個bit為0或者1,這是一個更加稀疏的表達。特征用這種方法簡化后自然就可以使用更加輕量的網絡的結構進行訓練。

那么怎么完成這個過程呢?文中使用的是locality sensitive hashing(LSH)算法,這是一種聚類任務中常用的降維的算法。

優化目標包含了3部分,分別是大模型的損失,投影損失,以及大模型和小模型的預測損失,全部使用交叉熵,各自定義如下:

基于優化目標驅動的方法其思想是非常直觀,就是結果導向型,中間怎么實現的不關心,對它進行改進的一個有趣方向是GAN的運用。

2.3 特征匹配的知識蒸餾框架

結果導向型的知識蒸餾框架的具體細節是難以控制的,會讓訓練變得不穩定且緩慢。一種更直觀的方式是將teacher模型和student模型的特征進行約束,從而保證student模型確實繼承了teacher模型的知識,其中一個典型代表就是FitNets[3],FitNets將比較淺而寬的Teacher模型的知識遷移到更窄更深的Student模型上,框架如下:

FitNets背后的思想是,用網絡的中間層的特征進行匹配,不僅僅是在輸出端。

它的訓練包含了兩個階段:

第一階段就是根據Teacher模型的損失來指導預訓練Student模型。記Teacher網絡的某一中間層的權值Wt為Whint,意為指導的意思。Student網絡的某一中間層的權值Ws為Wguided,即被指導的意思,在訓練之初Student網絡進行隨機初始化。

我們需要學習一個映射函數Wr使得Wguided的維度匹配Whint,得到Ws',并最小化兩者網絡輸出的MSE差異作為損失,如下:

第二個訓練階段,就是對整個網絡進行知識蒸餾訓練,與上述Hinton等人提出的策略一致。

不過FitNet直接將特征值進行了匹配,先驗約束太強,有的框架對激活值進行了歸一化[4]。

基于特征空間進行匹配的方法其實是知識蒸餾的主流,類似的方法非常多,包括注意力機制的使用[5],類似于風格遷移算法的特征匹配[6]等。

3 知識蒸餾算法的展望

上一節我們介紹了知識蒸餾的基本方法,當然知識蒸餾還有非常多有意思的研究方向,這里我們介紹其中幾個。

3.1 不壓縮模型

機器學習模型要解決的問題如下,其中y是預測值,x是輸入,L是優化目標,θ1是優化參數。

因為深度學習模型沒有解析解,往往無法得到最優解,我們經常會通過添加一些正則項來促使模型達到更好的性能。

Born Again Neural Networks[7]框架思想是通過增加同樣的模型架構,并且重新進行優化,以增加一個模型為例,要解決的問題如下:

具體的流程就是:

(1) 訓練一個教師模型使其收斂到較好的局部值。

(2) 對與教師模型結構相同的學生模型進行初始化,其優化目標包含兩部分,一部分是要匹配教師模型的輸出分布,比如采用KL散度,另一部分就是與教師模型訓練時同樣的目標,即數據集的預測真值。

然后通過下面這樣的流程,一步一步往下傳,所以被形象地命名為“born again”。

類似的框架還有Net2Net,network morphism等。

3.2 去掉teacher模型

一般知識蒸餾框架都需要包括一個Teacher模型和一個Student模型,而Deep mutual learning[8]則沒有Teacher模型,它通過多個小模型進行協同訓練,框架示意圖如下。

Deep mutual learning在訓練的過程中讓兩個學生網絡相互學習,每一個網絡都有兩個損失。一個是任務本身的損失,另外一個就是KL散度。由于KL散度是非對稱的,所以兩個網絡的散度會不同。

相比單獨訓練,每一個模型可以取得更高的精度。值得注意的是,就算是兩個結構完全一樣的模型,也會學習到不同的特征表達。

3.3 與其他框架的結合

在進行知識蒸餾時,我們通常假設teacher模型有更好的性能,而student模型是一個壓縮版的模型,這不就是模型壓縮嗎?與模型剪枝,量化前后的模型對比是一樣的。所以知識蒸餾也被用于與相關技術進行結合,apprentice[9]框架是一個代表。

網絡結構如上圖所示,Teacher模型是一個全精度模型,Apprentice模型是一個低精度模型。

當然模型蒸餾還有一些其他方向,以及對其中每一個方向的深入解讀。對模型蒸餾感興趣的同學,歡迎到有三AI知識星球的網絡結構1000變-模型壓縮-模型蒸餾板塊進行學習,數十期內容定能滿足你的求知欲。

掃碼即可加入,了解有三AI知識星球詳情請閱讀以下文章。

【雜談】有三AI知識星球一周年了!為什么公眾號+星球才是完整的?

參考文獻

[1] Hinton G, Vinyals O, Dean J. Distilling the knowledge in a neural network[J]. arXiv preprint arXiv:1503.02531, 2015.

[2] Ravi S. ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections[J]. arXiv: Learning, 2017.

[3] Romero A, Ballas N, Kahou S E, et al. Fitnets: Hints for thin deep nets[J]. arXiv preprint arXiv:1412.6550, 2014.

[4] Huang Z, Wang N. Like What You Like: Knowledge Distill via Neuron Selectivity Transfer.[J]. arXiv: Computer Vision and Pattern Recognition, 2017.

[5] Zagoruyko S, Komodakis N. Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer[C]. international conference on learning representations, 2017.

[6] Yim J, Joo D, Bae J, et al. A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning[C]. computer vision and pattern recognition, 2017: 7130-7138.

[7] Furlanello T, Lipton Z C, Tschannen M, et al. Born Again Neural Networks[C]. international conference on machine learning, 2018: 1602-1611.

[8] Zhang Y, Xiang T, Hospedales T M, et al. Deep Mutual Learning[C]. computer vision and pattern recognition, 2018: 4320-4328.

[9] Mishra A K, Marr D. Apprentice: Using Knowledge Distillation Techniques To Improve Low-Precision Network Accuracy[C]. international conference on learning representations, 2018.

總結

本次我們總結了模型蒸餾的核心技術,并對其重要方向進行了展望,推薦了相關的學習資源,下一期我們將介紹AutoML在模型優化上的進展。

有三AI秋季劃-模型優化組

如果你想系統性地學習模型優化相關的理論和實踐,并獲得持續的指導,歡迎加入有三AI秋季劃-模型優化組,系統性地學習數據使用,模型使用和調參,模型性能分析,緊湊模型設計,模型剪枝,模型量化,模型部署,NAS等內容。

模型優化組介紹和往期的一些學習內容總結請參考閱讀以下文章:

【通知】如何讓你的2020年秋招CV項目經歷更加硬核,可深入學習有三秋季劃4大領域32個方向

【總結】有三AI秋季劃模型優化組3月直播講了哪些內容,為什么每一個從事深度學習的同學都應該掌握模型優化的內容

轉載文章請后臺聯系

侵權必究

往期精選

  • 【完結】深度學習CV算法工程師從入門到初級面試有多遠,大概是25篇文章的距離

  • 【完結】優秀的深度學習從業者都有哪些優秀的習慣

  • 【完結】給新手的12大深度學習開源框架快速入門項目

  • 【完結】總結12大CNN主流模型架構設計思想

  • 【知乎直播】千奇百怪的CNN網絡架構等你來

  • 【AI不惑境】數據壓榨有多狠,人工智能就有多成功

  • 【AI不惑境】網絡深度對深度學習模型性能有什么影響?

  • 【AI不惑境】網絡的寬度如何影響深度學習模型的性能?

  • 【AI不惑境】學習率和batchsize如何影響模型的性能?

  • 【AI不惑境】殘差網絡的前世今生與原理

  • 【AI不惑境】移動端高效網絡,卷積拆分和分組的精髓

  • 【AI不惑境】深度學習中的多尺度模型設計

  • 【AI不惑境】計算機視覺中注意力機制原理及其模型發展和應用

  • 【AI不惑境】模型剪枝技術原理及其發展現狀和展望

  • 【AI不惑境】模型量化技術原理及其發展現狀和展望

總結

以上是生活随笔為你收集整理的【AI不惑境】模型压缩中知识蒸馏技术原理及其发展现状和展望的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。