999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

卷積神經網絡的損失最小訓練后參數量化方法

2022-04-29 05:15:46張帆黃赟方子茁郭威
通信學報 2022年4期
關鍵詞:實驗方法模型

張帆,黃赟,方子茁,郭威

(1.國家數字交換系統工程技術研究中心,河南 鄭州 450002;2.信息工程大學,河南 鄭州 450001;3.紫金山實驗室,江蘇 南京 211111;4.東南大學網絡空間安全學院,江蘇 南京 211189)

0 引言

卷積神經網絡(CNN,convolutional neural network)模型在計算機視覺[1]、無人駕駛[2]等領域的高速發展和模型推理過程中所需巨大的內存占用及高能耗問題引起了人們的關注。CNN 量化指的是將原始模型中使用32 位浮點表示的參數用更低比特位寬的參數來表示,由此來減小模型大小、提高運算效率,能夠有效地解決CNN 模型部署難的問題,成為神經網絡加速領域的一個研究熱點。模型量化面臨著精度損失的難題,對此常用的量化方法通常使用數據集進行量化訓練或微調來降低精度損失,達到了較好的量化效果。而對于一些存在數據敏感性問題或需要量化實時性的應用場景,如醫療、商業等領域,此時量化過程需要用到數據集的方法并不適用。

為解決數據敏感性場景下數據集不可用問題,本文利用神經網絡批歸一化(BN,batch normalization)[3]層參數來生成模擬輸入數據,通過損失最小化量化方法動態調節量化縮放因子進行量化微調,不需要使用數據集也能獲得較好的量化效果。

當前CNN 模型大小、運算效率及能耗問題等成為制約其應用部署的主要因素,而隨著存儲設備的發展,模型的運算效率及能耗相比較而言顯得更加突出。對于現場可編程門陣列(FPGA,field programmable gate array),相比于32 位浮點運算,8 位整數運算的功耗僅為,面積僅為,從而顯著提高計算吞吐量。對此本文采用8 bit 位寬來量化CNN模型,能夠有效減小模型大小;使用對數量化方法,使量化模型只含有整數乘法、加法及移位運算,能夠有效提高硬件設備的運算效率、降低功耗損失,有利于神經網絡模型實際部署應用。本文的主要工作如下。

1) 針對模型運算效率低及功耗大的問題,提出一種基于損失最小的對數量化方法。

2) 針對量化過程需要使用數據集的問題,提出一種模擬數據生成方法及激活無數據量化方法。

3) 針對所提量化方法,使用常用的圖像分類模型及目標檢測模型驗證量化效果。

1 相關工作

根據量化發生的階段不同,模型量化可分為兩類:訓練中參數量化和訓練后參數量化。訓練中參數量化指在模型訓練過程中對其進行量化,其主要面臨模型量化在反向傳播過程中的梯度消失問題,對此可使用直通估計器來解決。文獻[5]針對二值量化導致模型前向和反向傳播過程產生嚴重的信息丟失問題,提出了一種信息保留網絡(IR-Net,information retention network),通過保留前向傳播和反向傳播中的信息來訓練二值量化模型。IR-Net 在反向傳播過程中采用誤差衰減估計器(EDE,error decay estimator)來計算梯度,通過更好地逼近符號函數來最小化信息損失。文獻[6]提出了學習步長量化(LSQ,learned step size quantization)方法,將量化縮放因子設置為可訓練的參數,使其在網絡反向傳播過程中進行學習調整;該研究通過一種簡單的啟發式方式,將縮放因子的更新和權重的更新保持平衡,得到更好的收斂精度。上述訓練中參數量化方法都能有效降低量化損失,但實際中出于對隱私及數據安全性等問題考慮,訓練數據存在無法訪問使用的情況,此時訓練中參數量化訓練并不適用。雖然參數量化過程發生在模型訓練好之后,但當前常用的訓練后參數量化方法需要使用少量數據集來估算激活量化因子值或進行量化微調,同樣面臨著數據不可用問題。

