認識深度學習中的知識蒸餾_第1頁
認識深度學習中的知識蒸餾_第2頁
認識深度學習中的知識蒸餾_第3頁
認識深度學習中的知識蒸餾_第4頁
認識深度學習中的知識蒸餾_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

一分鐘帶你認識深度學習中的知識蒸餾【摘要】知識蒸餡(knowledgedistillation)是模型壓縮的一種常用的方法,不同于模型壓縮中的剪枝和量化,知識蒸餡是通過構建一個輕量化的小模型,利用性能更好的大模型的監督信息,來訓練這個小模型,以期達到更好的性能和精度。本文將深入淺出的介紹知識蒸餡的概念和原理,最后通過一個實際的上手案例,來指導用戶使用知識蒸偶。一、知識蒸餾入門1.1概念介紹知識蒸偶(knowledgedistillation)是模型壓縮的一種常用的方法,不同于模型壓縮中的剪枝和量化,知識蒸餡是通過構建一個輕量化的小模型,利用性能更好的大模型的監督信息,來訓練這個小模型,以期達到更好的性能和精度。最早是由Hinton在2015年首次提出并應用在分類任務上面,這個大模型我們稱之為teacher(教師模型),小模型我們稱之為Student(學生模型)。來自Teacher模型輸出的監督信息稱之為knowledge(知識),而student學習遷移來自teacher的監督信息的過程稱之為Distillation(蒸偶)。1.2知識蒸餾的種類圖1知識蒸餾的種類圖1知識蒸餾的種類1、離線蒸餾離線蒸餾方式即為傳統的知識蒸餾,如上圖(a)。用戶需要在已知數據集上面提前訓練好一個teacher模型,然后在對student模型進行訓練的時候,利用所獲取的teacher模型進行監督訓練來達到蒸餾的目的,而且這個teacher的訓練精度要比student模型精度要高,差值越大,蒸餾效果也就越明顯。一般來講,teacher的模型參數在蒸餾訓練的過程中保持不變,達到訓練student模型的目的。蒸餾的損失函數distillationloss計算teacher和student之前輸出預測值的差別,和student的loss加在一起作為整個訓練loss,來進行梯度更新,最終得到一個更高性能和精度的student模型。2、半監督蒸餾半監督方式的蒸餾利用了teacher模型的預測信息作為標簽,來對student網絡進行監督學習,如上圖(b)。那么不同于傳統離線蒸餾的方式,在對student模型訓練之前,先輸入部分的未標記的數據,利用teacher網絡輸出標簽作為監督信息再輸入到student網絡中,來完成蒸餾過程,這樣就可以使用更少標注量的數據集,達到提升模型精度的目的。3、自監督蒸餾自監督蒸餾相比于傳統的離線蒸餾的方式是不需要提前訓練一個teacher網絡模型,而是student網絡本身的訓練完成一個蒸餾過程,如上圖(c)。具體實現方式有多種,例如先開始訓練student模型,在整個訓練過程的最后幾個epoch的時候,利用前面訓練的student作為監督模型,在剩下的epoch中,對模型進行蒸餾。這樣做的好處是不需要提前訓練好teacher模型,就可以變訓練邊蒸餾,節省整個蒸餾過程的訓練時間。1.3知識蒸餡的功能1、提升模型精度用戶如果對目前的網絡模型A的精度不是很滿意,那么可以先訓練一個更高精度的teacher模型B(通常參數量更多,時延更大),然后用這個訓練好的teacher模型B對student模型A進行知識蒸餾,得到一個更高精度的模型。2、降低模型時延,壓縮網絡參數用戶如果對目前的網絡模型A的時延不滿意,可以先找到一個時延更低,參數量更小的模型B,通常來講,這種模型精度也會比較低,然后通過訓練一個更高精度的teacher模型C來對這個參數量小的模型B進行知識蒸餾,使得該模型B的精度接近最原始的模型A,從而達到降低時延的目的。3、圖片標簽之間的域遷移用戶使用狗和貓的數據集訓練了一個teacher模型A,使用香蕉和蘋果訓練了一個teacher模型B,那么就可以用這兩個模型同時蒸餾出一個可以識別狗,貓,香蕉以及蘋果的模型,將兩個不同與的數據集進行集成和遷移。studantteacherA圖2圖像域遷移訓練4、降低標注量studantteacherA圖2圖像域遷移訓練該功能可以通過半監督的蒸餾方式來實現,用戶利用訓練好的teacher網絡模型來對未標注的數據集進行蒸餾,達到降低標注量的目的。1.4知識蒸餡的原理

圖3知識蒸餾原理介紹一般使用蒸餾的時候,往往會找一個參數量更小的student網絡,那么相比于teacher來說,這個輕量級的網絡不能很好的學習到數據集之前隱藏的潛在關系,如上圖所示,相比于onehot的輸出,teacher網絡是將輸出的logits進行了softmax,更加平滑的處理了標簽,即將數字1輸出成了0.6(對1的預測)和0.4(對0的預測)然后輸入到student網絡中,相比于1來說,這種softmax含有更多的信息。好模型的目標不是擬合訓練數據,而是學習如何泛化到新的數據。所以蒸餾的目標是讓student學習到teacher的泛化能力,理論上得到的結果會比單純擬合訓練數據的student要好。另外,對于分類任務,如果softtargets的熵比hardtargets高,那顯然student會學習到更多的信息。最終student模型學習的是teacher模型的泛化能力,而不是"過擬合訓練數據”二、動手實踐知識蒸餡ModelArts模型市場中的efficientDet目標檢測算法目前已經支持知識蒸餾,用戶可以通過下面的一個案例,來入門和熟悉知識蒸餾在檢測網絡中的使用流程。2.1準備數據集數據集使用kaggle公開的ImagesofCanineCoccidiosisParasite的識別任務,下載地址:/kvinicki/canine-coccidiosiso用戶下載數據集之后,發布到ModelArts的數據集管理中,同時進行數據集切分,默認按照8:2的比例切分成train

