日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

MODEL COMPRESSION VIA DISTILLATION AND QUANTIZATION 论文笔记

發(fā)布時(shí)間:2025/6/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MODEL COMPRESSION VIA DISTILLATION AND QUANTIZATION 论文笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 摘要

  深度神經(jīng)網(wǎng)絡(luò)(DNN)繼續(xù)取得重大進(jìn)展,解決從圖像分類到翻譯或強(qiáng)化學(xué)習(xí)的任務(wù)。受到相當(dāng)大關(guān)注的領(lǐng)域的一個(gè)方面是在資源受限的環(huán)境中有效地執(zhí)行深度模型,例如移動(dòng)或嵌入式設(shè)備。本文重點(diǎn)討論了這個(gè)問題,并提出了兩種新的壓縮方法,它們共同利用大型網(wǎng)絡(luò)稱為“教師”權(quán)重量化和蒸餾,進(jìn)入壓縮的“學(xué)生”網(wǎng)絡(luò)。我們提出的第一種方法稱為量化蒸餾,并在訓(xùn)練過程中利用蒸餾,將蒸餾損失(相對(duì)于教師網(wǎng)絡(luò)表示)納入較小的學(xué)生網(wǎng)絡(luò)的訓(xùn)練,其權(quán)重被量化為有限的一組水平。第二種方法,可微分量化,通過隨機(jī)梯度下降優(yōu)化量化點(diǎn)的位置,以更好地適應(yīng)教師模型的行為。我們通過卷積和循環(huán)體系結(jié)構(gòu)的實(shí)驗(yàn)來驗(yàn)證這兩種方法。我們表明,量化的淺學(xué)生可以達(dá)到與最先進(jìn)的全精度教師模型相似的準(zhǔn)確度水平,同時(shí)提供高達(dá)數(shù)量級(jí)的壓縮,并且推理加速在深度減少中幾乎是線性的。總而言之,我們的結(jié)果使得資源受限環(huán)境的DNN能夠利用在功能更強(qiáng)大的設(shè)備上開發(fā)的架構(gòu)和精度提升。

  • 預(yù)處理
  • 量化過程

  我們首先定義一個(gè)縮放函數(shù)sc:R->[0; 1],將值從任意范圍得到的矢量歸一化為值為[0;1]給定這樣的函數(shù),量化函數(shù)的一般結(jié)構(gòu)如下:(見論文公式1)

  縮放縮放功能有各種規(guī)格; 在本文中,我們將使用線性縮放,量化函數(shù)可以改寫為論文公式2

  Bucketing該公式的一個(gè)問題是對(duì)于整個(gè)矢量使用相同的比例因子,其維度可能很大。 幅度不平衡會(huì)導(dǎo)致精度的顯著損失,其中縮放矢量的大多數(shù)元素被推到零。 為避免這種情況,我們將使用分段,例如 Alistarh等人(2016),也就是說,我們將縮放函數(shù)分別應(yīng)用于某個(gè)固定大小的連續(xù)值的bucketing。 這里的權(quán)衡是我們?yōu)槊總€(gè)bucketing獲得更好的量化精度,但是必須為每個(gè)bucketing存儲(chǔ)兩個(gè)浮點(diǎn)縮放因子。 我們?cè)诘?節(jié)中描述了壓縮比較。函數(shù)Q^也可以用幾種方式定義。 我們將考慮量化點(diǎn)的均勻和非均勻放置。

  均勻量化。 我們固定了參數(shù)s≥1,描述了所采用的量化級(jí)數(shù)。 直觀地,均勻量化考慮在0和1之間的s + 1個(gè)等間隔點(diǎn)(包括這些端點(diǎn))。 確定性版本將每個(gè)(縮放的)矢量坐標(biāo)vi分配給最接近的量化點(diǎn),而在隨機(jī)版本中,我們概率地執(zhí)行舍入,使得得到的值是的vi的無(wú)偏估計(jì),具有最小方差

  非均勻量化非均勻量化將一組量化點(diǎn)作為輸入p1::: ps并將每個(gè)元素vi量化為這些點(diǎn)中最接近的點(diǎn)。 為簡(jiǎn)單起見,我們僅定義此函數(shù)的確定性版本。

  • 隨機(jī)量化等于增加高斯噪聲

  在本節(jié)中,我們列出了均勻量化函數(shù)的一些有趣的數(shù)學(xué)屬性。 顯然,隨機(jī)均勻量化是其輸入的無(wú)偏估計(jì)E[Q(v)]=v

  我們感興趣的是將此功能應(yīng)用于神經(jīng)網(wǎng)絡(luò); 由于標(biāo)量積是神經(jīng)網(wǎng)絡(luò)最常用的運(yùn)算,我們想研究QT(v)?x的性質(zhì),其中v是網(wǎng)絡(luò)中某個(gè)層的權(quán)重向量,x是輸入。 見論文公式(5)

  這意味著量化權(quán)重等效于向每個(gè)層的輸出(在激活函數(shù)之前)添加漸近正態(tài)分布的零均值誤差項(xiàng)。 該誤差項(xiàng)的方差取決于s。 這將量化與主張將噪聲添加到神經(jīng)網(wǎng)絡(luò)的中間激活中作為正則化器聯(lián)系起來,例如 Gulcehre等2016)

  • 量化蒸餾

  上下文如下:給定一項(xiàng)任務(wù),我們考慮一個(gè)訓(xùn)練有素的最先進(jìn)的深層模型來解決它 - 教師和壓縮的學(xué)生模型。 學(xué)生被壓縮的意思是1)它比老師淺; 2)它的量化是在其權(quán)重以有限的比特寬度表示的意義上。 標(biāo)準(zhǔn)蒸餾(Ba&Caruana,2013; Hinton等,2015)的策略是讓學(xué)生利用訓(xùn)練好的教師模型達(dá)到類似的準(zhǔn)確度。 我們注意到先前已經(jīng)使用蒸餾來獲得緊湊的高精度合奏編碼(Hinton等,2015),我們相信這是第一次通過量化用于模型壓縮。

  鑒于此設(shè)置,我們需要解決兩個(gè)問題。 首先是如何將知識(shí)從老師轉(zhuǎn)移到學(xué)生。 為此,學(xué)生將使用Hinton等人定義的蒸餾損失(2015),作為兩個(gè)目標(biāo)函數(shù)之間的加權(quán)平均值:具有軟目標(biāo)的交叉熵,由溫度參數(shù)T控制,以及具有正確標(biāo)簽的交叉熵。 我們將讀者推薦給Hinton等人。 (2015)關(guān)于蒸餾損失的精確定義。

  第二個(gè)問題是如何在量化神經(jīng)網(wǎng)絡(luò)的背景下使用蒸餾損失。一種直觀的方法是依靠投影梯度下降,其中在全精度訓(xùn)練中采用梯度步驟,然后將新參數(shù)投影到一組有效解。關(guān)鍵的是,我們將每個(gè)投影步驟的誤差累積到下一步的梯度中。人們可以將這個(gè)過程想象成收集每個(gè)權(quán)重是否需要移動(dòng)到下一個(gè)量化點(diǎn)的證據(jù)。至關(guān)重要的是,如果梯度很小,誤差累積會(huì)阻止算法卡在當(dāng)前解決方案中,這會(huì)在天真的投影梯度方法中發(fā)生。這與BinaryConnect技術(shù)采用的方法類似,但存在一些差異。李等人(2017)也詳細(xì)檢查了這些動(dòng)態(tài)。與BinnaryConnect相比,我們使用蒸餾而不是從頭開始學(xué)習(xí),因此學(xué)習(xí)更有效。我們也不限于二進(jìn)制表示,而是使用可變的位寬量化功能和bucketing,如第2節(jié)中所定義。

  圖1所示的該過程的另一種觀點(diǎn)是,我們?cè)谌饶P蜕蠄?zhí)行SGD步驟,但計(jì)算量化模型上的梯度,表示相對(duì)于蒸餾損失。 考慮到這一切,我們提出的算法是:

  • 可區(qū)分的量化
  • 一般說明

  我們通過利用非均勻量化點(diǎn)放置,引入可微分量化作為提高量化神經(jīng)網(wǎng)絡(luò)精度的一般方法。 特別是,我們將使用2.1節(jié)中定義的非均勻量化函數(shù)。 實(shí)驗(yàn)上,我們發(fā)現(xiàn)在這種情況下隨機(jī)和確定性量化之間幾乎沒有區(qū)別,因此這里將集中于更簡(jiǎn)單的確定性量化函數(shù)。

  令p =(p1; :::; ps)為量化點(diǎn)的矢量,并且讓為我們的量化函數(shù),如前所述。 理想情況下,我們希望找到一組量化點(diǎn)p,它們?cè)谑褂肣(v; p)量化模型時(shí)最小化精度損失。 關(guān)鍵的觀察是,為了找到這個(gè)集合p,我們可以使用隨機(jī)梯度下降,因?yàn)槲覀兡軌蛴?jì)算Q相對(duì)于p的梯度。

  量化神經(jīng)網(wǎng)絡(luò)的一個(gè)主要問題是,pi應(yīng)該替換給定權(quán)重的決定是離散的,因此梯度為零:?Q(v; p)/?v=0幾乎無(wú)處不在:這意味著我們不能通過量化函數(shù)反向傳播梯度。 為了解決這個(gè)問題,通常使用直通估計(jì)器的變體,參見例如 Bengio等(2013)Hubara等2016)另一方面,作為所選擇的pi的函數(shù)的模型是連續(xù)的并且可以區(qū)分; 關(guān)于pj的Q(v; p)i的梯度幾乎無(wú)處不在,并且很簡(jiǎn)單