為解決上述問題,面向無數據的訓練后參數量化方法由此提出。無數據量化針對數據無法訪問的情況及量化激活時需要使用輸入數據這個矛盾,利用模型本身的一些參數特性來生成模擬數據,以此來量化激活。無數據量化的難點主要集中在模擬數據的生成上,其量化性能很大程度取決于模擬數據的質量,因而生成有意義的模擬輸入數據至關重要。文獻[7]首先生成符合高斯分布的隨機輸入數據,然后利用BN 層中均值與方差參數來調節輸入數據,再利用激活函數ReLU 的線性變換縮放不變特性,將量化因子進行等價縮放來調節不同通道的權重范圍,均衡同層間不同通道數據值,使逐層量化達到了逐通道量化的效果。文獻[8]引入知識蒸餾的思想,通過輸入蒸餾數據計算得來的BN 層均值與方差與原始模型對應參數的差值誤差最小化,不斷在反向傳播過程中調整蒸餾數據來得到模擬輸入數據;該研究設計了一種基于帕累托邊界的混合比特量化方法,進一步減小了量化誤差。文獻[9]使用對抗生成網絡的思想來產生模擬輸入數據,提出了一種零樣本對抗量化(ZAQ,zero-shot adversarial quantization)框架,綜合考慮了最終輸出層差異及中間層通道間的量化差異,設計了一個基于兩級差異的結構建模策略來衡量量化模型與原始模型之間的誤差。ZAQ 中的生成器基于極大極小博弈優化思想,以對抗性學習的方式生成信息豐富且多樣化的模擬輸入數據,實現了有效的差異估計和知識轉移。

上述方法雖然達到了無數據量化的目的,但并沒有充分研究利用真實的圖像數據分布特性。同時上述方法使用參數最大值來直接計算得到浮點量化縮放因子,獲得了較好的量化效果,但其量化及反量化過程中參數與量化因子的乘法操作依然為浮點運算,并沒有達到完全消除浮點乘法的效果,存在改進的空間。對此本文基于BN 層參數及圖像數據分布特性來生成模擬輸入數據,使用對數量化方法,使量化及反量化過程僅包含整數乘法、加法及移位運算,能夠進一步提高硬件設備的運算效率、降低能耗損失。

2 損失最小化無數據量化策略

相較于采用浮點縮放因子的線性量化方法,對縮放因子取對數的線性量化方法能夠解決線性量化含有浮點乘法算子的問題。但由于對數量化需對量化因子的指數部分進行取整操作,其舍入過程會產生較大的誤差,因此本文使用損失最小化方法來動態調節取整值。

浮點模型各BN 層參數在模型訓練過程中由卷積層輸出數據計算得到,與輸入數據相關。因而使用逆向思維方式,通過輸入隨機分布數據得到的BN 層參數,將其與原始模型參數相比較,構建損失函數,在反向傳播過程中通過最小化損失調整模擬數據得到最優模擬輸入數據,用來量化激活值。下面對其具體實現進行介紹。

2.1 對數量化方法

線性量化運算簡單,有利于硬件設備實現,故常被各種量化方法[6-9]所采用。本文在線性量化的基礎上,求量化因子時采用取對數的策略,能夠消除量化過程中的浮點乘法運算,使模型在推理過程中更加高效。

其中,x為被量化數據,xq為量化后的整數值;z為量化零點值,本文取z=0;Δ為量化縮放因子;R(·)為取整函數;c為截斷參數,C(·)為截斷函數,其計算方式為

量化縮放因子Δ的計算方式為

其中,n為量化位寬,s為Δ的指數部分值。因為Δ為2 的指數形式,所以量化及反量化過程中Δ與x的浮點乘法運算可用移位運算來代替,而移位操作幾乎不會帶來額外的推理時間和存儲消耗。量化之后通常需要反量化來還原之前的縮放尺寸,而對數量化能夠將權重及激活的量化因子與下一層的量化因子相結合,簡化了反量化操作。反量化的計算方式為

