一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度學(xué)習(xí):知識(shí)蒸餾的全過程

深度學(xué)習(xí)自然語言處理 ? 來源:深度學(xué)習(xí)自然語言處理 ? 作者:LinT ? 2021-01-07 14:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

0. 寫在前面

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

1. 從模型壓縮開始

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

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

* 下文統(tǒng)一將要訓(xùn)練的小模型稱為新模型,將以及訓(xùn)練的大模型稱為原模型。

Rich Caruana等人在[1]中指出,可以讓新模型近似(approximate)原模型(模型即函數(shù))。注意到,在機(jī)器學(xué)習(xí)中,我們常常假定輸入到輸出有一個(gè)潛在的函數(shù)關(guān)系,這個(gè)函數(shù)是未知的:從頭學(xué)習(xí)一個(gè)新模型就是從有限的數(shù)據(jù)中近似一個(gè)未知的函數(shù)。如果讓新模型近似原模型,因?yàn)樵P偷暮瘮?shù)是已知的,我們可以使用很多非訓(xùn)練集內(nèi)的偽數(shù)據(jù)來訓(xùn)練新模型,這顯然要更可行。

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

2. 為什么叫「蒸餾」?

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

一種方法是直接比較logits來避免這個(gè)問題。具體地,對(duì)于每一條數(shù)據(jù),記原模型產(chǎn)生的某個(gè)logits是 ,新模型產(chǎn)生的logits是 ,我們需要最小化

文獻(xiàn)[2]提出了更通用的一種做法??紤]一個(gè)廣義的softmax函數(shù)

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

在化學(xué)中,蒸餾是一個(gè)有效的分離沸點(diǎn)不同的組分的方法,大致步驟是先升溫使低沸點(diǎn)的組分汽化,然后降溫冷凝,達(dá)到分離出目標(biāo)物質(zhì)的目的。在前面提到的這個(gè)過程中,我們先讓溫度升高,然后在測(cè)試階段恢復(fù)「低溫」,從而將原模型中的知識(shí)提取出來,因此將其稱為是蒸餾,實(shí)在是妙。

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

3. 與直接優(yōu)化logits差異相比

由公式 ,對(duì)于交叉熵?fù)p失來說,其對(duì)于新模型的某個(gè)logit 的梯度是

由于 與 是等價(jià)無窮小(時(shí)**)**,易知,當(dāng) 充分大時(shí),有

假設(shè)所有l(wèi)ogits對(duì)每個(gè)樣本都是零均值化的,即 ,則有

所以,如果:1. 非常大,2. logits對(duì)所有樣本都是零均值化的,則知識(shí)蒸餾和最小化logits的平方差(公式 )是等價(jià)的(因?yàn)樘荻却笾率峭粋€(gè)形式)。實(shí)驗(yàn)表明,溫度 不能取太大,而應(yīng)該使用某個(gè)適中的值,這表明忽略極負(fù)的logits對(duì)新模型的表現(xiàn)很有幫助(較低的溫度產(chǎn)生的分布比較「硬」,傾向于忽略logits中極小的負(fù)值)。

4. 實(shí)驗(yàn)與結(jié)論

Hinton等人做了三組實(shí)驗(yàn),其中兩組都驗(yàn)證了知識(shí)蒸餾方法的有效性。在MNIST數(shù)據(jù)集上的實(shí)驗(yàn)表明,即便有部分類別的樣本缺失,新模型也可以表現(xiàn)得很不錯(cuò),只需要修改相應(yīng)的偏置項(xiàng),就可以與原模型表現(xiàn)相當(dāng)。在語音任務(wù)的實(shí)驗(yàn)也表明,蒸餾得到的模型比從頭訓(xùn)練的模型捕捉了更多數(shù)據(jù)集中的有效信息,表現(xiàn)僅比集成模型低了0.3個(gè)百分點(diǎn)。總體來說知識(shí)蒸餾是一個(gè)簡(jiǎn)單而有效的模型壓縮/訓(xùn)練方法。這大體上是因?yàn)樵P偷膕oftmax提供了比one-hot標(biāo)簽更多的監(jiān)督信號(hào)[3]。

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

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

另外,在多任務(wù)的情境下,使用一般的策略訓(xùn)練一個(gè)多任務(wù)模型,可能達(dá)不到比單任務(wù)更好的效果,文獻(xiàn)[3]探索了使用知識(shí)蒸餾,利用單任務(wù)的模型來指導(dǎo)訓(xùn)練多任務(wù)模型的方法,很值得參考。

補(bǔ)充

鑒于評(píng)論區(qū)有知友對(duì)公式 有疑問,簡(jiǎn)單補(bǔ)充一下這里梯度的推導(dǎo)(其實(shí)就是交叉熵?fù)p失對(duì)softmax輸入的梯度,LOL)。

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

