雜談|當前知識蒸餾與遷移學習有哪些可用的開源工具?

2020-12-15 AI科技大本營

作者&編輯 | 言有三

【導讀】知識蒸餾與遷移學習不僅僅屬於模型優化的重要技術之一,也是提升模型跨領域泛化能力的重要技術,那麼當前有哪些可用的知識蒸餾和遷移學習開源工具呢?

1 PaddleSlim

PaddleSlim是百度提出的模型優化工具,包含在PaddlePaddle框架中,支持若干知識蒸餾算法,可以在teacher網絡和student網絡任意層添加組合loss,包括FSP loss,L2 loss,softmax with cross-entropy loss等。

https://github.com/PaddlePaddle/models/tree/develop/PaddleSlim

2 Distiller

Distiller是Intel基於Pytorch開源的模型優化工具,支持Hinton等人提出的Knowledge distillation算法。

https://github.com/NervanaSystems/distiller

3 MxNet

MxNet中集成了Bayesian Dark Knowledge方法的復現,在推薦系統中有一定作用。

https://github.com/apache/incubator-mxnet/tree/master/example/bayesian-methods

4 非官方Pytorch項目

Knowledge-Distillation-Zoo是GitHub用戶AberHu蒸餾的知識蒸餾項目,支持fitnet等多個模型。

https://github.com/AberHu/Knowledge-Distillation-Zoo

deep-transfer-learning是GitHub用戶easezyc整理的遷移學習項目。

https://github.com/easezyc/deep-transfer-learning

5 一些經典模型實現

Hinton等人在2015年提出了經典的知識蒸餾框架Knowledge distillation,下面是各大框架的復現。

[1] Keras

https://github.com/TropComplique/knowledge-distillation-keras

[2] Tensorflowhttps://github.com/DushyantaDhyani/kdtf

[3] Caffe

https://github.com/wentianli/knowledge_distillation_caffe

更多的一些經典算法如下,留待讀者自己學習,咱們就不沉迷於收藏了。

[1] Relational Knowledge Distillation算法

https://github.com/lenscloth/RKD

[2] Teacher-Assistant-Knowledge-Distillation算法

https://github.com/imirzadeh/Teacher-Assistant-Knowledge-Distillation

[3] Contrastive Representation Distillation算法

https://github.com/HobbitLong/RepDistiller

[4] Zero-shot_Knowledge_Distillation算法

https://github.com/sseung0703/Zero-shot_Knowledge_Distillation

[5] net2net算法

https://github.com/soumith/net2net.torch

[6] fitnet算法

https://github.com/adri-romsor/FitNets

6 開源綜述資料

接下來再給大家介紹兩個綜述性質的開源資料。

第一個是知識蒸餾綜述項目,包括相關的論文合集,也包括一些開源算法的實現。

https://github.com/dkozlov/awesome-knowledge-distillation

第二個是遷移學習綜述項目,包括相關的論文合集,開原始碼。

https://github.com/jindongwang/transferlearning

其他類似的還有https://github.com/artix41/awesome-transfer-learning,https://github.com/AI-ON/Multitask-and-Transfer-Learning,資料收集愛好者不妨關注。

7 更多理論學習

如果想要系統性學習模型優化相關的理論,可以移步有三AI知識星球 -> 網絡結構1000變 -> 模型壓縮板塊 -> 模型剪枝,量化與蒸餾板塊,知識蒸餾與遷移學習的一些解讀案例如下:

總結

知識蒸餾與遷移學習相比於大量數據進行監督學習的方式,更符合人類學習的特點,在工業界有著實際落地需求,學術界有很重要的研究意義。

(*本文為AI科技大本營轉載文章,轉載請聯繫原作者)

所有CSDN 用戶都可參與投票活動

加入福利群,每周還有精選學習資料、技術圖書等福利發送