其中,xdq和wdq分別為反量化后的激活及權重值,因xdq*wdq為整數值與2 的指數形式參數相乘,可將其與下一卷積層量化因子相結合。因而本文所用方法能夠使量化及反量化過程中只包含整數乘法、移位及加法等簡單運算,能夠進一步提高運算效率。

2.2 損失最小化量化

對數量化能夠提高運算效率、降低能耗損失,但由式(3)可知,在計算量化縮放因子Δ時,對所求的因子s需要進行取整操作,而s為Δ的指數部分值,對其取整會導致Δ與原始最大值相差較大,最壞情況下會使其與原始最大值相差2±0.5,這給量化操作帶來更大的量化誤差。文獻[10]認為對量化縮放因子取整時,最優的縮放因子并不一定是離其最近的整數值。本文借用上述觀點,在對s進行四舍五入取整的基礎上動態對其進行微調,對比不同因子得到的量化前后數值,選取誤差最小所對應因子s取值。

本文使用L2 范數來衡量量化值與原始值之間的誤差,其計算方式為

其中,x為原始浮點數值;xdq為反量化后得到的數值,其為整數。

如式(7)~式(9)所示,首先通過四舍五入取整得到s0,然后得到量化縮放因子Δ0,代入式(1)得到量化值xq及反量化值xdq,代入式(6)得到對應的損失值。

構造相鄰舍入因子,令

同理可求得s1、s2對應的損失值loss1、loss2,比較loss0、loss1、loss2的大小,則最小的損失所對應的縮放因子為所求值,即

將s代入式(4)即可求得量化縮放因子Δ。

2.3 無數據量化

當前CNN 模型在卷積運算后通過使用BN 層將數據歸一化,能夠有效解決過擬合和梯度爆炸等問題,加快網絡收斂速度。其計算方式為

其中,γ和β為模型訓練過程中學習得到的參數,u和σ2分別為

由式(13)可以看出,BN 層的均值μ及方差σ2皆由輸入的激活值x計算得到。因而可以利用BN層的參數,通過對原始模型輸入一組隨機數據X0,在模型前向傳播過程中算得相應新的參數值和σ2′,將其與原始模型的μ和σ2相比較構建損失函數,在反向傳播過程中使其損失最小化,不斷調整初始輸入數據X0值,得到與真實數據相似的最優模擬輸入數據。

對于均值μ和方差σ2的實際值與模擬數據計算值之間的誤差,構建相應的損失函數為

其中,n為原始模型中BN 層的數量;μi′、為第i層BN 層計算的參數值,是輸入數據X的函數,通過將模擬數據X=X0輸入原始模型,經式(13)計算得到;μi、為其原始模型中的參數值。將損失L(X)通過Adam 算法在反向傳播過程中不斷更新優化初始X0,Adam 算法如算法1 所示。

算法1Adam 算法

算法1 中,gt為目標損失函數L的梯度;mt和vt為其偏一階矩和偏二階矩估計;β1(取β1=0.9)和β2(取β2=0.999)為矩估計的指數衰減率;Xt為待更新輸入數據值;α(取α=0.001)為學習率;ε(取ε=1 ×10-8)為極小的常數。通過Adam 算法得到總模擬輸入數據X=Xt,然后使用得到的模擬輸入數據及2.2 節中提到的損失最小化量化方法就能夠量化激活值,達到無數據量化的效果。

3 設計和實現

卷積神經網絡模型量化主要針對卷積計算過程的激活和權重進行量化操作。對于激活的量化,本文利用BN 層的參數,使用誤差最小方法得到模擬輸入數據,然后使用損失最小化量化方法對其進行量化。對于權重的量化,則直接使用損失最小化量化方法對其進行量化。下面對其具體實現進行介紹。

3.1 數據生成