和eval兩種。2.2訂閱市場算法efficientDet進到模型市場算法界面,找到efficientDet算法,點擊“訂閱”按鈕抽+A.cP-U?物體檢Sil-EffkientDet或GPuUlSft抽+A.cP-U?物體檢Sil-EffkientDet或GPuUlSft史戒即.看PUIMAl市埼ModeiHubIpylhE■已JIEfit在<€存呈耳然后到算法管理界面,找到已經訂閱的efficientDet,點擊同步,就可以進行算法訓練

華為云技制臺MOdelArlS算球理活動可用時間(S)M解習v*SH3EffiW^LO¥J_C5FDarknet53(beteZJ身矣空w>?<?^^aYCiLCv4_C5FDarknEt53(b^ia)4/3C元澎3曷y熟M桂測YOL□網CSPDarkr;eL5310-10都善A7市有工竺罔7至燎分美頃-Mind卯dir也eta)v華為云技制臺MOdelArlS算球理活動可用時間(S)M解習v*SH3EffiW^LO¥J_C5FDarknet53(beteZJ身矣空w>?<?^^aYCiLCv4_C5FDarknEt53(b^ia)4/3C元澎3曷y熟M桂測YOL□網CSPDarkr;eL5310-10都善A7市有工竺罔7至燎分美頃-Mind卯dir也eta)vtrci-retina7MEZHA中皿本溪S;申晤耕EtfkiEntDet10361035J167273995胡百巨曲兄心訂卸D舟燈MoiielArh華為云社區圖5舟燈MoiielArh華為云社區2.3訓練student網絡模型起一個efficientDet的訓練作業,model_name=efficientdet-d0,數據集選用2.1發布的已經切分好的數據集,選擇好輸出路徑,點擊創建,具體創建參數如下:華為云社E圖6創建student網絡的訓練作業得到訓練的模型精度信息在評估結果界面,如下:圖7student模型訓練結果華為云社E得到訓練的模型精度信息在評估結果界面,如下:圖7student模型訓練結果可以看到student的模型精度在0.8473。2.4訓練teacher網絡模型下一步就是訓練一個teacher模型,按照efficientDet文檔的描述,這里選擇efficientdet-d3,同時需要添加一個參數,表明該訓練作業生成的模型是用來作為知識蒸餾的teacher模型,新起一個訓練作業,具體參數如下:

圖8teacher模型訓練作業參數得到的模型精度在評估結果一欄,具體如下:配JHUSasKB閔■分在5里?<LIMS0ft??蝦博亡心-?至丑*.部三Tsr胃*j-IE^WSEEftLvAsjftS?^):^..■iSiEJWHH-ijt嫡日嶼N#JhHT—a:.|fipt=tt-KlSi?r相GETknil±?CH」fGJbU.DeU竟E!T■任戲海:網rF3三*W*W壬KWiliEfMft用畛加株■WEU網m**=*"J<F*—■十.U圖9teacher模型訓練結果可以看到teacher的模型精度在0.875。2.5使用知識蒸餾提升student模型精度有了teacher網絡,下一步就是進行知識蒸餡了,按照官方文檔,需要填寫teachermodelurl,具體填寫的內容就是2.4訓練輸出路徑下面的model目錄,注意需要選到model目錄的那一層級,同時需要添加參數use_offline_kd=True,具體模型參數如下所示:

圖10采用知識蒸餾的student模型訓練作業參數得到模型精度在評估結果一欄,具體如下:配R13Q日可有#白用師神.MM$ISlL^an-SQTlJT*,-9±iSfflM^i-i-:iX:l^-.fia+rO'iflliWl.^09-UM--JI■即堰ff生:社7唯片—】15ls星技垣《m飾24#土*■??3血沁空KH=fiW?L量出耳心.迎3耳由蜘11心,厘F伽HPgiZiW掌丸長比iS圖11使用知識蒸餾之后的student模型訓練結果可以看到經過知識蒸餾之后的student的模型精度提升到了0.863,精度相比于之前的student網絡提升了1.6%百分點。2.6在線推理部署訓練之后的模型就可以進行模型部署了,具體點擊“創建模型”cJEHl^lfflll-KtSZ■礁H.gng*€+M部卻國?ME"C甲MMK邑]郎,Ifi£tS9日W(TeMfEfiEftL-JKifthiMMi!^AJ<AMJE-:■言C;W^liE4fr]|蜘斷成1M卒W^bYUmITF-2l>-b4TtfdJb£Flt3mon*虹"Mra初.■hWI.HMiMUeKbH.uirLmrjui.打,tjamjWAu半*云電:了圖12創建模型界面會自動讀取模型訓練的保存路徑,點擊創建:圖13導入模型模型部署成功之后,點擊創建在線服務:圖14部署在線服務部署成功就可以進行在線預測了:MlstSrt時標£1£13SIFHQECKCirtfi*cou:l!iia"rCKCl矣'華為云扭區圖15模型推理結果展示三、知識蒸餾目前的應用領域目前知識蒸偶的算法已經廣泛應用到圖像語義識別,目標檢測等場景中,并且針對不同的研究場景,蒸餡方法都做了部分的定制化修改,同時,在行人檢測,人臉識別,姿態檢測,圖像域遷移,視頻檢測等方面,知識蒸餡也是作為一種提升模型性能和精度的重要方法,隨著深度學習的發展,這種技術也會更加的成熟和穩定。參考文獻:DataDistillation:Tow

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論