相關焦點

  • 阿里雲開源的業界首個面向NLP場景深度遷移學習框架EasyTransfer
    面向自然語言處理場景的深度遷移學習在現實場景裡有巨大的需求,因為大量新的領域不斷湧現,傳統的機器學習需要對每個領域都積累大量訓練數據,這將會耗費大量標註的人力與物力。深度遷移學習技術可以將源領域學到的知識遷移到新的領域的任務,進而大大減少標註的資源。
  • 阿里雲開源EasyTransfer:業界首個面向NLP場景深度遷移學習框架
    面向自然語言處理場景的深度遷移學習在現實場景裡有巨大的需求,因為大量新的領域不斷湧現,傳統的機器學習需要對每個領域都積累大量訓練數據,這將會耗費大量標註的人力與物力。深度遷移學習技術可以將源領域學到的知識遷移到新的領域的任務,進而大大減少標註的資源。
  • 深度學習中的知識蒸餾技術(上)
    因此,可以利用大模型學習到的知識去指導小模型訓練,使得小模型具有與大模型相當的性能,但是參數數量大幅降低,從而實現模型壓縮與加速,這就是知識蒸餾與遷移學習在模型優化中的應用。因此,在工業界中對知識蒸餾和遷移學習也有著非常強烈的需求。
  • 說說知識蒸餾與增量學習那些事兒
    本期AI論道想跟大家分享幾篇關於知識蒸餾和增量學習相結合的論文,按發表先後順序對領域發展脈絡進行梳理和介紹,希望對想深入了解和研究增量學習的小夥伴們有幫助和借鑑意義。知識蒸餾通過引入教師網絡(Teacher network:複雜度高、但推理性能優越)以誘導學生網絡(Student network:複雜度低、簡單)的訓練,實現知識遷移(Knowledge transfer)。在訓練學生網絡的時候,將訓練目標由傳統的ground truth的標籤更新為所謂的soft target,即已經訓練好的教師網絡的softmax層的輸出概率。
  • 【知識蒸餾】知識蒸餾(Knowledge Distillation)簡述(一)
    ,主要是現在的深度學習模型越來越大,例如BERT。知識蒸餾被廣泛的用於模型壓縮和遷移學習當中。開山之作應該是」Distilling the Knowledge in a Neural Network「。這篇文章中,作者的motivation是找到一種方法,把多個模型的知識提煉給單個模型。文章的標題是Distilling the Knowledge in a Neural Network,那麼說明是神經網絡的知識呢?
  • 阿里開源混沌工程工具 ChaosBlade
    近日,阿里開源了混沌工程工具 ChaosBlade。
  • 內存用量1/20,速度加快80倍,QQ提全新BERT蒸餾框架,未來將開源
    相關代碼和更多結果將在近期開源。BERT 已經被驗證是解決口語化短文本語義量化的極為有效的工具,對於口語化人機互動系統如 FAQ、語音助手等產品意義重大。但受限於模型的高複雜度和高計算量,其產業線上應用進展不如預期,尤其很難滿足像 QQ、QQ 空間等億級用戶量產品對性能的需求。
  • 【模型蒸餾】從入門到放棄:深度學習中的模型蒸餾技術
    模型蒸餾在自然語言處理、計算機視覺和語音識別等領域均有廣泛研究,這篇閱讀筆記只包括與計算機視覺相關的部分論文。模型壓縮和加速四個技術是設計高效小型網絡、剪枝、量化和蒸餾[2]。蒸餾,就是知識蒸餾,將教師網絡(teacher network)的知識遷移到學生網絡(student network)上,使得學生網絡的性能表現如教師網絡一般。
  • 【經典簡讀】知識蒸餾(Knowledge Distillation) 經典之作
    在本文中,我們將從背景和動機講起,然後著重介紹「知識蒸餾」的方法,最後我會討論「溫度「這個名詞:本文的內容由以下幾個部分組成介紹知識蒸餾的理論依據知識蒸餾的具體方法通用的知識蒸餾方法一種特殊情形: 直接match logits關於"溫度"的討論參考1. 介紹1.1.
  • 提出蒸餾新思路,可遷移至小模型,性能精度超越有監督
    導語:SimCLR將自監督學習推向了高潮,引起了學術界的大轟動。現在SimCLRv2來了,那麼它有帶來了哪些新的思想呢?又有哪些值得期待的點呢?我們先來對SimCLRv2進行一番簡單的解讀分析。文末附論文下載方式。
  • 企業的業務遷移上雲有哪些方法步驟 遷移過程中需要注意哪些問題
    從本地環境遷移到雲端,不是一件容易的事情,需要涉及很多方面。伺服器遷移、資料庫遷移、應用遷移,企業的業務遷移上雲有哪些方法步驟?在遷移過程中,需要注意哪些問題?在本文中將會找到答案。本地數據中心的網絡冗餘,高可用方案,需要精通高級網絡的工程師來進行配置和維護,網絡上雲之後,所有的這些都由 AWS 來進行維護,企業的維護人員具備簡單的網絡知識即可維護,降低了網絡管理的門檻,也為企業節省開支。
  • 以及如何使用開源網絡情報工具?
    有針對性的挖掘目標情報,儘管有多種方法可以秘密進行,但情報收集通常始於從網際網路公開資源中抓取信息,這些信息統稱為開源網絡情報或OSINT。由於社交媒體和在線活動的盛行,現在有大量合法可收集的OSINT開源網絡情報可用,這可以為情報收集者提供成功描述組織或個人所需的一切信息。
  • 模型壓縮中知識蒸餾技術原理及其發展現狀和展望
    知識蒸餾是非常經典的基於遷移學習的模型壓縮技術,在學術界的研究非常活躍,工業界也有許多的應用和較大的潛力,本文給大家梳理知識蒸餾的核心技術,發展現狀,未來展望以及學習資源推薦。1.1 什麼是知識蒸餾一般地,大模型往往是單個複雜網絡或者是若干網絡的集合,擁有良好的性能和泛化能力,而小模型因為網絡規模較小,表達能力有限。
  • 刷新CoQA榜單:基於對抗訓練和知識蒸餾的機器閱讀理解方案解析
    在輸入端,由於CoQA的數據集是對話式的,每個問題都依賴於歷史對話,因此在訓練過程中,我們將對話歷史拼接到當前問題之前,問題和答案之間用分隔符分開,組成當前輪次的Query,然後將其與Context拼接,作為模型的輸入。 在輸出端,CoQA數據集的答案有可能是自由文本、Yes、No和Unk。
  • ACL 2021 | 結構化知識蒸餾方法
    二、背景知識知識蒸餾知識蒸餾框架通常包含一個或多個大型的已訓練的教師模型和小型的學生模型,訓練時知識蒸餾會鼓勵學生模型的預測儘量接近教師模型的預測,一般來說就是將兩者的交叉熵作為目標函數。我們希望能在結構預測模型的知識蒸餾中,讓學生模型學習到教師模型對完整結構的預測,亦即結構知識蒸餾(Structrual Knowledge Distillation)。
  • 乾貨 | 當前流行的教育數據挖掘與學習分析工具
    它有幾個優點:在構建各種數據可視化方面具有相當大的靈活性,不需要安裝,支持代碼重用,並且是免費開源的。然而在教育研究目的採用方面存在著挑戰。作為一種技術,D3.js需要廣泛的編程知識,並且存在兼容性問題,以及對較大數據集的一些性能限制。最後,它不提供對可視化用戶隱藏數據的任何方法,需要數據預處理來確保隱私和數據安全。
  • Knowledge Distillation(知識蒸餾)Review--20篇paper回顧
    大多數方法隨機選擇intermediate layers,可解釋性不夠特徵的蒸餾位置手動選擇或基於任務選擇Applications-NLP-BERT因為Bert本身參數量大,當前對Bert瘦身有三個思路,分別是Distillation(蒸餾)、Quantization(量化)和Pruning(剪枝)。其中蒸餾效果最好。
  • LRC-BERT:對比學習潛在語義知識蒸餾|AAAI 2021
    同時為進一步讓LRC-BERT更加有效的學習,我們設計了兩階段訓練過程。最後LRC-BERT在word vector embedding layer引入梯度擾動技術提升模型魯棒性。*提出了對比學習框架進行知識蒸餾,在此基礎上提出COS-NCE LOSS可以有效的捕捉潛在語義信息。*梯度擾動技術首次引入到知識蒸餾中,在實驗中驗證其能夠提升模型的魯棒性。
  • 無需tricks,知識蒸餾提升ResNet50在ImageNet上準確度至80%+
    知識蒸餾是將一個已經訓練好的網絡遷移到另外一個新網絡,常採用teacher-student學習策略,已經被廣泛應用在模型壓縮和遷移學習中。MEAL V2主要的思路是將多個模型的集成效果通過知識蒸餾遷移到一個單一網絡中,整個設計非常簡單,只包括三個重要的部分:teacher模型集成,KL散度loss以及一個判別器。相比其它方法,不需要特殊的trick:MEAL V2是MEAL方法的升級版,相比之下V2版本設計上更簡單,效果也更好:
  • NLP領域中的遷移學習現狀
    圖2:遷移學習過程的說明在過去一年多的時間裡,以預訓練的語言模型形式進行的遷移學習已經在NLP領域中普及,為許多不同的任務帶來了新的最好成績。然在當前的自然語言處理領域中,普遍存在著不同類型的遷移學習。它們可以按照三個維度進行分類:1、源設定和目標設定是否處理相同的任務;2、源域和目標域的性質;3、學習任務的順序。這樣就可以把各種遷移學習分為圖中的幾類。