色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深度學習:知識蒸餾的全過程

深度學習自然語言處理 ? 來源:深度學習自然語言處理 ? 作者:LinT ? 2021-01-07 14:36 ? 次閱讀

知識蒸餾的核心思想是通過遷移知識,從而通過訓練好的大模型得到更加適合推理的小模型。本文作者介紹了知識蒸餾的全過程,以及引用Hinton等人的實驗結果解釋說明,并提出了知識蒸餾的一些延伸工作方向。

0. 寫在前面

有人說過:“神經網絡用剩的logits不要扔,沾上雞蛋液,裹上面包糠...” 這兩天對知識蒸餾(Knowledge Distillation)萌生了一點興趣,正好寫一篇文章分享一下。這篇文章姑且算是一篇小科普。

1. 從模型壓縮開始

各種模型算法,最終目的都是要為某個應用服務。在買賣中,我們需要控制收入和支出。類似地,在工業應用中,除了要求模型要有好的預測(收入)以外,往往還希望它的「支出」要足夠小。具體來說,我們一般希望部署到應用中的模型使用較少的計算資源(存儲空間、計算單元等),產生較低的時延。

深度學習的背景下,為了達到更好的預測,常常會有兩種方案:1. 使用過參數化的深度神經網絡,這類網絡學習能力非常強,因此往往加上一定的正則化策略(如dropout);2. 集成模型(ensemble),將許多弱的模型集成起來,往往可以實現較好的預測。這兩種方案無疑都有較大的「支出」,需要的計算量和計算資源很大,對部署非常不利。這也就是模型壓縮的動機:我們希望有一個規模較小的模型,能達到和大模型一樣或相當的結果。當然,從頭訓練一個小模型,從經驗上看是很難達到上述效果的,也許我們能先訓練一個大而強的模型,然后將其包含的知識轉移給小的模型呢?如何做到呢?

* 下文統一將要訓練的小模型稱為新模型,將以及訓練的大模型稱為原模型。

Rich Caruana等人在[1]中指出,可以讓新模型近似(approximate)原模型(模型即函數)。注意到,在機器學習中,我們常常假定輸入到輸出有一個潛在的函數關系,這個函數是未知的:從頭學習一個新模型就是從有限的數據中近似一個未知的函數。如果讓新模型近似原模型,因為原模型的函數是已知的,我們可以使用很多非訓練集內的偽數據來訓練新模型,這顯然要更可行。

這樣,原來我們需要讓新模型的softmax分布與真實標簽匹配,現在只需要讓新模型與原模型在給定輸入下的softmax分布匹配了。直觀來看,后者比前者具有這樣一個優勢:經過訓練后的原模型,其softmax分布包含有一定的知識——真實標簽只能告訴我們,某個圖像樣本是一輛寶馬,不是一輛垃圾車,也不是一顆蘿卜;而經過訓練的softmax可能會告訴我們,它最可能是一輛寶馬,不大可能是一輛垃圾車,但絕不可能是一顆蘿卜[2]。

2. 為什么叫「蒸餾」?

接續前面的討論,我們的目標是讓新模型與原模型的softmax輸出的分布充分接近。直接這樣做是有問題的:在一般的softmax函數中,自然指數 先拉大logits之間的差距,然后作歸一化,最終得到的分布是一個arg max的近似 (參考我之前的文章:淺談Softmax函數),其輸出是一個接近one-hot的向量,其中一個值很大,其他的都很小。這種情況下,前面說到的「可能是垃圾車,但絕不是蘿卜」這種知識的體現是非常有限的。相較類似one-hot這樣的硬性輸出,我們更希望輸出更「軟」一些。

一種方法是直接比較logits來避免這個問題。具體地,對于每一條數據,記原模型產生的某個logits是 ,新模型產生的logits是 ,我們需要最小化

文獻[2]提出了更通用的一種做法。考慮一個廣義的softmax函數

其中 是溫度,這是從統計力學中的玻爾茲曼分布中借用的概念。容易證明,當溫度 趨向于0時,softmax輸出將收斂為一個one-hot向量(證明可以參考我之前的文章:淺談Softmax函數,將 替換為 即可);溫度 趨向于無窮時,softmax的輸出則更「軟」。因此,在訓練新模型的時候,可以使用較高的 使得softmax產生的分布足夠軟,這時讓新模型的softmax輸出近似原模型;在訓練結束以后再使用正常的溫度 來預測。具體地,在訓練時我們需要最小化兩個分布的交叉熵(Cross-entropy),記新模型利用公式 產生的分布是 ,原模型產生的分布是 ,則我們需要最小化