任取兩張ImageNet 數據集中的圖片,將其進行標準化、裁剪等數據預處理操作(數據維度為3×224×224),之后將其按通道展平為一維數據(3 個一維數據,單個維度為1×50 176),再將每一個數據組按步長500 等距離取樣得到相同位置的散點分布。圖1 展示了兩張圖片在3 個不同通道的取樣數據分布,實線為將離散數據采用10 次多項式插值得到的擬合曲線。從圖1 中可以看到,不同通道數據的擬合曲線有很強的相似性,本文認為這是因為每張圖片的通道間相同位置數據分布有很強的相似性。因而在使用2.3 節提出的模擬數據生成方法時,首先僅生成單一通道的隨機分布數據,然后將其擴充為三通道數據,使之更加符合實際的數據分布特點。

圖1 兩張圖片在3 個不同通道的取樣數據分布

其中,ri(m,s)為隨機取整數函數;m為最大值,對圖像數據取m=255;s=(n,n)為生成數據維度大小,如Resnet[11]模型取n=224。本文在對圖像進行預處理時,標準化過程中使用均值mean=[0.485,0.456,0.406],方差std=[0.229,0.224,0.225],經過歸一化及標準化處理后各維數據的最大值約為[2.249,2.429,2.624],因而在式(15)中將歸一化的數據折中乘以系數α=2.5。把x0擴充為三通道圖像數據X0=(x0,x0,x0),將其輸入原始模型計算得到BN 層的參數μ′及σ2′,代入式(5)計算其相應的損失值,依據損失最小化在反向傳播過程中不斷更新初始值X0,得到模擬輸入數據。

3.2 激活量化

使用3.1 節生成的模擬輸入數據,能夠解決量化激活需要使用數據集的問題。通過將模擬數據X0輸入原始模型得到每層卷積層的激活數據值,使用2.2 節提出的損失最小化量化方法量化激活值,可得到相應的激活量化參數。

圖2 展示了激活量化的大致過程。圖2 中,步驟1表示將一組隨機分布的初始數據輸入原始浮點模型P,使用3.1 節提出的數據生成方法得到模擬數據,利用BN 層參數及損失最小化原理,通過Adam(X0,L)優化在反向傳播不斷調整模擬數據,得到最優的模擬輸入數據X0。步驟2 表示將X0輸入浮點模型得到激活值,使用2.2 節提出的損失最小化量化方法通過量化函數Q(xi)量化激活值,得到相應的激活量化模型Q。

圖2 激活量化的大致過程

3.3 權重量化

本節采用2.2節提出的損失最小化量化方法進行權重量化。首先,對于原始浮點模型給出的權重,分別計算每層卷積權重對應的s0;然后,根據反量化后的值與原始權重誤差最小化原理動態調整s0得到更優的因子s;最后,計算量化縮放因子Δ,對權重進行量化。圖3 展示了損失最小化量化方法對ResNet50 網絡權重進行量化得到的初始因子s0與調整后的因子s取值對比。從圖3 可以看出,對于ResNet50 網絡的權重量化,大概有35%的點取值被調整。

圖3 因子調整前后對比

4 實驗與分析

本節使用本文所提量化方法,在ImageNet[12]數據集上驗證了 ResNet50、Inception-v3[13]、RexNet3[14]等大型圖像分類模型及MobileNetV2[15]、RegNet[16]、GhostNet[17]等輕型圖像分類模型的量化效果,在COCO[18]數據集上驗證了RefineDet[19]和M2Det[20]目標檢測模型的量化效果。本節實驗分為如下幾個部分:1) 將本文所提模擬數據生成方法與ZeroQ 框架模擬數據生成方法進行對比分析實驗;2) 在ImageNet 數據集上使用常用的圖像分類模型進行量化實驗,分析實驗結果;3) 在COCO 數據集上對RefineDet 及M2Det 目標檢測模型進行量化實驗,分析實驗結果。

本文實驗是在Centos7.6 操作系統下進行的,使用的GPU 為NVIDIA Tesla V100 16 GB,實驗運行的Python 版本為3.6.13,Pytorch 版本為1.8.1,torchvision 版本為0.8.2,pytorchcv 版本為0.0.66。實驗中對圖像分類模型使用top1 及top5 準確率[13]來評估模型效果,對目標檢測模型使用平均精準度(AP,average precision)[19]來評估模型效果。

4.1 數據生成對比實驗

