>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺(jué)的最前沿如果你曾經(jīng)用神經(jīng)網(wǎng)絡(luò)來(lái)解決..." />
<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          知識(shí)蒸餾:如何用一個(gè)神經(jīng)網(wǎng)絡(luò)訓(xùn)練另一個(gè)神經(jīng)網(wǎng)絡(luò)

          共 3871字,需瀏覽 8分鐘

           ·

          2020-10-25 21:30

          ↑ 點(diǎn)擊藍(lán)字?關(guān)注極市平臺(tái)

          作者丨Tivadar Danka
          來(lái)源丨AI公園
          編輯丨極市平臺(tái)

          極市導(dǎo)讀

          ?

          知識(shí)蒸餾的簡(jiǎn)單介紹,讓大家了解知識(shí)蒸餾背后的直覺(jué)。?>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺(jué)的最前沿

          如果你曾經(jīng)用神經(jīng)網(wǎng)絡(luò)來(lái)解決一個(gè)復(fù)雜的問(wèn)題,你就會(huì)知道它們的尺寸可能非常巨大,包含數(shù)百萬(wàn)個(gè)參數(shù)。例如著名的BERT模型約有1億1千萬(wàn)參數(shù)。

          為了說(shuō)明這一點(diǎn),參見(jiàn)下圖中的NLP中最常見(jiàn)架構(gòu)的參數(shù)數(shù)量。

          各種模型結(jié)構(gòu)的參數(shù)數(shù)量

          在Kaggle競(jìng)賽中,勝出的模型通常是由幾個(gè)模型組成的集合。盡管它們?cè)诰_度上可以大大超過(guò)簡(jiǎn)單模型,但其巨大的計(jì)算成本使它們?cè)趯?shí)際應(yīng)用中完全無(wú)法使用。

          有沒(méi)有什么方法可以在不擴(kuò)展硬件的情況下利用這些強(qiáng)大但龐大的模型來(lái)訓(xùn)練最先進(jìn)的模型?

          目前,有三種方法可以壓縮神經(jīng)網(wǎng)絡(luò),同時(shí)保持預(yù)測(cè)性能:

          • 權(quán)值裁剪

          • 量化

          • 知識(shí)蒸餾

          在這篇文章中,我的目標(biāo)是向你介紹“知識(shí)蒸餾”的基本原理,這是一個(gè)令人難以置信的令人興奮的想法,它的基礎(chǔ)是訓(xùn)練一個(gè)較小的網(wǎng)絡(luò)來(lái)逼近大的網(wǎng)絡(luò)。


          什么是知識(shí)蒸餾?

          讓我們想象一個(gè)非常復(fù)雜的任務(wù),比如對(duì)數(shù)千個(gè)類進(jìn)行圖像分類。通常,你不能指望ResNet50能達(dá)到99%的準(zhǔn)確度。所以,你建立一個(gè)模型集合,平衡每個(gè)模型的缺陷?,F(xiàn)在你有了一個(gè)巨大的模型,盡管它的性能非常出色,但無(wú)法將其部署到生產(chǎn)環(huán)境中,并在合理的時(shí)間內(nèi)獲得預(yù)測(cè)。

          然而,該模型可以很好地概括未見(jiàn)的數(shù)據(jù),因此可以放心地相信它的預(yù)測(cè)。(我知道,情況可能不是這樣的,但我們現(xiàn)在就開(kāi)始進(jìn)行思維實(shí)驗(yàn)吧。)

          如果我們使用來(lái)自大而笨重的模型的預(yù)測(cè)來(lái)訓(xùn)練一個(gè)更小的,所謂的“學(xué)生”模型來(lái)逼近大模型會(huì)怎么樣?

          這本質(zhì)上就是知識(shí)的蒸餾,這是由Geoffrey Hinton、Oriol Vinyals和Jeff Dean在論文Distilling the Knowledge in a Neural Network中介紹的。

          大致說(shuō)來(lái),過(guò)程如下。

          1. 訓(xùn)練一個(gè)能夠性能很好泛化也很好的大模型。這被稱為教師模型。

          2. 利用你所擁有的所有數(shù)據(jù),計(jì)算出教師模型的預(yù)測(cè)。帶有這些預(yù)測(cè)的全部數(shù)據(jù)集被稱為知識(shí),預(yù)測(cè)本身通常被稱為soft targets。這是知識(shí)蒸餾步驟。

          3. 利用先前獲得的知識(shí)來(lái)訓(xùn)練較小的網(wǎng)絡(luò),稱為學(xué)生模型。

          為了使過(guò)程可視化,見(jiàn)下圖。

          知識(shí)蒸餾

          讓我們關(guān)注一下細(xì)節(jié)。知識(shí)是如何獲得的?

          在分類器模型中,類的概率由softmax層給出,將logits轉(zhuǎn)換為概率:

          其中:

          是最后一層生成的logits。替換一下,得到一個(gè)稍有修改的版本:

          其中,T是一個(gè)超參數(shù),稱為溫度。這些值叫做soft targets。

          如果T變大,類別概率會(huì)變軟,也就是說(shuō)會(huì)相互之間更加接近,極端情況下,T趨向于無(wú)窮大。

          如果T = 1,就是原來(lái)的softmax函數(shù)。出于我們的目的,T被設(shè)置為大于1,因此叫做蒸餾

          Hinton, Vinyals和Dean證明了一個(gè)經(jīng)過(guò)蒸餾的模型可以像由10個(gè)大型模型的集成一樣出色。

          Geoffrey Hinton, Oriol Vinyals和Jeff Dean的論文Distilling the Knowledge in a Neural Network中對(duì)一個(gè)語(yǔ)音識(shí)別問(wèn)題的知識(shí)蒸餾的結(jié)果



          為什么不重頭訓(xùn)練一個(gè)小網(wǎng)絡(luò)?

          你可能會(huì)問(wèn),為什么不從一開(kāi)始就訓(xùn)練一個(gè)更小的網(wǎng)絡(luò)呢?這不是更容易嗎?當(dāng)然,但這并不一定有效。

          實(shí)驗(yàn)結(jié)果表明,參數(shù)越多,泛化效果越好,收斂速度越快。例如,Sanjeev Arora, Nadav Cohen和Elad Hazan在他們的論文“On the Optimization of Deep Networks: Implicit Acceleration by Overparameterization”中對(duì)此進(jìn)行了研究。

          左:單層網(wǎng)絡(luò)與4層和8層的線性網(wǎng)絡(luò)。右:使用TensorFlow教程中的MNIST分類的參數(shù)化和基線模型。

          對(duì)于復(fù)雜的問(wèn)題,簡(jiǎn)單的模型很難在給定的訓(xùn)練數(shù)據(jù)上很好地泛化。然而,我們擁有的遠(yuǎn)不止訓(xùn)練數(shù)據(jù):教師模型對(duì)所有可用數(shù)據(jù)的預(yù)測(cè)。

          這對(duì)我們有兩方面的好處。

          • 首先,教師模型的知識(shí)可以教學(xué)生模型如何通過(guò)訓(xùn)練數(shù)據(jù)集之外的可用預(yù)測(cè)進(jìn)行泛化。回想一下,我們使用教師模型對(duì)所有可用數(shù)據(jù)的預(yù)測(cè)來(lái)訓(xùn)練學(xué)生模型,而不是原始的訓(xùn)練數(shù)據(jù)集。

          • 其次,soft targets提供了比類標(biāo)簽更有用的信息:它表明兩個(gè)類是否彼此相似。例如,如果任務(wù)是分類狗的品種,像“柴犬和秋田犬非常相似”這樣的信息對(duì)于模型泛化是非常有價(jià)值的。

          左:秋田犬,右:柴犬



          與遷移學(xué)習(xí)的區(qū)別

          Hinton等人也提到,最早的嘗試是復(fù)用訓(xùn)練好的集成模型中的一些層來(lái)遷移知識(shí),從而壓縮模型。

          用Hinton等人的話來(lái)說(shuō),

          “……我們傾向于用學(xué)習(xí)的參數(shù)值在訓(xùn)練過(guò)的模型中識(shí)別知識(shí),這使得我們很難看到如何改變模型的形式而保持相同的知識(shí)。知識(shí)的一個(gè)更抽象的觀點(diǎn)是,它是一個(gè)從輸入向量到輸出向量的學(xué)習(xí)好的映射,它將知識(shí)從任何特定的實(shí)例化中解放出來(lái)?!?Distilling the Knowledge in a Neural Network

          因此,與轉(zhuǎn)移學(xué)習(xí)相反,知識(shí)蒸餾不會(huì)直接使用學(xué)到的權(quán)重。


          使用決策樹

          如果你想進(jìn)一步壓縮模型,你可以嘗試使用更簡(jiǎn)單的模型,如決策樹。盡管它們的表達(dá)能力不如神經(jīng)網(wǎng)絡(luò),但它們的預(yù)測(cè)可以通過(guò)單獨(dú)觀察節(jié)點(diǎn)來(lái)解釋。

          這是由Nicholas Frosst和Geoffrey Hinton完成的,他們?cè)谒麄兊恼撐腄istilling a Neural Network Into a Soft Decision Tree中對(duì)此進(jìn)行了研究。

          他們的研究表明,盡管更簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)的表現(xiàn)比他們的研究要好,但蒸餾確實(shí)起到了一點(diǎn)作用。在MNIST數(shù)據(jù)集上,經(jīng)過(guò)蒸餾的決策樹模型的測(cè)試準(zhǔn)確率達(dá)到96.76%,較基線模型的94.34%有所提高。然而,一個(gè)簡(jiǎn)單的兩層深卷積網(wǎng)絡(luò)仍然達(dá)到了99.21%的準(zhǔn)確率。因此,在性能和可解釋性之間存在權(quán)衡。


          Distilling BERT

          到目前為止,我們只看到了理論結(jié)果,沒(méi)有實(shí)際的例子。為了改變這種情況,讓我們考慮近年來(lái)最流行和最有用的模型之一:BERT。

          來(lái)自于谷歌的Jacob Devlin等人的論文BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding,很快被廣泛應(yīng)用于各種NLP任務(wù),如文檔檢索或情緒分析。這是一個(gè)真正的突破,推動(dòng)了幾個(gè)領(lǐng)域的技術(shù)發(fā)展。

          然而,有一個(gè)問(wèn)題。BERT包含約1.1億個(gè)參數(shù),需要大量的時(shí)間來(lái)訓(xùn)練。作者報(bào)告說(shuō),訓(xùn)練需要4天,使用4個(gè)pods中的16個(gè)TPU芯片。訓(xùn)練成本將約為10000美元,不包括碳排放等環(huán)境成本。

          Hugging Face成功地嘗試減小BERT的尺寸和計(jì)算成本。他們使用知識(shí)蒸餾來(lái)訓(xùn)練DistilBERT,這是原始模型大小的60%,同時(shí)速度提高了60%,語(yǔ)言理解能力保持在97%。

          DistilBERT的性能。

          較小的架構(gòu)需要更少的時(shí)間和計(jì)算資源:在8個(gè)16GB V100 gpu上花費(fèi)90小時(shí)。如果你對(duì)更多的細(xì)節(jié)感興趣,你可以閱讀原始論文"DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter"或者文章的綜述,寫的很精彩,強(qiáng)烈推薦。


          總結(jié)

          知識(shí)蒸餾是壓縮神經(jīng)網(wǎng)絡(luò)的三種主要方法之一,使其適合于性能較弱的硬件。

          與其他兩種強(qiáng)大的壓縮方法權(quán)值剪枝和量化不同,知識(shí)蒸餾不直接對(duì)網(wǎng)絡(luò)進(jìn)行縮減。相反,它使用最初的模型來(lái)訓(xùn)練一個(gè)更小的模型,稱為“學(xué)生模型”。由于教師模型甚至可以對(duì)未標(biāo)記的數(shù)據(jù)提供預(yù)測(cè),因此學(xué)生模型可以學(xué)習(xí)如何像教師那樣進(jìn)行泛化。在這里,我們看到了兩個(gè)關(guān)鍵的結(jié)果:最初的論文,它介紹了這個(gè)想法,和一個(gè)后續(xù)的論文,展示了簡(jiǎn)單的模型,如決策樹,也可以用作學(xué)生模型。


          英文原文:https://towardsdatascience.com/can-a-neural-network-train-other-networks-cf371be516c6


          推薦閱讀



          【極市1024開(kāi)發(fā)者節(jié)】
          京東卡、算力棒、雙肩包、20本CV電子書籍(人人有份),掃碼查看


          添加極市小助手微信(ID : cvmart2),備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測(cè)-深圳),即可申請(qǐng)加入極市目標(biāo)檢測(cè)/圖像分割/工業(yè)檢測(cè)/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群:月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競(jìng)賽、干貨資訊匯總、與?10000+來(lái)自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺(jué)開(kāi)發(fā)者互動(dòng)交流~

          △長(zhǎng)按添加極市小助手

          △長(zhǎng)按關(guān)注極市平臺(tái),獲取最新CV干貨

          覺(jué)得有用麻煩給個(gè)在看啦~??
          瀏覽 95
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲第一在线观看视频 | 色综合久久鬼88888 | 成人永久免费 | 亚洲在钱免费观看 | 四虎AⅤ免费影院 |