在化學中,蒸餾是一個有效的分離沸點不同的組分的方法,大致步驟是先升溫使低沸點的組分汽化,然后降溫冷凝,達到分離出目標物質的目的。在前面提到的這個過程中,我們先讓溫度升高,然后在測試階段恢復「低溫」,從而將原模型中的知識提取出來,因此將其稱為是蒸餾,實在是妙。

當然,如果轉移時使用的是有標簽的數據,那么也可以將標簽與新模型softmax分布的交叉熵加入到損失函數中去。這里需要將式 乘上一個 ,這是為了讓損失函數的兩項的梯度大致在一個數量級上(參考公式 ),實驗表明這將大大改善新模型的表現(考慮到加入了更多的監督信號)。

3. 與直接優化logits差異相比

由公式 ,對于交叉熵損失來說,其對于新模型的某個logit 的梯度是

由于 與 是等價無窮小(時**)**,易知,當 充分大時,有

假設所有logits對每個樣本都是零均值化的,即 ,則有

所以,如果:1. 非常大,2. logits對所有樣本都是零均值化的,則知識蒸餾和最小化logits的平方差(公式 )是等價的(因為梯度大致是同一個形式)。實驗表明,溫度 不能取太大,而應該使用某個適中的值,這表明忽略極負的logits對新模型的表現很有幫助(較低的溫度產生的分布比較「硬」,傾向于忽略logits中極小的負值)。

4. 實驗與結論

Hinton等人做了三組實驗,其中兩組都驗證了知識蒸餾方法的有效性。在MNIST數據集上的實驗表明,即便有部分類別的樣本缺失,新模型也可以表現得很不錯,只需要修改相應的偏置項,就可以與原模型表現相當。在語音任務的實驗也表明,蒸餾得到的模型比從頭訓練的模型捕捉了更多數據集中的有效信息,表現僅比集成模型低了0.3個百分點。總體來說知識蒸餾是一個簡單而有效的模型壓縮/訓練方法。這大體上是因為原模型的softmax提供了比one-hot標簽更多的監督信號[3]。

知識蒸餾在后續也有很多延伸工作。在NLP方面比較有名的有Yoon Kim等人的Sequence-Level Knowledge Distillation 等。總的來說,對一些比較臃腫、不便部署的模型,可以將其「知識」轉移到小的模型上。比如,在機器翻譯中,一般的模型需要有較大的容量(capacity)才可能獲得較好的結果;現在非常流行的BERT及其變種,規模都非常大;更不用提,一些情形下我們需要將這些本身就很大的深度模型集成為一個ensemble,這時候,可以用知識蒸餾壓縮出一個較小的、「便宜」的模型。

文章地址:https://arxiv.org/abs/1606.07947

另外,在多任務的情境下,使用一般的策略訓練一個多任務模型,可能達不到比單任務更好的效果,文獻[3]探索了使用知識蒸餾,利用單任務的模型來指導訓練多任務模型的方法,很值得參考。

補充

鑒于評論區有知友對公式 有疑問,簡單補充一下這里梯度的推導(其實就是交叉熵損失對softmax輸入的梯度,LOL)。

* 這部分有一點繁瑣,能接受公式 的讀者可以跳過。

由鏈式法則,有

注意到 是原模型產生的softmax輸出,與 無關。

后一項 比較容易得到,因為 ,所以

則 是一個 維向量

前一項 是一個 的方陣,分類討論可以得到。參考公式 ,記 ,由除法的求導法則,輸出元素 對輸入 的偏導是

注意上面右側加方框部分,可以進一步展開

這樣,代入公式 ,并且將括號展開,可以得到

左側方框內偏導可以分類討論得到

帶入式 ,得到

所以 形式如下

代入式 ,可得

所以有公式 , 。

參考

[1] Caruana et al., Model Compression, 2006

[2] Hinton et al., Distilling the Knowledge in a Neural Network, 2015

[3] Kevin Clark et al., BAM! Born-Again Multi-Task Networks for Natural Language Understanding

責任編輯:xj

原文標題:知識蒸餾是什么?一份入門隨筆

文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4771

    瀏覽量

    100744
  • 模型
    +關注

    關注

    1

    文章

    3238

    瀏覽量

    48824
  • 深度學習
    +關注

    關注

    73

    文章

    5503

    瀏覽量

    121137