由鏈?zhǔn)椒▌t,有

注意到 是原模型產(chǎn)生的softmax輸出,與 無關(guān)。

后一項(xiàng) 比較容易得到,因?yàn)?,所以

則 是一個(gè) 維向量

前一項(xiàng) 是一個(gè) 的方陣,分類討論可以得到。參考公式 ,記 ,由除法的求導(dǎo)法則,輸出元素 對(duì)輸入 的偏導(dǎo)是

注意上面右側(cè)加方框部分,可以進(jìn)一步展開

這樣,代入公式 ,并且將括號(hào)展開,可以得到

左側(cè)方框內(nèi)偏導(dǎo)可以分類討論得到

帶入式 ,得到

所以 形式如下

代入式 ,可得

所以有公式 , 。

參考

[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

責(zé)任編輯:xj

原文標(biāo)題:知識(shí)蒸餾是什么?一份入門隨筆

文章出處:【微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4814

    瀏覽量

    103608
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3520

    瀏覽量

    50421
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5561

    瀏覽量

    122794

原文標(biāo)題:知識(shí)蒸餾是什么?一份入門隨筆

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式AI技術(shù)之深度學(xué)習(xí):數(shù)據(jù)樣本預(yù)處理過程中使用合適的特征變換對(duì)深度學(xué)習(xí)的意義

    ? 作者:蘇勇Andrew 使用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)機(jī)器學(xué)習(xí),網(wǎng)絡(luò)的每個(gè)層都將對(duì)輸入的數(shù)據(jù)做一次抽象,多層神經(jīng)網(wǎng)絡(luò)構(gòu)成深度學(xué)習(xí)的框架,可以深度理解數(shù)據(jù)中所要表示的規(guī)律。從原理上看,使用
    的頭像 發(fā)表于 04-02 18:21 ?885次閱讀

    開關(guān)電源設(shè)計(jì)要領(lǐng)及設(shè)計(jì)全過程

    1 目的 希望以簡(jiǎn)短的篇幅,將公司目前設(shè)計(jì)的流程做介紹,若有介紹不當(dāng)之處,請(qǐng)不吝指教。 2 設(shè)計(jì)步驟: 2.1 繪線路圖、PCB Layout. 2.2 變壓器計(jì)算. 2.3 零件選用. 2.4 設(shè)計(jì)驗(yàn)證. 3設(shè)計(jì)流程介紹(以 DA-14B33 為例): 3.1線路圖、PCB Layout 請(qǐng)參考資識(shí)庫(kù)中說明. 3.2變壓器計(jì)算: 變壓器是整個(gè)電源供應(yīng)器的重要核心,所以變壓器的計(jì)算及驗(yàn)證是很重要的,以下即就 DA-14B33 變壓器做介紹. 3.2.1 決定變壓器的材質(zhì)及尺寸: 依據(jù)變壓器計(jì)算公式 B(max) =鐵心飽合的磁通密度(Gauss) Lp =一次側(cè)電感值(uH) Ip =一次側(cè)峰值電流(A) Np =一次側(cè)(主線圈)圈數(shù) Ae =鐵心截面積(cm2) B(max) 依鐵心的材質(zhì)及本身的溫度來決定,以 TDK Ferrite Core PC40 為例,100℃時(shí)的 B(max)為3900 Gauss,設(shè)計(jì)時(shí)應(yīng)考慮零件誤差,所以一般取 3000~3500 Gauss 之間,若所設(shè)計(jì)的 power 為Adapter(有外殼)則應(yīng)取 3000 Gauss 左右,以避免鐵心因高溫而飽合,一般而言鐵心的尺寸越大,Ae 越高,所以可以做較大瓦數(shù)的 Power。 文件過大,需要完整版資料可下載附件查看哦!
    發(fā)表于 03-07 15:53

    軍事應(yīng)用中深度學(xué)習(xí)的挑戰(zhàn)與機(jī)遇

    人工智能尤其是深度學(xué)習(xí)技術(shù)的最新進(jìn)展,加速了不同應(yīng)用領(lǐng)域的創(chuàng)新與發(fā)展。深度學(xué)習(xí)技術(shù)的發(fā)展深刻影響了軍事發(fā)展趨勢(shì),導(dǎo)致戰(zhàn)爭(zhēng)形式和模式發(fā)生重大變化。本文將概述
    的頭像 發(fā)表于 02-14 11:15 ?538次閱讀

    BP神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)的關(guān)系

    BP神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)之間存在著密切的關(guān)系,以下是對(duì)它們之間關(guān)系的介紹: 一、BP神經(jīng)網(wǎng)絡(luò)的基本概念 BP神經(jīng)網(wǎng)絡(luò),即反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network
    的頭像 發(fā)表于 02-12 15:15 ?859次閱讀

    大連理工提出基于Wasserstein距離(WD)的知識(shí)蒸餾方法

    自 Hinton 等人的開創(chuàng)性工作以來,基于 Kullback-Leibler 散度(KL-Div)的知識(shí)蒸餾一直占主導(dǎo)地位。 然而,KL-Div 僅比較教師和學(xué)生在相應(yīng)類別上的概率,缺乏跨類別比較
    的頭像 發(fā)表于 01-21 09:45 ?634次閱讀

    百度深度學(xué)習(xí)專利申請(qǐng)量位列全球第一

    近日,全球領(lǐng)先的知識(shí)產(chǎn)權(quán)解決方案提供商Questel,發(fā)布全球深度學(xué)習(xí)專利全景報(bào)告。
    的頭像 發(fā)表于 01-15 09:29 ?560次閱讀

    NPU在深度學(xué)習(xí)中的應(yīng)用

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)作為其核心驅(qū)動(dòng)力之一,已經(jīng)在眾多領(lǐng)域展現(xiàn)出了巨大的潛力和價(jià)值。NPU(Neural Processing Unit,神經(jīng)網(wǎng)絡(luò)處理單元)是專門為深度學(xué)習(xí)
    的頭像 發(fā)表于 11-14 15:17 ?1912次閱讀

    AI干貨補(bǔ)給站 | 深度學(xué)習(xí)與機(jī)器視覺的融合探索

    ,幫助從業(yè)者積累行業(yè)知識(shí),推動(dòng)工業(yè)視覺應(yīng)用的快速落地。本期亮點(diǎn)預(yù)告本期將以“深度學(xué)習(xí)與機(jī)器視覺的融合探索”為主題,通過講解深度學(xué)習(xí)定義、傳統(tǒng)
    的頭像 發(fā)表于 10-29 08:04 ?575次閱讀
    AI干貨補(bǔ)給站 | <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>與機(jī)器視覺的融合探索

    Pytorch深度學(xué)習(xí)訓(xùn)練的方法

    掌握這 17 種方法,用最省力的方式,加速你的 Pytorch 深度學(xué)習(xí)訓(xùn)練。
    的頭像 發(fā)表于 10-28 14:05 ?656次閱讀
    Pytorch<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>訓(xùn)練的方法

    GPU深度學(xué)習(xí)應(yīng)用案例

    能力,可以顯著提高圖像識(shí)別模型的訓(xùn)練速度和準(zhǔn)確性。例如,在人臉識(shí)別、自動(dòng)駕駛等領(lǐng)域,GPU被廣泛應(yīng)用于加速深度學(xué)習(xí)模型的訓(xùn)練和推理過程。 二、自然語言處理 自然語言處理(NLP)是深度
    的頭像 發(fā)表于 10-27 11:13 ?1363次閱讀

    激光雷達(dá)技術(shù)的基于深度學(xué)習(xí)的進(jìn)步

    信息。這使得激光雷達(dá)在自動(dòng)駕駛、無人機(jī)、機(jī)器人等領(lǐng)域具有廣泛的應(yīng)用前景。 二、深度學(xué)習(xí)技術(shù)的發(fā)展 深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支,它通過模擬人
    的頭像 發(fā)表于 10-27 10:57 ?1066次閱讀

    FPGA加速深度學(xué)習(xí)模型的案例

    FPGA(現(xiàn)場(chǎng)可編程門陣列)加速深度學(xué)習(xí)模型是當(dāng)前硬件加速領(lǐng)域的一個(gè)熱門研究方向。以下是一些FPGA加速深度學(xué)習(xí)模型的案例: 一、基于FPGA的AlexNet卷積運(yùn)算加速 項(xiàng)目名稱
    的頭像 發(fā)表于 10-25 09:22 ?1233次閱讀

    AI大模型與深度學(xué)習(xí)的關(guān)系

    人類的學(xué)習(xí)過程,實(shí)現(xiàn)對(duì)復(fù)雜數(shù)據(jù)的學(xué)習(xí)和識(shí)別。AI大模型則是指模型的參數(shù)數(shù)量巨大,需要龐大的計(jì)算資源來進(jìn)行訓(xùn)練和推理。深度學(xué)習(xí)算法為AI大模型
    的頭像 發(fā)表于 10-23 15:25 ?2889次閱讀

    FPGA做深度學(xué)習(xí)能走多遠(yuǎn)?

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

    中興2400通信電源

    中興2400通信電源改裝技術(shù),全過程圖片
    發(fā)表于 09-27 11:34 ?0次下載