扔掉浮點(diǎn)數(shù)!1和-1組成的神經(jīng)網(wǎng)絡(luò),如何實(shí)現(xiàn)58倍加速?
2016年,深度學(xué)習(xí)領(lǐng)域還在熱衷于構(gòu)建越來越大的模型時(shí),一篇名為《Binarized Neural Networks》的論文橫空出世。
提出了一個(gè)看似瘋狂的想法:將神經(jīng)網(wǎng)絡(luò)中的權(quán)重和激活值全部壓縮到只有+1和-1兩種狀態(tài)。
圖片
??論文地址:https://arxiv.org/pdf/1602.02830
這種“極致量化”的方法不僅讓模型大小縮小了32倍,還將耗電的浮點(diǎn)數(shù)乘法變成了高效的位運(yùn)算。
今天,就讓我們一起解讀這項(xiàng)改變深度學(xué)習(xí)部署格局的里程碑工作。
1.為什么需要“二值化”?
深度學(xué)習(xí)遭遇資源瓶頸,大模型遇到大麻煩
在深入論文之前,我們首先需要理解為什么研究者要探索如此極端的技術(shù)路徑。
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的資源瓶頸
一個(gè)典型的現(xiàn)代神經(jīng)網(wǎng)絡(luò)可能包含數(shù)百萬甚至數(shù)十億個(gè)參數(shù)。
每個(gè)參數(shù)通常使用32位浮點(diǎn)數(shù)表示,每一次前向傳播都需要執(zhí)行數(shù)百萬次浮點(diǎn)乘加運(yùn)算。
圖片
這種計(jì)算模式帶來三個(gè)核心問題:
- 巨大的存儲(chǔ)需求:像ResNet-50這樣的經(jīng)典模型,權(quán)重文件就需要超過100MB的存儲(chǔ)空間
- 高計(jì)算能耗:浮點(diǎn)數(shù)乘法在硬件上是極其耗電的操作
- 內(nèi)存帶寬瓶頸:在許多情況下,從內(nèi)存中讀取數(shù)據(jù)比實(shí)際計(jì)算更加耗時(shí)和耗能
邊緣計(jì)算的崛起與挑戰(zhàn)
隨著物聯(lián)網(wǎng)和移動(dòng)設(shè)備的發(fā)展,我們?cè)絹碓叫枰谫Y源受限的環(huán)境(如手機(jī)、攝像頭、傳感器)中直接運(yùn)行AI模型,而不是依賴云端計(jì)算。
圖片
這一趨勢(shì)使得模型壓縮和加速技術(shù)成為推動(dòng)AI在邊緣設(shè)備廣泛應(yīng)用的關(guān)鍵因素。
"二值神經(jīng)網(wǎng)絡(luò)"(Binarized Neural Networks, BNN) 正是在這種背景下應(yīng)運(yùn)而生,它代表了模型壓縮技術(shù)的極致追求。
2.如何實(shí)現(xiàn)這種“極致量化”?
二值化神經(jīng)網(wǎng)絡(luò)橫空出世,用1比特存儲(chǔ)權(quán)重
二值神經(jīng)網(wǎng)絡(luò)的核心思想非常簡(jiǎn)單粗暴:將傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中32位浮點(diǎn)數(shù)的權(quán)重和激活值全部約束為只有兩個(gè)值:+1或-1。
圖片
在硬件實(shí)現(xiàn)上,這兩個(gè)值可以用單個(gè)比特表示(0表示+1,1表示-1),這意味著原本需要32位表示的數(shù)據(jù)現(xiàn)在只需要1位。
理論上的內(nèi)存節(jié)省正好是32倍。理解BNN的一個(gè)好方法是將其與數(shù)字電子技術(shù)類比。
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)像是使用模擬信號(hào)(連續(xù)值),而BNN則像是使用數(shù)字信號(hào)(離散值)。
雖然數(shù)字信號(hào)損失了一些信息,但它具有抗噪聲能力強(qiáng)、易于處理和傳輸?shù)膬?yōu)勢(shì)。
BNN看似簡(jiǎn)單的概念背后,隱藏著精妙的技術(shù)設(shè)計(jì)。如何用二值化的參數(shù)和激活值來訓(xùn)練和運(yùn)行神經(jīng)網(wǎng)絡(luò),并保持一定的精度。
其主要方法可以概括為以下幾點(diǎn):
二值化函數(shù)(Binarization Function)
首先,什么是二值化? 簡(jiǎn)單來說,就是通過一個(gè)符號(hào)函數(shù)(Sign Function)來處理數(shù)值:如果輸入大于等于0,輸出+1;否則輸出-1。
圖片
但問題來了:這樣的二值化函數(shù)在反向傳播中幾乎不可導(dǎo),梯度無法傳播,網(wǎng)絡(luò)無法訓(xùn)練。這似乎是一個(gè)死結(jié)。
論文最精彩的部分就在于提出了直通估計(jì)器(Straight-Through Estimator, STE) 這一巧妙的解決方案。
圖片
在前向傳播(Forward)中,使用一個(gè)非常簡(jiǎn)單的符號(hào)函數(shù)(Sign Function)來進(jìn)行二值化:

