每年都會(huì)開(kāi)發(fā)出更深的模型來(lái)執(zhí)行各種任務(wù),例如對(duì)象檢測(cè),圖像分割等,這些任務(wù)始終能夠擊敗最新模型。但是,人們?cè)絹?lái)越關(guān)注使模型更輕便,更高效,以便它們可以在邊緣設(shè)備和移動(dòng)設(shè)備上運(yùn)行。這對(duì)于彌合機(jī)器學(xué)習(xí)的研究和生產(chǎn)價(jià)值之間的差距非常重要。
減少深度神經(jīng)網(wǎng)絡(luò)的內(nèi)存和計(jì)算成本的一種方法是二值神經(jīng)網(wǎng)絡(luò)的概念。二值神經(jīng)網(wǎng)絡(luò)的概念非常簡(jiǎn)單,其中權(quán)重和激活張量的每個(gè)值都使用+1和-1表示,以便它們可以以1字節(jié)而不是全精度存儲(chǔ)(在1-中表示為0 位整數(shù))。使用以下所示的符號(hào)函數(shù)將浮點(diǎn)值轉(zhuǎn)換為二進(jìn)制值-
現(xiàn)在,使用閾值函數(shù)作為上述函數(shù)的一個(gè)主要問(wèn)題是該函數(shù)的梯度趨于為零。一種解決方案是使用直通估算器。直通估算器是一種在梯度傳遞過(guò)程中完全照原樣通過(guò)漸變而不會(huì)發(fā)生任何變化的估計(jì)器。這簡(jiǎn)化了二值神經(jīng)網(wǎng)絡(luò)中閾值函數(shù)的反向傳播機(jī)制,并顯示出很好的效果。
在梯度累積階段,將使用二進(jìn)制權(quán)重和激活來(lái)累積每一層的梯度。但是權(quán)重更新是對(duì)實(shí)值原始權(quán)重進(jìn)行的。為什么會(huì)這樣呢?讓我舉例說(shuō)明。
我們?cè)谏窠?jīng)網(wǎng)絡(luò)中有一個(gè)值為0.05的節(jié)點(diǎn)(原始參數(shù))。
通過(guò)閾值函數(shù)傳遞此值后,我們獲得的值為1(二進(jìn)制參數(shù))。
讓我們假設(shè)在二進(jìn)制參數(shù)處累積的梯度為3。我們使用直通估計(jì)器的概念將其照原樣傳遞給原始參數(shù)。
現(xiàn)在,一旦累積了漸變,我們就可以更新值。
如果我們使用二進(jìn)制值獲得新的參數(shù)值,則參數(shù)的新值將為10.1 * 3(其中0.1是學(xué)習(xí)率),即0.7。
如果我們使用原始參數(shù)值來(lái)獲取新參數(shù),則新值將為0.050.1 * 3,即-0.25。
這是可以注意到差異的地方。當(dāng)我們執(zhí)行下一個(gè)迭代時(shí),我們將再次通過(guò)二進(jìn)制閾值函數(shù)傳遞新的參數(shù)值,它們將給出不同的結(jié)果。如果我們繼續(xù)使用參數(shù)的二進(jìn)制值,則可能永遠(yuǎn)無(wú)法更改該位,因?yàn)槭冀K會(huì)根據(jù)1或-1計(jì)算損耗。
當(dāng)更新參數(shù)值時(shí),這些值將被裁剪為介于-1和1之間。主要原因是這些值只會(huì)增加/減少,否則對(duì)網(wǎng)絡(luò)沒(méi)有任何影響。需要注意的一件事是,最后一個(gè)激活層中的值未進(jìn)行二值化,而是按原樣用于分類/回歸。這些是二值神經(jīng)網(wǎng)絡(luò)的基本概念。
可以添加到權(quán)重和激活層二值化的另一個(gè)改進(jìn)是使用縮放因子來(lái)表示權(quán)重和激活。在這里,比例因子只是權(quán)重向量中所有值的平均值的絕對(duì)值。如果我們有一個(gè)2 * 2矩陣,其值[[0.2,0.2],[-0.6,-0.6]],則比例因子α將為0.2,二進(jìn)制矩陣表示為[[1,1],[-1,- 1]]。
因此,一旦權(quán)重和激活連同它們各自的縮放因子一起以二進(jìn)制形式表示,就可以使用以下公式表示。在此,I和W分別表示激活層和權(quán)重層,而激活和權(quán)重的縮放因子分別使用κ和α表示。
現(xiàn)在,作為卷積運(yùn)算基礎(chǔ)的乘積(MAC)函數(shù)是非常昂貴的運(yùn)算?,F(xiàn)在,可以將其替換為XNOR + 彈出計(jì)數(shù)操作。 幾乎每個(gè)CPU都固有地執(zhí)行按位運(yùn)算,并且這些運(yùn)算的執(zhí)行速度明顯更快且成本更低。彈出計(jì)數(shù)操作只不過(guò)是檢查設(shè)置的位。下面的示例顯示了MAC操作可以由XNOR + 彈出計(jì)數(shù)操作代替。
但是二值神經(jīng)網(wǎng)絡(luò)的主要缺點(diǎn)在于,它們無(wú)法實(shí)現(xiàn)與完全精度的深層網(wǎng)絡(luò)一樣高的精度。但這一直在緩慢地變化,并且每年(與每月發(fā)表論文的數(shù)量越來(lái)越相似),隨著差距的縮小,已經(jīng)有了很多進(jìn)步。由于人們?cè)絹?lái)越關(guān)注在具有有限計(jì)算資源的設(shè)備上實(shí)施機(jī)器學(xué)習(xí)模型,因此在未來(lái)幾年中,將會(huì)在該領(lǐng)域進(jìn)行更多的研究。
責(zé)任編輯:YYX
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4814瀏覽量
103581
發(fā)布評(píng)論請(qǐng)先 登錄
神經(jīng)網(wǎng)絡(luò)專家系統(tǒng)在電機(jī)故障診斷中的應(yīng)用
基于FPGA搭建神經(jīng)網(wǎng)絡(luò)的步驟解析

BP神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的比較
BP神經(jīng)網(wǎng)絡(luò)的優(yōu)缺點(diǎn)分析
什么是BP神經(jīng)網(wǎng)絡(luò)的反向傳播算法
BP神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)的關(guān)系
BP神經(jīng)網(wǎng)絡(luò)的基本原理
人工神經(jīng)網(wǎng)絡(luò)的原理和多種神經(jīng)網(wǎng)絡(luò)架構(gòu)方法

卷積神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的比較
RNN模型與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的區(qū)別
LSTM神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)與工作機(jī)制
LSTM神經(jīng)網(wǎng)絡(luò)的基本原理 如何實(shí)現(xiàn)LSTM神經(jīng)網(wǎng)絡(luò)
Moku人工神經(jīng)網(wǎng)絡(luò)101

評(píng)論