?

  其中αi是縮放因子的第i個(gè)元素,假設(shè)我們使用的是bucketing方案。 如果沒有使用bucketing,則αi =α。 否則它會(huì)根據(jù)權(quán)重vi所屬的bucketing而改變。

  因此,我們可以使用我們?cè)谟?xùn)練原始模型時(shí)使用的相同損失函數(shù),并且利用上述公式和通常的反向傳播算法,我們能夠相對(duì)于量化點(diǎn)p計(jì)算其梯度。 然后我們可以使用標(biāo)準(zhǔn)SGD算法最小化關(guān)于p的損失函數(shù)。 然后算法變?yōu)橐韵?#xff1a;

  關(guān)于效率的說明優(yōu)化點(diǎn)p可能比訓(xùn)練原始網(wǎng)絡(luò)慢,因?yàn)槲覀儽仨殘?zhí)行正常的前向和后向傳遞,此外我們需要量化模型的權(quán)重并執(zhí)行向后傳遞以獲得p的梯度然而,根據(jù)我們的經(jīng)驗(yàn),差分量化需要一個(gè)數(shù)量級(jí)的迭代,以便收斂到一個(gè)好的解決方案,并且可以有效地實(shí)現(xiàn)。

  權(quán)重共享經(jīng)過仔細(xì)檢查,這種方法可以與權(quán)重共享聯(lián)系起來,Han等人2015年權(quán)重共享使用k均值聚類算法來找到權(quán)重的良好聚類,采用質(zhì)心作為聚類的量化點(diǎn)。 訓(xùn)練網(wǎng)絡(luò)修改質(zhì)心的值,以類似的方式聚合梯度。 不同之處在于對(duì)質(zhì)心點(diǎn)的初始分配,更重要的是,質(zhì)心的權(quán)重分配從未改變。 相反,在每次迭代時(shí),我們將權(quán)重重新分配給最接近的量化點(diǎn),并使用不同的初始化。

  • 討論和附加的啟發(fā)式

  雖然損失關(guān)于p是連續(xù)的,但是改變每個(gè)權(quán)重量化的方式時(shí)會(huì)產(chǎn)生間接影響。 這會(huì)對(duì)學(xué)習(xí)過程產(chǎn)生重大影響。 作為一個(gè)極端的例子,我們可以有退化,其中所有權(quán)重都由相同的量化點(diǎn)表示,使得學(xué)習(xí)變得不可能。 或者pi的多樣性減少,導(dǎo)致非常少的權(quán)重以非常高的精度表示,而其余的權(quán)重被迫以更低的分辨率表示。

  為避免此類問題,我們依賴于以下一組啟發(fā)式方法。 未來的工作將考慮為如何將pi分配給權(quán)重添加強(qiáng)化學(xué)習(xí)損失。

  選擇好的起點(diǎn)初始化起始量化點(diǎn)的一種方法是使它們均勻間隔,這將對(duì)應(yīng)于用作均勻量化函數(shù)的起始點(diǎn)。 可微分量化算法需要能夠使用量化點(diǎn)來更新它; 因此,為了確保使用每個(gè)量化點(diǎn),我們將點(diǎn)初始化為權(quán)重值的分位數(shù)。 這確保了每個(gè)量化點(diǎn)與相同數(shù)量的值相關(guān)聯(lián),并且我們能夠更新它。

  在重要的位置重新分配位并非網(wǎng)絡(luò)中的所有層都需要相同的準(zhǔn)確度。 每個(gè)權(quán)重對(duì)最終預(yù)測(cè)的重要程度的度量是每個(gè)權(quán)重向量的梯度的范數(shù)。 因此,在初始階段,我們運(yùn)行前向和后向傳遞一定次數(shù)來估計(jì)每層中權(quán)重向量的梯度,我們計(jì)算多個(gè)minibatchs的平均梯度并計(jì)算范數(shù); 然后,我們根據(jù)簡(jiǎn)單的線性比例分配與每個(gè)權(quán)重相關(guān)聯(lián)的點(diǎn)數(shù)。 總之,我們估計(jì)

  我們使用此值來確定哪些層對(duì)量化最敏感

  使用此過程時(shí),我們將在某些層中使用超過指定位數(shù)的值,而在其他層中使用的位數(shù)則更少。 我們可以通過使用霍夫曼編碼來減少這種效應(yīng)的影響,參見第5節(jié); 在任何情況下,請(qǐng)注意,雖然點(diǎn)的總數(shù)保持不變,但如果圖層具有較大比例的權(quán)重,則為圖層分配更多點(diǎn)將增加整體位復(fù)雜度。

  使用蒸餾損失在上面描述的算法中,損失是指我們用于訓(xùn)練原始模型的損失。 另一種可能的規(guī)范是將未量化的模型視為教師模型,將量化模型視為學(xué)生,并將未量化和量化模型的輸出之間的蒸餾損失用作損失。 在這種情況下,我們正在優(yōu)化我們的量化模型,使其不是在原始損失方面表現(xiàn)最佳,而是模仿未量化模型的結(jié)果,這應(yīng)該更容易學(xué)習(xí)模型并提供更好的結(jié)果。

  超參數(shù)優(yōu)化上述算法是一個(gè)與原始算法非常相似的優(yōu)化問題。 像往常一樣,為了獲得最佳結(jié)果,我們應(yīng)該嘗試使用超參數(shù)優(yōu)化和不同的梯度下降變體。

  • 壓縮

  我們現(xiàn)在分析使用b位和bucketing大小為k時(shí)節(jié)省的空間。 令f為全精度權(quán)重(32位)的大小,并且令N為“vector”的大小,我們正在量化。 全精度需要fN位,而量化矢量需要bN + 2fN/k。 (我們使用每權(quán)重b位,為每個(gè)bucketing加上縮放因子)。 因此,尺寸增加

  對(duì)于可微分量化,我們還必須存儲(chǔ)量化點(diǎn)的值。 由于這個(gè)數(shù)字不依賴于N,所需的空間量可以忽略不計(jì),為簡(jiǎn)單起見我們忽略它。 例如,在256個(gè)bucketing大小時(shí),每個(gè)組件使用2個(gè)比特對(duì)于全精度可以節(jié)省14.2倍的空間,而4位可節(jié)省7.52倍的空間。 在512個(gè)bucketing大小時(shí),2比特節(jié)省是15.05倍,而4比特產(chǎn)生7.75倍壓縮。

  霍夫曼編碼。 為了節(jié)省額外的空間,我們可以使用霍夫曼編碼來表示量化值。 實(shí)際上,每個(gè)量化值可以被認(rèn)為是指向全精度值的指針; 在非均勻量化的情況下是pk,在均勻量化的情況下是k = s。 然后,我們可以計(jì)算模型所有權(quán)重的每個(gè)索引的頻率,并計(jì)算最佳霍夫曼編碼。 最佳編碼的平均比特長(zhǎng)度是我們實(shí)際用于編碼值的比特量。 這解釋了附錄中某些尺寸增益表中存在小數(shù)位。

  • 實(shí)驗(yàn)結(jié)果
  • 小數(shù)據(jù)集

  方法我們將從較小數(shù)據(jù)集的一組實(shí)驗(yàn)開始,這使我們可以更仔細(xì)地覆蓋參數(shù)空間。 我們將以下方式描述的方法的性能進(jìn)行比較:我們將教師模型,蒸餾模型和較小模型視為基線:蒸餾模型和較小模型具有相同的結(jié)構(gòu),但蒸餾模型在有老師網(wǎng)絡(luò)的情況下使用蒸餾損失進(jìn)行訓(xùn)練。而較小的模型直接訓(xùn)練目標(biāo)。 此外,我們比較量化蒸餾和可微分量化的性能。 此外,我們還將在有和沒有bucketing的情況下使用PM(“事后”)量化,其在訓(xùn)練之后均勻地量化權(quán)重而無(wú)需任何額外的操作。 所有結(jié)果都是在bucketing大小為256的情況下獲得的,我們發(fā)現(xiàn)這些結(jié)果可憑經(jīng)驗(yàn)提供良好的壓縮精度權(quán)衡。 有關(guān)數(shù)據(jù)集和模型的詳細(xì)信息,請(qǐng)參閱附錄A.

  CIFAR-10實(shí)驗(yàn)對(duì)于CIFAR-10上的圖像分類,我們測(cè)試了不同訓(xùn)練技術(shù)對(duì)蒸餾模型精度的影響,同時(shí)改變了CNN架構(gòu)的參數(shù),例如量化級(jí)別和模型大小。 表1包含全精度訓(xùn)練,有和沒有bucketing的PM量化以及我們的方法的結(jié)果。 定義的學(xué)生模型的下方左側(cè)的百分比分別是普通模型和蒸餾模型的精度(以全精度訓(xùn)練)。 更多細(xì)節(jié)見附錄表11。 我們還嘗試了一個(gè)額外的模型,其中學(xué)生比老師更深,在那里我們獲得量化為4位的學(xué)生能夠比老師獲得更高的準(zhǔn)確度,壓縮率大于7倍。

  我們使用廣泛的殘差網(wǎng)絡(luò)(Zagoruyko&Komodakis,2016)進(jìn)行了可進(jìn)行差分量化的額外實(shí)驗(yàn),從而獲得更高的精度; 見表3。

  總的來說,量化蒸餾似乎是在整個(gè)位寬和體系結(jié)構(gòu)范圍內(nèi)具有最佳精度的方法。 它對(duì)于2位和4位量化顯著優(yōu)于PM,在較大的8bits學(xué)生模型上比教師的獲得相差0.2%以內(nèi)的準(zhǔn)確度,在4位量化時(shí)實(shí)現(xiàn)相對(duì)較小的準(zhǔn)確度損失。 在所有實(shí)驗(yàn)中,可微分量化是緊隨其后的第二,但它具有更快的收斂速度。 此外,我們強(qiáng)調(diào)了在更高的位寬(4和8位)更簡(jiǎn)單的帶bucketing的PM量化方法的良好準(zhǔn)確性。

?

轉(zhuǎn)載于:https://www.cnblogs.com/dushuxiang/p/10304622.html

總結(jié)

以上是生活随笔為你收集整理的MODEL COMPRESSION VIA DISTILLATION AND QUANTIZATION 论文笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。