原文標題:知識蒸餾是什么?一份入門隨筆

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    GPU深度學習應用案例

    能力,可以顯著提高圖像識別模型的訓練速度和準確性。例如,在人臉識別、自動駕駛等領域,GPU被廣泛應用于加速深度學習模型的訓練和推理過程。 二、自然語言處理 自然語言處理(NLP)是深度
    的頭像 發表于 10-27 11:13 ?389次閱讀

    AI大模型與深度學習的關系

    人類的學習過程,實現對復雜數據的學習和識別。AI大模型則是指模型的參數數量巨大,需要龐大的計算資源來進行訓練和推理。深度學習算法為AI大模型
    的頭像 發表于 10-23 15:25 ?698次閱讀

    FPGA做深度學習能走多遠?

    并行計算的能力,可以在硬件層面并行處理大量數據。這種并行處理能力使得 FPGA 在執行深度學習算法時速度遠超傳統處理器,能夠提供更低的延遲和更高的吞吐量,從而加速模型訓練和推理過程,滿足實時性要求較高
    發表于 09-27 20:53

    天合光能獲“全過程功率測量控制評估認證”證書

    ? 近期,天合光能成為首批獲得鑒衡認證中心“光伏組件制造商全過程功率測量控制評估認證”證書的光伏企業之一,其卓越的質量控制流程和功率測試穩定性再次獲得業內權威認可,充分展現了天合光能強大的制造能力
    的頭像 發表于 07-15 17:15 ?618次閱讀

    利用Matlab函數實現深度學習算法

    在Matlab中實現深度學習算法是一個復雜但強大的過程,可以應用于各種領域,如圖像識別、自然語言處理、時間序列預測等。這里,我將概述一個基本的流程,包括環境設置、數據準備、模型設計、訓練過程
    的頭像 發表于 07-14 14:21 ?2193次閱讀

    紅豆Cat 1開源 項目四: 從0-1設計一款TCP版本DTU產品的軟硬件全過程

    定義、硬件設計分析、軟件設計分析,并詳細講解單一功能點功能模塊的驗證過程和測試驗證方法。通過學習本內容,初學者可以在 1-2 天內完成一款 Cat 1 DTU產品的開發全過程,快速提升物聯網產品開發的實踐能力。本文也是紅豆開源產
    的頭像 發表于 07-12 14:43 ?334次閱讀
    紅豆Cat 1開源 項目四: 從0-1設計一款TCP版本DTU產品的軟硬件<b class='flag-5'>全過程</b>

    紅豆Cat 1開源 項目三: 從0-1設計一款HTTP版本RTU 支持GNSS 產品的軟硬件全過程

    、硬件設計分析、軟件設計分析,并詳細講解單一功能點功能模塊的驗證過程和測試驗證方法。通過學習本內容,初學者可以在 1-2 天內完成一款 Cat 1 產品的開發全過程,快速提升物聯網產品開發的實踐能力。本文也是紅豆開源產品的一個實
    的頭像 發表于 07-12 14:31 ?313次閱讀
    紅豆Cat 1開源 項目三: 從0-1設計一款HTTP版本RTU 支持GNSS 產品的軟硬件<b class='flag-5'>全過程</b>

    紅豆Cat 1開源 項目二: 從0-1設計一款MQTT版本DTU 支持GNSS 產品的軟硬件全過程

    的軟硬件定義、硬件設計分析、軟件設計分析,并詳細講解單一功能點功能模塊的驗證過程和測試驗證方法。通過學習本內容,初學者可以在 1-2 天內完成一款 Cat 1 DTU產品的開發全過程,快速提升物聯網產品開發的實踐能力。本文也是紅
    的頭像 發表于 07-12 14:30 ?344次閱讀
    紅豆Cat 1開源 項目二: 從0-1設計一款MQTT版本DTU 支持GNSS 產品的軟硬件<b class='flag-5'>全過程</b>

    紅豆Cat 1開源 項目一: 從0-1設計一款TCP版本RTU 支持Modbus+GNSS 產品的軟硬件全過程

    的軟硬件定義、硬件設計分析、軟件設計分析,并詳細講解單一功能點功能模塊的驗證過程和測試驗證方法。通過學習本內容,初學者可以在 1-2 天內完成一款 Cat 1 產品的開發全過程,快速提升物聯網產品開發的實踐能力。本文也是紅豆開源
    的頭像 發表于 07-10 17:36 ?430次閱讀
    紅豆Cat 1開源 項目一: 從0-1設計一款TCP版本RTU 支持Modbus+GNSS 產品的軟硬件<b class='flag-5'>全過程</b>

    解讀PyTorch模型訓練過程

    PyTorch作為一個開源的機器學習庫,以其動態計算圖、易于使用的API和強大的靈活性,在深度學習領域得到了廣泛的應用。本文將深入解讀PyTorch模型訓練的全過程,包括數據準備、模型
    的頭像 發表于 07-03 16:07 ?1059次閱讀

    深度學習的典型模型和訓練過程

    深度學習作為人工智能領域的一個重要分支,近年來在圖像識別、語音識別、自然語言處理等多個領域取得了顯著進展。其核心在于通過構建復雜的神經網絡模型,從大規模數據中自動學習并提取特征,進而實現高效準確的預測和分類。本文將深入解讀
    的頭像 發表于 07-03 16:06 ?1445次閱讀

    深度學習模型訓練過程詳解

    詳細介紹深度學習模型訓練的全過程,包括數據預處理、模型構建、損失函數定義、優化算法選擇、訓練過程以及模型的評估與調優。
    的頭像 發表于 07-01 16:13 ?1260次閱讀

    精準到毫米:H9激光切管機鋁材切割與打孔全過程解析

    H9激光切管機在鋁材切割與打孔的全過程包括設定參數、啟動切割、監控質量、完成取件和檢查效果等。H9激光切管機鋁材切割與打孔的全過程可以詳細解析如下:一、操作準備檢查H9激光切管機各部件是否齊全,并
    的頭像 發表于 06-20 11:14 ?667次閱讀
    精準到毫米:H9激光切管機鋁材切割與打孔<b class='flag-5'>全過程</b>解析

    物聯網與醫療廢物處置全過程電子信息化跟蹤管理系統研究

    與醫療廢物處置全過程電子信息化跟蹤管理系統(以下簡稱“醫廢跟蹤管理系統”)的研發理念、技術構成、功能特性及其在實際應用中的成效,尤其是翼思維醫廢收運管理系統的作業流程。 1. 研發理念與技術構成 醫廢跟蹤管理系統的
    的頭像 發表于 04-01 16:14 ?638次閱讀

    永磁同步電機全速域矢量控制的全過程介紹

    一直都想知道永磁同步電機的轉速從零增加到極限這個過程會發生什么,這篇文章介紹一下永磁同步電機全速域矢量控制的全過程,即電機的轉速從零開始逐漸增加,如何設計電流環電流使得電機輸出恒定轉矩,且保持轉速穩定。
    的頭像 發表于 03-15 09:29 ?1379次閱讀
    永磁同步電機全速域矢量控制的<b class='flag-5'>全過程</b>介紹
    主站蜘蛛池模板: 洲精品无码高潮喷水A片| 日本高清免费在线| 黄网13区| 国产睡熟迷奷系列网站| 国产扒开美女双腿屁股流白浆| WWW国产精品人妻一二三区| 97亚洲狠狠色综合久久久久| 中国少妇内射XXXHD免费| 一本道久在线综合色色| 亚洲无AV在线中文字幕| 一本一本之道高清在线观看| 亚洲精品国产品国语在线试看| 亚洲高清视频一区| 亚洲欧美综合中文字幕| 亚洲熟女丰满多毛XXXXX| 亚洲欧洲日产国码中学| 亚洲综合免费视频| 诱咪视频免费| 91交换论坛| yellow免费观看直播| 打扑克床上视频不用下载免费观看| 超碰国产人人做人人爽| 国产51麻豆二区精品AV视频| 国产白丝精品爽爽久久久久久蜜臀| 国产精品乱码一区二区三| 国产乱色伦影片在线观看| 韩国成人理伦片免费播放| 饥渴的护士自慰被发现| 久久一本岛在免费线观看2020| 美女动态图真人后进式| 欧美亚洲高清国产| 伸到同桌奶罩里捏她胸h| 亚洲高清国产拍精品动图| 在线免费观看国产视频| a色毛片免费视频| 爱做久久久久久| 国产精品第1页| 久久国产精品萌白酱免费| 美女全光末满18勿进| 日本亚欧热亚洲乱色视频| 亚欧日韩毛片在线看免费网站|