在反向傳播(Backward)中,Sign函數(shù)的導(dǎo)數(shù)幾乎處處為0,這會(huì)導(dǎo)致梯度無法傳播。STE巧妙地繞開了這個(gè)問題,它使用一個(gè)飽和的Hard Tanh函數(shù)的梯度來作為Sign函數(shù)的近似梯度:

這使得梯度可以有效地反向傳播回全精度的權(quán)重(見下一點(diǎn))。
訓(xùn)練高精度的“隱變量”(Latent Weights)
這是BNN訓(xùn)練的關(guān)鍵。BNNs在訓(xùn)練過程中并不直接更新二值化的權(quán)重(Binarized Weights)。相反,它維護(hù)一個(gè)全精度(float32)的權(quán)重副本,稱為“隱權(quán)重”或“真實(shí)權(quán)重”。
在每次前向傳播時(shí),將這個(gè)全精度權(quán)重二值化,得到 ,然后用 去計(jì)算。
圖片
在反向傳播時(shí),梯度會(huì)通過STE更新到那個(gè)全精度的權(quán)重副本上。
這個(gè)全精度的權(quán)重積累了訓(xùn)練過程中所有的微小梯度更新,包含了網(wǎng)絡(luò)學(xué)習(xí)到的知識(shí),是訓(xùn)練過程的“主力軍”。
這樣,既享受了二值化帶來的計(jì)算效率,又保證了訓(xùn)練過程的穩(wěn)定性和最終模型的精度。
二值化矩陣乘法與卷積的優(yōu)化
BNN的真正威力體現(xiàn)在推理過程中。當(dāng)權(quán)重和激活值都二值化后,最耗時(shí)的矩陣乘法和卷積操作可以被極大地簡(jiǎn)化。
圖片
傳統(tǒng)的乘加運(yùn)算(MAC)被替換為位運(yùn)算(XNOR) 和位計(jì)數(shù)(Popcount)。
- +1? 可以映射為比特0
- -1? 可以映射為比特1
那么,兩個(gè)二值向量的點(diǎn)積 A · B? 就等價(jià)于:A XNOR B?,然后計(jì)算結(jié)果中 1 的位計(jì)數(shù),最后再做一個(gè)簡(jiǎn)單的線性變換。
由于XNOR和popcount操作在硬件上的速度極快、能耗極低,理論上可以獲得32倍的內(nèi)存節(jié)省和58倍的運(yùn)算加速(與float32相比)。
第一層與最后一層的處理
當(dāng)然,BNN在實(shí)踐中也需要一些特殊處理,特別是在網(wǎng)絡(luò)的輸入層和輸出層。
對(duì)于輸入層,由于圖像的像素值通常是8位整數(shù)(0-255),不是二值的。直接二值化會(huì)帶來較大的信息損失。
因此,論文建議第一層的輸入保持為8位精度,只有第一層的權(quán)重是二值的。由于第一層計(jì)算量通常只占整個(gè)網(wǎng)絡(luò)的很小一部分,這對(duì)整體加速影響不大。
圖片
而在輸出層中,最后一層通常產(chǎn)生用于分類的概率分布,也需要更高的精度。因此,最后一層的權(quán)重和激活也通常保持為高精度。
這種靈活的處理策略體現(xiàn)了論文作者的實(shí)用主義思想:在關(guān)鍵地方極端優(yōu)化,在必要地方保持精度。
3.實(shí)驗(yàn)結(jié)果與結(jié)論
精度與效率的平衡,在ImageNet上的表現(xiàn)
那么,BNN在實(shí)際數(shù)據(jù)集上的表現(xiàn)如何呢?
在MNIST、CIFAR-10、SVHN等中小型數(shù)據(jù)集上,BNN達(dá)到了與全精度網(wǎng)絡(luò)非常接近的精度,證明了方法的有效性。
圖片
但在大型數(shù)據(jù)集ImageNet(使用AlexNet架構(gòu))上,BNN與全精度模型相比存在明顯的精度差距——Top-1準(zhǔn)確率下降約10%以上。
這表明極端二值化確實(shí)會(huì)帶來一定的信息損失,在處理復(fù)雜問題時(shí)尤為明顯。
但這換來的是模型大小縮小約32倍,推理速度顯著加快,能耗大幅降低。
圖片
對(duì)于很多場(chǎng)景,這種 trade-off 是完全值得的。
畢竟,讓AI模型能夠在資源受限的設(shè)備上運(yùn)行,遠(yuǎn)比追求那幾個(gè)百分點(diǎn)的精度提升更為重要。
結(jié)語
二值神經(jīng)網(wǎng)絡(luò)的研究給我們帶來的不僅是具體的技術(shù)方案,更是一種思維方式的啟示:通過極致簡(jiǎn)化挑戰(zhàn)復(fù)雜問題。
在AI模型越來越龐大、越來越復(fù)雜的今天,BNN代表了一種反向的思考方向:如何用最少的資源實(shí)現(xiàn)最大的價(jià)值。這種思維不僅在技術(shù)上具有重要意義,也符合可持續(xù)發(fā)展的大趨勢(shì)。
本文轉(zhuǎn)載自???Fairy Girl???,作者:Fairy Girl

