本節使用ResNet50 圖像分類網絡,對3.2 節所提的無數據激活量化方法與文獻[9]中ZeroQ 框架的激活量化方法進行對比實驗。本節實驗主要對比模擬數據生成效率,因而實驗中對ZeroQ 同樣采用對數量化策略。因為實驗結果依賴生成的模擬數據集,具有一定的隨機性,所以使用多次實驗取平均值的方式進行,實驗結果如表1 所示。從表1 中可以看出,本文所提無數據激活量化方法相比于ZeroQ 框架的激活量化方法對激活的量化效果,在模擬數據生成速率提高2.33 倍的情況下,量化模型的準確率幾乎相同。本節實驗驗證了本文所提方法在有效減少數據生成時間的同時達到了與ZeroQ 相同的效果。

表1 模擬數據生成效率對比

上述實驗結果驗證了3.1 節所提依據數據分布特性所提出的模擬數據生成方式能夠有效地加快模擬數據的生成,同時生成的模擬數據通過Adam優化調整而不影響其準確率。

4.2 圖像分類模型量化實驗

本節使用常用的圖像分類模型,對激活采用3.2 節所提的無數據激活量化方法,對權重采用3.3 節所提的權重量化方法對網絡進行量化實驗。表2 展示了ResNet50、Inception-v3 及RexNet3等相對較大的圖像分類模型,將其激活和權重量化為8 bit 整數的實驗結果,本節實驗采用3 次實驗取平均值的方式展示實驗結果。從表2 中可以看到,本文所提方法將模型的激活和權重量化為8 bit 整數后,其top1 準確率下降在0.5%左右,top5準確率下降0.2%左右,量化模型準確率和原始模型幾乎差不多。將模型量化至8 bit 能夠減小75%左右模型大小,有效減少內存消耗、提高運算效率。

表2 大型圖像分類模型量化結果

表3 展示了對 Mobile NetV2、RegNet 及GhostNet 等輕量型圖像分類模型的量化結果。表3中W/A 分別表示權重及激活量化位寬,如W8/A8表示將權重和激活分別量化為8 bit 整數。當將權重和激活量化至8 bit 整數時,網絡top1 準確率下降了1%~2%;當將其量化至16 bit 整數,此時top1準確率最大僅減少了0.32%,top5 準確率減少量小于0.1%,達到了和原始浮點模型幾乎相同的精度。將權重和激活量化至16 bit 能夠減小模型大小50%左右,因而本文所提方法對輕量型圖像分類模型依然有壓縮效果。

表3 輕量型圖像分類模型的量化結果

本節通過量化實驗驗證了所提方法對圖像分類模型壓縮加速的有效性。圖像分類任務作為計算機視覺領域的基礎性任務之一,分類模型不僅用于圖像分類任務,而且常用于圖像目標檢測、實例分割等模型的骨干網絡使用,因而所提方法對目標檢測等模型依然有效。

4.3 圖像目標檢測模型量化實驗

本節使用所提方法,對目標檢測模型RefineDet和M2Det 在COCO 2014 驗證集進行了量化對比實驗。表4 展示了將模型的激活采用3.2 節所提的無數據激活量化方法,權重采用3.3 節所提的權重量化方法,分別將其量化至8 bit 整數的量化效果。從表4 中可以看出,相較于原始模型,量化模型的RefineDet 的AP50:95量化誤差約為1.0%,M2Det 模型的AP50:95誤差約為0.6%,量化模型的誤差值都控制在1.0%左右的可接受范圍內。圖4 展示了M2Det 模型對任意一張圖片量化前后目標檢測實際效果對比情況。圖4(b)和圖4(c)分別為原始浮點模型及8 bit 量化模型檢測效果,從圖4 中可以看出,相對而言,僅鼠標檢測的置信度有較大下降,但這幾乎不影響對物體的檢測框,對于大部分物體其置信度并不受影響。

表4 RefineDet 和M2Det 模型量化結果

圖4 M2Det 模型量化效果對比

