方澤彬 吳小笛 楊帆 何杰遜
(第七一五研究所,杭州,310023)
當(dāng)前,DCNN 相對(duì)傳統(tǒng)機(jī)器學(xué)習(xí)算法的優(yōu)勢(shì)不斷擴(kuò)大,傳統(tǒng)學(xué)習(xí)方法在多個(gè)領(lǐng)域無(wú)法與深度學(xué)習(xí)抗衡,比如手寫體識(shí)別、圖像分類、圖像語(yǔ)義理解、語(yǔ)音識(shí)別和自然語(yǔ)言理解等技術(shù)領(lǐng)域[1]。近年來(lái),CNN 在越來(lái)越多的領(lǐng)域超越傳統(tǒng)模式識(shí)別與機(jī)器學(xué)習(xí)算法,取得頂級(jí)的性能與精度。這些成果主要是通過(guò)增加神經(jīng)網(wǎng)絡(luò)層數(shù)、加大訓(xùn)練樣本的數(shù)量、改進(jìn)訓(xùn)練學(xué)習(xí)算法這三方面的技術(shù)手段來(lái)實(shí)現(xiàn)的。不同結(jié)構(gòu)的CNN 在運(yùn)行過(guò)程中的運(yùn)行效率和工作功耗都是存在差異的,而這種差異會(huì)反應(yīng)到識(shí)別效率和設(shè)備功耗上,目前國(guó)內(nèi)外對(duì)此的研究文獻(xiàn)都相對(duì)較少,但是這方面的分析和討論是非常有意義和必要的。
側(cè)信道攻擊(Side Channel Attack,SCA)的主要方法有功耗攻擊、電磁場(chǎng)攻擊和時(shí)間攻擊。通過(guò)類比側(cè)信道攻擊加密電子設(shè)備的方法,我們?cè)O(shè)計(jì)了可以運(yùn)行多種DCNN 并進(jìn)行實(shí)時(shí)功率采集的硬件平臺(tái)。
我們通過(guò)運(yùn)行搭載在人工智能(Artificial Intelligence,AI)設(shè)備的CNN,并連續(xù)采集電壓和電流數(shù)據(jù),形成電源功耗的數(shù)據(jù)集。對(duì)于每個(gè)CNN,我們多次重復(fù)之前的采樣和數(shù)據(jù)處理過(guò)程,最終形成n組功耗特征數(shù)據(jù)。我們?cè)O(shè)計(jì)分類器D 并將數(shù)據(jù)集進(jìn)行訓(xùn)練,為了進(jìn)一步評(píng)估參數(shù),增加設(shè)置了幾個(gè)不常用的稀疏度變化的新模型,因此最終標(biāo)簽包括結(jié)構(gòu)參數(shù)y和稀疏度參數(shù)λ,側(cè)信道算法詳見(jiàn)表1。
表1 側(cè)信道攻擊算法
為了能采集到不同CNN 運(yùn)行過(guò)程中的功耗數(shù)據(jù),首先我們需要一個(gè)能運(yùn)行多種CNN 的AI設(shè)備,它能長(zhǎng)時(shí)間同時(shí)穩(wěn)定運(yùn)行多個(gè)卷積神經(jīng)網(wǎng)絡(luò),并支持實(shí)時(shí)切換。功耗數(shù)據(jù)通過(guò)示波器進(jìn)行實(shí)時(shí)觀察,相關(guān)數(shù)據(jù)通過(guò)采集卡進(jìn)行長(zhǎng)期連續(xù)采集。
此次實(shí)驗(yàn)我們選用的嵌入式AI 設(shè)備為樹(shù)莓派3B+,其采用了BCM2837B0 型號(hào)CPU 構(gòu)建,在2.4 GHz 和5 GHz 的頻帶都有優(yōu)異的性能,有線和無(wú)線網(wǎng)絡(luò)吞吐量大約是上一版本的3 倍,并且能夠在更長(zhǎng)的時(shí)間內(nèi)保持高性能運(yùn)行。
測(cè)試實(shí)驗(yàn)我們使用Alex Krizhevsky[2]設(shè)計(jì)的AlexNet(Alex Neural Network)對(duì)圖1 的圖像集進(jìn)行圖像分類。圖2 為圖像分類期間的功耗圖??梢杂^察到圖像中有24 個(gè)峰,對(duì)應(yīng)圖像集中的24 個(gè)圖像。設(shè)備運(yùn)行CNN 的整個(gè)過(guò)程,存在開(kāi)始階段和結(jié)束階段,我們?nèi)コ四切┑凸β孰A段數(shù)據(jù),僅取CNN 運(yùn)行階段的數(shù)據(jù),作為后續(xù)數(shù)據(jù)處理的數(shù)據(jù)集。
圖1 CNN 訓(xùn)練用圖像集
圖2 使用AlexNet 對(duì)圖像進(jìn)行分類的效果圖
由于功耗的瞬時(shí)性,在實(shí)驗(yàn)設(shè)計(jì)過(guò)程中,我們將每五張圖片分為一組,整理所有功耗數(shù)據(jù)。實(shí)驗(yàn)階段,我們?cè)贏I 設(shè)備上依次運(yùn)行了六種常見(jiàn)的CNN,并使用相同的圖像集對(duì)其進(jìn)行測(cè)試。數(shù)據(jù)采集和處理后,我們獲得功能強(qiáng)大的數(shù)據(jù)集,具體如圖3 所示。
圖3 功率特征數(shù)據(jù)集的可視化
在本次實(shí)驗(yàn)中,我們使用機(jī)器學(xué)習(xí)技術(shù)來(lái)識(shí)別CNN。首先,我們擴(kuò)大了功耗數(shù)據(jù)的量,每個(gè)網(wǎng)絡(luò)模型的功耗數(shù)據(jù)的量約有20 000 組,將功率特征數(shù)據(jù)集隨機(jī)分為訓(xùn)練集和測(cè)試集,其比率為4∶1。首先僅使用SVM 分類器來(lái)進(jìn)行分類。測(cè)試集的結(jié)果如圖4 所示,其中紅色部分表示的是架構(gòu)識(shí)別的準(zhǔn)確率,平均分類準(zhǔn)確率達(dá)到96.50%??梢钥闯霾煌珻NN 的功耗特征具有很高的區(qū)分度,因此開(kāi)展后續(xù)實(shí)驗(yàn)是很有意義的。
圖4 不同CNN 的識(shí)別結(jié)果
為了保證實(shí)驗(yàn)對(duì)象的豐富性和代表性,我們?cè)谥皩?shí)驗(yàn)的基礎(chǔ)上,選取了9 種常用深度卷積神經(jīng)網(wǎng)絡(luò)來(lái)進(jìn)行后續(xù)實(shí)驗(yàn),分別是Inception-v1、Inception-v2、Inception-v3、Inception-v4、ResNet-v1、ResNet-v2、MobileNet-v1、MobileNet-v2、AlexNet等9 種網(wǎng)絡(luò)。不同的機(jī)器學(xué)習(xí)算法具有不同的適用范圍。由于網(wǎng)絡(luò)種類的不同,為了避免單一機(jī)器學(xué)習(xí)方法得到的混淆矩陣的效果過(guò)好或是過(guò)差,所以在數(shù)據(jù)處理階段使用隨機(jī)森林、支持向量機(jī)(Support Vector Machines,SVM)、K 近鄰分類算法(K-Nearest Neighbor,KNN)、樸素貝葉斯這4 種算法,以保證結(jié)果的科學(xué)性、嚴(yán)謹(jǐn)性。
2.1.1 實(shí)驗(yàn)設(shè)計(jì)
CNN 是一種具有多層網(wǎng)絡(luò)結(jié)構(gòu)的深層前饋模型,其模型基本結(jié)構(gòu)如圖5 所示,CNN 的主要結(jié)構(gòu)包括卷積層、池化層、全連接層、輸出層四類。將圖像數(shù)據(jù)輸入到CNN 模型之中,多個(gè)不同的卷積核就會(huì)與輸入到模型之中的圖像數(shù)據(jù)進(jìn)行卷積運(yùn)算,然后把運(yùn)算結(jié)果再加上一個(gè)偏置就可以提取出圖像數(shù)據(jù)的局部特征圖,之后再將卷積運(yùn)算的輸出結(jié)果通過(guò)一個(gè)非線性激活函數(shù)處理之后,對(duì)激活函數(shù)的輸出結(jié)果進(jìn)行池化操作,就可保留圖像數(shù)據(jù)中最顯著的特征。將獲取的顯著特征通過(guò)全連接層,并利用分類器輸出相應(yīng)的結(jié)果。
圖5 深度卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
ResNet(Residual Neural Network)[3]的基本網(wǎng)絡(luò)結(jié)構(gòu)如表2 所示,不同深度的網(wǎng)絡(luò)結(jié)構(gòu)由不同的子模塊搭建,一種基于基本塊(BasicBlock),淺層網(wǎng)絡(luò)ResNet18、ResNet34 都由BasicBlock搭成,另一種基于瓶頸層(Bottleneck),深層網(wǎng)絡(luò)ResNet50、ResNet101、ResNet152 乃至更深的網(wǎng)絡(luò)都由Bottleneck 搭成。我們選擇了ResNet101作為實(shí)驗(yàn)對(duì)象,并設(shè)置了5 組對(duì)照組,分別修改5 組超參數(shù)中卷積層的層數(shù),反映到代碼上只需要修改ResNet_utild.Block 中卷積層的層數(shù)。5 組數(shù)據(jù)分別記作block1~block5,其Bottleneck 中的層數(shù)依次為為3163、3263、3264、3363、4263。
表2 ResNet 基本的網(wǎng)絡(luò)結(jié)構(gòu)
2.1.2 實(shí)驗(yàn)數(shù)據(jù)分析
通過(guò)改變ResNet_utild.Block 里的參數(shù),得到了5 組不同卷積層數(shù)的深度卷積神經(jīng)網(wǎng)絡(luò),我們記作3163、3263、3264、3363、4263,后續(xù)用四種機(jī)器學(xué)習(xí)得到的混淆矩陣如圖6 所示。
圖6 改變超參數(shù)機(jī)器學(xué)習(xí)的混淆矩陣
四種混淆矩陣的識(shí)別成功率分別為:KNN 算法的40.00%、SVN 算法的37.78%、樸素貝葉斯算法的35.56%、隨機(jī)森林算法的55.56%,從四組混淆矩陣可以看出,改變卷積層的層數(shù)量對(duì)平臺(tái)運(yùn)行CNN 產(chǎn)生的功耗影響較小。
2.2.1 實(shí)驗(yàn)設(shè)計(jì)
研究發(fā)現(xiàn),任何圖像的像素之間局部的相關(guān)性較強(qiáng)。CNN 模型通過(guò)模擬人的神經(jīng)網(wǎng)絡(luò),使用稀疏連接構(gòu)建圖像的局部感知野,利用網(wǎng)絡(luò)每層之間的局部空間相關(guān)性,只把每層的神經(jīng)元節(jié)點(diǎn)和相近的上層神經(jīng)元節(jié)點(diǎn)連接起來(lái),最大限度地減小了神經(jīng)網(wǎng)絡(luò)的參數(shù)規(guī)模[3]。2012 年,Hinton[4]提出了Dropout,當(dāng)一個(gè)復(fù)雜的前饋神經(jīng)網(wǎng)絡(luò)被訓(xùn)練在小的數(shù)據(jù)集時(shí),容易造成過(guò)擬合,為了防止過(guò)擬合,可以通過(guò)阻止特征檢測(cè)器的共同作用來(lái)提高神經(jīng)網(wǎng)絡(luò)的性能。同一年,Alex、Hinton[5]用Dropout 算法防止過(guò)擬合。Dropout 在實(shí)際工作中,能很好地在訓(xùn)練階段阻止神經(jīng)元的共適應(yīng),讓某個(gè)神經(jīng)元以一定概率停止工作,如圖7 所示。
圖7 Dropout 前后的網(wǎng)絡(luò)結(jié)構(gòu)示意圖
圖7 中左邊是原來(lái)的神經(jīng)網(wǎng)絡(luò),右邊是采用Dropout 后的網(wǎng)絡(luò)。原網(wǎng)絡(luò)的計(jì)算公式是:
通過(guò)上述公式中的Bernoulli函數(shù),隨機(jī)生成一個(gè)0~1 的變量ρ,即網(wǎng)絡(luò)稀疏度實(shí)驗(yàn)的可調(diào)整變量。我們分別取ρ為0.2、0.4、0.6、0.8、1.0,針對(duì)Inception-v3 和MobileNet-v1 這兩個(gè)網(wǎng)絡(luò)進(jìn)行功耗采集以及數(shù)據(jù)分析。
2.2.2 實(shí)驗(yàn)數(shù)據(jù)分析
Inception-v3 和MobileNet-v1 這兩個(gè)深度卷積神經(jīng)網(wǎng)絡(luò)實(shí)驗(yàn)數(shù)據(jù)生成的混淆矩陣如圖8~9。由圖中混淆矩陣可知,ρ=0.2 時(shí)的識(shí)別成功率已經(jīng)非常理想,新增的實(shí)驗(yàn)組主要考察的稀疏度范圍是0.4~1.0。通過(guò)混合架構(gòu)和參數(shù)稀疏度變量,我們共得到16 個(gè)不同網(wǎng)絡(luò)的功耗數(shù)據(jù),對(duì)其進(jìn)行分析,結(jié)果如圖10 所示。
圖8 Inception-v3 網(wǎng)絡(luò)稀疏度機(jī)器學(xué)習(xí)的混淆矩陣
圖9 MobileNet-v1 網(wǎng)絡(luò)稀疏度機(jī)器學(xué)習(xí)的混淆矩陣
圖10 CNN 精細(xì)分類的混淆矩陣
具體實(shí)驗(yàn)結(jié)果數(shù)據(jù)如表3 所示。表中的準(zhǔn)確率是基于上文提到的4 種機(jī)器學(xué)習(xí)算法得到的準(zhǔn)確率的平均值。由表中實(shí)驗(yàn)數(shù)據(jù)可知,除了AlexNet 的識(shí)別成功率偏低以外,另外五種網(wǎng)絡(luò)的平均識(shí)別準(zhǔn)確率都超過(guò)75%?;煜仃嚤砻鳎词瓜∈瓒葏?shù)變化,我們?nèi)匀灰韵鄬?duì)較高的準(zhǔn)確度獲得CNN 的結(jié)構(gòu)。精細(xì)分類任務(wù)下的參數(shù)稀疏度識(shí)別成功率雖然略有降低,但結(jié)果仍然是可以接受的。
表3 實(shí)驗(yàn)結(jié)果
2.3.1 實(shí)驗(yàn)設(shè)計(jì)
我們經(jīng)常在訓(xùn)練完一個(gè)模型之后希望保存訓(xùn)練的結(jié)果,以便下次數(shù)據(jù)迭代或者用作測(cè)試,TensorFlow 針對(duì)這一需求提供了Estimator 類[6]。Estimator 類提供了向檢查點(diǎn)文件Checkpoint 保存和從Checkpoint 文件中恢復(fù)變量的相關(guān)方法。Checkpoint 文件是一個(gè)二進(jìn)制文件,它把變量名映射到對(duì)應(yīng)的tensor 值,只在train()進(jìn)行的時(shí)候保存數(shù)據(jù),如圖11 所示。Checkpoint 可以直接使用,也可以作為從它停止的地方重新運(yùn)行的起點(diǎn)。我們分別對(duì)ResNet-v1 和ResNet-v2 這兩個(gè)深度卷積神經(jīng)網(wǎng)絡(luò)設(shè)置了2 組對(duì)照組,其中Checkpoint分別取兩個(gè)不同的文件ckpt0 和ckpt1。
圖11 生成Checkpoint 流程圖
2.3.2 實(shí)驗(yàn)數(shù)據(jù)分析
四種不同機(jī)器學(xué)習(xí)方法所得的混淆矩陣如圖12 所示,我們都能得到比較理想的識(shí)別結(jié)果,四種機(jī)器學(xué)習(xí)方法得出的混淆矩陣的識(shí)別成功率分別為KNN 算法的96.67%、SVN 算法的96.67%、樸素貝葉斯算法的 97.78%、隨機(jī)森林算法的96.67%,識(shí)別成功率均在96%以上,識(shí)別效果非常好。
圖12 ResNet-v1 和ResNet-v2 初始化狀態(tài)改變的混淆矩陣
由此可見(jiàn),通過(guò)改變同一CNN 的Checkpoint,對(duì)其運(yùn)行階段功耗的影響是顯著的,這點(diǎn)可以通過(guò)混淆矩陣非常直觀的反映出來(lái)。同樣,使用相同Checkpoint 的不同CNN 也能夠通過(guò)這種方式被高精度的識(shí)別出來(lái)。
本文通過(guò)對(duì)常見(jiàn)DCNN 設(shè)置對(duì)照實(shí)驗(yàn),證實(shí)了類比側(cè)信道攻擊的功耗分析法能夠高精度識(shí)別CNN。不同卷積結(jié)構(gòu)、不同檢查點(diǎn)文件、不同網(wǎng)絡(luò)稀疏度的CNN 都能通過(guò)功耗分析的方式進(jìn)行識(shí)別。這種識(shí)別方式有一定的普遍性,后續(xù)可拓展的實(shí)驗(yàn)方向很多。受制于實(shí)驗(yàn)設(shè)備的局限性,本實(shí)驗(yàn)存在許多不足,接下來(lái)需要改進(jìn)完善的內(nèi)容主要有以下幾點(diǎn):
(1)本文的研究方向?qū)τ谝话愕腃NN 有一定的普遍性,由于實(shí)驗(yàn)受限,所涉及到的網(wǎng)絡(luò)種類以及對(duì)照實(shí)驗(yàn)次數(shù)均有不足。未來(lái)可以拓展實(shí)驗(yàn)的CNN 種類,增大數(shù)據(jù)采集量;
(2)實(shí)驗(yàn)使用的均為DCNN,后續(xù)可以增加除卷積層外的對(duì)照實(shí)驗(yàn),例如全連接層、池化層等;
(3)選用的四種機(jī)器學(xué)習(xí)分類方式也各自存在算法缺陷,后續(xù)可以考慮增加決策樹(shù)(Decision Tree,DT)分類算法、邏輯回歸(Logistic regression,LR)分類算法;
(4)由于設(shè)備限制,實(shí)驗(yàn)所用采集卡的采集速率為1000 kS/s。后續(xù)實(shí)驗(yàn)中,采集卡的性能還可以得到提升,現(xiàn)在每個(gè)網(wǎng)絡(luò)的功耗數(shù)據(jù)組約為20 000 組,未來(lái)可以增加數(shù)據(jù)組的量,進(jìn)一步提升實(shí)驗(yàn)的科學(xué)性和嚴(yán)謹(jǐn)性。