對于上述實驗結果,本文認為首先所提模擬數據生成方法生成的模擬輸入數據達到了與真實數據相近似的分布。其次,雖然對數量化會引入較大的量化誤差,但所提損失最小化量化方法能夠有效減小量化誤差,進一步提高量化精度。

5 結束語

針對數據集不可用場景下CNN 量化問題,本文基于BN 層參數提出一種基于損失最小的CNN無數據量化方法。本文依據圖像各通道數據分布特性,利用BN 層參數及最小化誤差的方法,生成模擬數據用來量化激活值。在對量化因子取整的操作中,提出基于最小化不同取整值與原始浮點數值間誤差進行選擇性取整的方法,選取最接近原始值的舍入值,有效地降低了量化損失。通過對常用圖像分類及目標檢測模型進行量化對比實驗,尤其對輕量型分類模型進行了大量實驗,驗證了所提方法的有效性。本文使用的對數量化方法能夠消除量化及反量化過程中的浮點乘法運算,進一步提高模型運算效率、降低功耗損失,有助于CNN 模型在手機等運算受限設備及云端部署應用。下一步考慮將所提方法與模型剪枝等壓縮方式相結合,進一步減小模型大小。

猜你喜歡
實驗方法模型
一半模型
記一次有趣的實驗
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
做個怪怪長實驗
3D打印中的模型分割與打包
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
主站蜘蛛池模板: 亚洲日韩AV无码一区二区三区人| 亚洲无码日韩一区| 91极品美女高潮叫床在线观看| 国产成人你懂的在线观看| 国产高清无码麻豆精品| 波多野结衣久久高清免费| 97国内精品久久久久不卡| 欧美日本激情| 中文字幕亚洲无线码一区女同| 欧美成人精品在线| 亚洲天堂高清| 欧美在线中文字幕| 国产午夜人做人免费视频| 一级毛片在线免费看| 国产无码高清视频不卡| 久久精品日日躁夜夜躁欧美| 中文字幕在线看视频一区二区三区| 无码粉嫩虎白一线天在线观看| 亚洲专区一区二区在线观看| 国产产在线精品亚洲aavv| 精品91在线| 欧美成在线视频| 国产日本欧美亚洲精品视| 国产自在自线午夜精品视频| 欧美三级日韩三级| 一级香蕉视频在线观看| 中文字幕无码电影| 亚洲性日韩精品一区二区| 激情无码视频在线看| 99国产精品免费观看视频| 在线国产你懂的| 毛片免费视频| 在线观看亚洲人成网站| 婷婷亚洲视频| 久久99国产精品成人欧美| 久久夜色精品国产嚕嚕亚洲av| 国产一区二区影院| 久久亚洲中文字幕精品一区| 国产经典三级在线| 国内精品视频区在线2021| 国产在线欧美| 丁香六月激情综合| 国产欧美日韩视频一区二区三区| 日本成人一区| 日本福利视频网站| 亚洲第一区精品日韩在线播放| 综合色亚洲| 久久精品人人做人人爽电影蜜月 | 亚洲开心婷婷中文字幕| av在线手机播放| 国产欧美精品一区aⅴ影院| 手机在线免费不卡一区二| 欧美精品H在线播放| 中文字幕在线观看日本| 亚洲国产日韩在线成人蜜芽| a级毛片一区二区免费视频| 大陆精大陆国产国语精品1024| 日韩经典精品无码一区二区| 亚洲综合九九| 国产成人一级| 中文精品久久久久国产网址| 特级aaaaaaaaa毛片免费视频| 91精选国产大片| 国产精品成人免费综合| 午夜国产精品视频| 久久女人网| 欧美日韩一区二区三| 激情无码视频在线看| 亚洲无卡视频| 干中文字幕| 亚洲综合片| 国产精品欧美激情| 亚洲精品无码久久毛片波多野吉| 另类专区亚洲| 国产白丝av| 波多野结衣无码视频在线观看| 国产成人精品一区二区| 欧美一区二区人人喊爽| 毛片免费高清免费| 77777亚洲午夜久久多人| 欧美一区二区人人喊爽| 五月天天天色|