肖林聲,錢慎一
(鄭州輕工業(yè)大學 計算機與通信工程學院,鄭州 450002)
深度學習已經被證明在很多的機器學習任務中表現(xiàn)出色,這些深度神經網絡(DNN)可以從大量的樣本中訓練出高精度的模型,然后以極高的準確率對新的樣本進行分類,因此DNN被大量的用于各種環(huán)境和任務中[1-3].而在當今的世界中,深度學習和人工智能技術發(fā)展遇到了兩個主要的挑戰(zhàn),一個是在的大多數(shù)的行業(yè)中,數(shù)據(jù)以數(shù)據(jù)孤島的形式存在;另一個是訓練人工智能模型需要大量的數(shù)據(jù),而將數(shù)據(jù)的不當收集將使得數(shù)據(jù)的隱私和安全難以得到保護[4].為了解決以上問題,谷歌最早提出了聯(lián)邦學習的概念[5-7].他們的主要想法是基于分布在多個設備上的數(shù)據(jù)來構建機器學習模型,并同時防止用戶的隱私泄露.
除此之外,最近關于機器學習和安全領域的研究也表明,攻擊者可以通過讓大多數(shù)的包括DNN在內的機器學習模型,使用精心設計的輸入來迫使其輸出攻擊者所選擇的輸出.攻擊者精心設計的樣本被稱為對抗樣本,對抗樣本的設計算法僅引入了盡可能少量的擾動,使得對抗樣本和正常樣本難以區(qū)分.圖1展示了普通樣本和對抗樣本的區(qū)別.
圖1中,圖像(a)被訓練完成的DNN正確分類為數(shù)字“8”,而圖像(b)則是對抗樣本設計算法從正確的圖像中生成的并被分類為錯誤的數(shù)字“4”.深度學習被廣泛用于車輛的自動駕駛中,基于DNN的系統(tǒng)用于識別道路上的標識和車輛[8],若干擾這些系統(tǒng)的輸入,例如輕微的改變車身導致對于行駛的車輛識別失敗,則會無法使得汽車停下來,最終釀成事故.即使在聯(lián)邦學習的條件下,所訓練的DNN模型依舊容易受到對抗攻擊的威脅.因此,設計DNN系統(tǒng)時必須要考慮對抗樣本的問題,但是目前的對策非常少,過去的工作考慮了構建針對對抗樣本的防御的問題,但是它們的不足之處在于,它們需要對DNN的架構進行修改,或者僅僅對部分對抗樣本有效[9-10].
(a) (b)圖1 對抗樣本和正常樣本的差別Fig.1 The difference between adversarial samples and normal samples
為了解決目前DNN所面臨的問題,本文使用了聯(lián)邦學習和防御蒸餾[11]的技術來對抗攻擊者進行的對抗攻擊并保護用戶的隱私,并使用了稀疏三元(STC)法減小用戶與服務器之間的通信開銷,設計了安全的深度神經網絡.主要貢獻包括以下方面:① 本文所使用的防御蒸餾的方法使得對抗攻擊的對抗樣本的制作成功率從95.9%降低到了0.45%.② 通過在真實數(shù)據(jù)集上的驗證,文中的方案在保證了模型預測準確性和安全性的同時,將通信開銷減少到了原來的1%~10%.
主要介紹深度神經網絡(DNN)、防御蒸餾、聯(lián)邦學習和STC稀疏三元理論.
深度神經網絡是一種成熟的機器學習技術,在其中組合了許多的參數(shù)函數(shù),使得輸入的樣本的表示更加簡單[12].實際上來說,一個DNN由幾個連續(xù)的神經元層組成,最后形成一個輸出層,這些層可以看作是輸入數(shù)據(jù)的連續(xù)表示[13].深度神經網絡的結構如圖2所示.
圖2 深度神經網絡Fig.2 Deep neural network
輸入層的多維輸入向量X,其中的每一個神經元都對應上文所提到的參數(shù)函數(shù),構成層的神經元被建模為將激活函數(shù)應用于其輸入的基本計算單元.并且神經網絡通過一組向量加權的鏈接來連接各層,這些權重向量也稱為網絡參數(shù)θF.在訓練的過程中,θF中數(shù)值的權重向量將會被評估.在這個過程中,DNN中會輸入大量的訓練樣本(x,y)∈(X,Y),通過一系列的訓練過程計算DNN輸出層的預測誤差,以及相應的權重參數(shù)的梯度[14],再使用計算出的梯度值更新現(xiàn)有的權重參數(shù),以此來提高網絡的整體精度.該訓練方式被稱為反向傳播,由預先設定的超參數(shù)來控制,這些超參數(shù)對于模型是否收斂至關重要,最重要的超參數(shù)為學習率,它控制著使用梯度更新權重的速度.
一旦網絡被訓練,整個網絡的體系結構,連同它的參數(shù)θF將被認為是一個分類函數(shù)F,在測試的過程中,訓練完成的網絡將被用于測試數(shù)據(jù)X并且得到預測輸出F(X),訓練過程中所得到的權重包含了使得DNN可以正確預測和分類新數(shù)據(jù)的知識.在之前額工作中已經證明了DNN部署在對抗環(huán)境中時,必須考慮DNN的一些漏洞,即對抗樣本是針對DNN的人工產物,在DNN完成訓練之后,攻擊者可以利用生成的對抗樣本進行攻擊.通過將精心設計的擾動δX加入到正常樣本X中,從而激發(fā)DNN的特定行為,將樣本分配到攻擊者所選擇的類中.注意,攻擊者所設計并添加的樣本擾動δX必須足夠小,允許樣本被正常的處理而不被發(fā)現(xiàn),以此來達到對抗攻擊的目的,對抗樣本的生成過程如圖3所示.
圖3 對抗樣本生成過程Fig.3 Adversarial sample generation process
聯(lián)邦學習的結構如圖4所示.
圖4 聯(lián)邦學習系統(tǒng)結構Fig.4 Federal learning system structure
模型訓練過程如下.
1) 基于私有數(shù)據(jù)集,用戶Ci在本地訓練θ,得到梯度向量gi:
gi=Train(θ,Di) .
(1)
2) 服務器S接收從用戶上傳的梯度向量gi.
3) 在服務器S中,所有將獲得的梯度向量聚合:
(2)
4) 計算完成后,得到聚合梯度向量gS,并將其返回給所有m,用戶使用聚合梯度來更新本地模型:
(3)
其中,α是學習率.
在一輪訓練完成后,用戶需要檢測本地模型的準確率是否達到了要求,如果滿足了要求則停止訓練并輸出訓練好的模型,如果沒有達到要求則繼續(xù)迭代,進行下一輪的訓練,直到達到要求為止.
聯(lián)邦學習中,用戶在每次訓練完成后,均需要將訓練得到的梯度全部傳輸給服務器,在需要的梯度參數(shù)較多的系統(tǒng)中,將會占用大量的通信資源,這將會成為系統(tǒng)性能的瓶頸.在本文中,參考了Aij等[15]提出的Top-K梯度選擇方案和Felix Sattler等[16]提出的Top-K梯度選擇方案的擴展——STC稀疏三元算法,如圖5所示.之所以選擇STC稀疏三元算法,是因為相比于Top-K梯度選擇算法,STC根據(jù)稀疏度選擇梯度后,將選擇出的梯度進行量化處理,當稀疏化和非零元素的量化結合將獲得更好的減小通信開銷的效果.
圖5 稀疏三元壓縮算法(STC)Fig.5 Sparse ternary compression
具體來說,每次用戶C計算得到梯度g后,首先將梯度向量中的每個元素g[j]的絕對值并將取完絕對值的g[j]進行排序,將排序完成的梯度絕對值的最大的K個梯度提取出.然后將這選擇出的K個梯度值量化為三元張量后,上傳到服務器S.
圖5中TK代表用Top-K方案取出的絕對值最大的K個梯度值.而tmp中存儲的是梯度的索引和梯度的絕對值,將梯度的索引和梯度的絕對值排序后選擇出絕對值最大的K個梯度值,在稀疏化的同時對稀疏化后的目標向量進行量化,在STC算法的作用下,TK∈Rn最終會生成三元張量TK*∈{-μ,0,μ}n.
在文獻[15]中,先使用Top-K算法取出相應的梯度絕對值最大的K個梯度,然后再將其梯度值量化成為包含{-μ,0,μ},作者用實驗證明了,三元化對收斂速度沒有影響,甚至會提高訓練模型的精度,表明了對數(shù)據(jù)稀疏化和量化的結合相比于單純使用Top-K算法來對數(shù)據(jù)進行稀疏化操作更好地利用了通信資源,而且效率更高,并且作者還不只將STC用在從用戶將梯度上傳到服務器的情況,同時也將STC用到了用戶從服務器下載的情況上,進一步減小了通信開銷.
蒸餾是一個訓練的程序,最初設計出來是為了使用從不同的DNN中遷移來的知識來訓練目標DNN.Ba等[17]最早提出了這個概念,而Hinton等[18]則將蒸餾正式引入.通過蒸餾技術將知識進行轉移是為了將知識從大的架構轉移到較小的架構中來減少DNN的計算復雜度,這項技術有助于深度學習在計算資源有限的設備,例如智能手機中進行部署,這些設備無法使用強大的GPU進行計算.Nicolas Papernot等[11]則提供了一種新的蒸餾變體,從DNN中提取知識來提高其自身對于對抗樣本的魯棒性,而不是在不同的架構中進行知識遷移.
Hinton等[18]提出了神經網絡蒸餾模型,由于蒸餾最早出現(xiàn)的目的是降低DNN的規(guī)模,使其可以在運算能力較差的設備上部署,因此需要有一個DNN在原始數(shù)據(jù)集中訓練,將訓練得到的蒸餾標簽輸入到第二個DNN的數(shù)據(jù)集中,第一個DNN為了實現(xiàn)蒸餾,首先使用原始數(shù)據(jù)在一個輸出層為softmax層的神經網絡上進行訓練,softmax層僅僅接收最后一層隱藏層的輸出Z(x),并將其歸一化為概率向量F(x),也就是DNN的輸出,為數(shù)據(jù)集中的每一個標簽類分配一個概率.在softmax層中,概率向量F(x)的計算為:
(4)
其中的N為類的數(shù)量,并且T為蒸餾溫度并且該參數(shù)在softmax層中共享.由式(4)可知,softmax溫度越高,生成的概率越相近,即T→∞時概率趨近于1/N,而溫度越小則生成的概率越離散,即輸出的概率向量中有一個概率會趨近于1而其他的則趨近于0.
防御蒸餾與Hinton等[18]提出的原始的蒸餾方法不同之處在于防御蒸餾保持相同的網絡架構來訓練原始網絡和蒸餾網絡.防御蒸餾的框架如圖6所示.
圖6 防御蒸餾結構圖Fig.6 Defense distillation structure diagram
防御蒸餾的訓練過程概述如下.
1) 防御蒸餾算法的輸入是一個帶有樣本標簽的樣本集合X.特別的,令x∈X作為樣本,將Y(x)來表示樣本的離散標簽,也稱為硬標簽.Y(x)是一個指示向量,其中唯一的非零元素代表了樣本所對應的正確的類的索引,例如(0,1,0,0,…,0).
2) 使用給定的訓練集{X,Y(X)},然后在溫度T的條件下訓練以softmax層為輸出層的深度神經網絡F,輸出的F(x)為標簽的概率向量.更確切地說,如果深度神經網絡擁有參數(shù)θF,然后在輸入為X的條件下輸出的概率分布為F(X)=p(.|X,θF),對于標簽集中的所有的標簽Y,所分配的概率為p(Y|X,θF).為了簡化符號表示,文中使用Fi(X)來表示在輸入為X并且有參數(shù)θF的條件下類i的概率.
3) 重新形成一個新的樣本集{X,F(X)}來代替{X,Y(X)},即使用代表了網絡F的在每個類上的概率的軟標簽F(X)來代替樣本X的硬標簽Y(X).
4) 使用新的樣本集{X,F(X)},訓練另一個DNN模型Fd,該模型和第一個DNN模型F結構相同,并且溫度T也相同.這個新的DNN模型Fd被稱為蒸餾模型.
使用軟標簽的好處在于,與硬標簽相比,在概率向量中包含了類之間的相對差別和關聯(lián)等額外的知識,使用類的相關信息來訓練模型,也可以有效地防止過擬合,有效增強了模型的泛化能力.
基于聯(lián)邦學習和防御蒸餾,針對DNN中所面臨的挑戰(zhàn),提出了安全且通信開銷較小的訓練協(xié)議πDNFL,可以有效的抵御測試過程中攻擊者通過對抗樣本對訓練完成的模型發(fā)動的對抗攻擊.
在協(xié)議中,文中的目標是在對抗攻擊中保護DNN模型的預測準確度以及在模型訓練的過程中保護用戶的隱私數(shù)據(jù)的安全.但是由于訓練DNN需要大量的數(shù)據(jù),傳統(tǒng)的訓練方式是將用戶的數(shù)據(jù)匯總到一起來進行模型的訓練,這使得一些攻擊者會通過訪問服務器,使得用戶數(shù)據(jù)泄露,因此,本文在協(xié)議中使用聯(lián)邦學習,使得訓練DNN時可以在一定程度上保護用戶的隱私.協(xié)議的流程如圖7所示.
圖7 協(xié)議πDNFLFig.7 The illustration of protocol πDNFL
算法1 協(xié)議πDNFL.
輸入:用戶的私人數(shù)據(jù)Di、以及需要訓練的防御蒸餾模型θ.
輸出:訓練完成的模型θ.
步驟1 服務器和用戶之間建立安全的傳輸信道;
步驟2 用戶在各自本地生成隨機數(shù);
步驟3 用戶使用本地數(shù)據(jù)訓練防御蒸餾模型,計算梯度;
步驟4 用戶使用STC稀疏三元法,選擇出梯度元素并將其量化,并計算殘差Ri;
步驟5 將量化完成的梯度以及對應的索引信息傳送到服務器中,并在服務器按照索引信息將量化梯度聚合,并在服務器中計算殘差R;
步驟6 服務器將聚合完成的梯度和對應的索引信息傳送回參與用戶;
步驟7 用戶更新本地模型;
步驟8 檢查所訓練模型的性能,若所訓練的模型準確率達到要求則停止訓練,否則跳轉到步驟3開始下一輪訓練.
在完成訓練后,研究防御蒸餾對于模型靈敏度的影響.對于DNN來說,模型靈敏度越高,則越容易被對抗攻擊威脅.而在溫度T越高的情況下,對抗樣本就越難生成,這也是為何高溫使得蒸餾模型Fd更穩(wěn)定的原因,這是由于蒸餾降低了模型對于輸入微小變化的敏感度.使用雅可比矩陣來量化模型對于輸入的敏感度,于是計算得到溫度為T時的模型F的雅可比行列式(i,j)的表達式為:
(5)
這里將zi(X)寫為zi,由式(5)可知,提升softmax層的溫度可以系統(tǒng)的降低在防御蒸餾訓練時模型對于輸入的微小變化的靈敏度.在測試時,將溫度T降低為1,因為這樣操作不會影響在訓練時得到的模型參數(shù),因此通過高溫而得到的低靈敏度在測試時就可以觀察到,而在測試時改變溫度只會使得類的概率向量更加離散而不會改變相對順序,防御蒸餾模型可以降低對抗樣本的生成梯度,從而降低了模型對于輸入變化的敏感性,并且增強了模型的魯棒性[11].
在手寫體數(shù)字識別MNIST上的基于卷積神經網絡(CNN)的深度神經網絡上進行試驗,其中深度神經網絡的結構如表1所示.其中的參數(shù)選擇:Learning Rate:0.1;Momentum:0.5;Dropout Rate(Fully Connected Layers):0.5;Batch Size:128;Epochs:50.其中MNIST數(shù)據(jù)集由Training Set Images、Training Set Labels、Test Set Images和Test Set Labels這四部分組成,其中將Training Set Images和Training Set Labels的數(shù)量設定為60 000,而Test Set Images和Test Set Labels為10 000.
表1 深度神經網絡的結構Tab.1 The structure of a deep neural network
實驗環(huán)境部署在 Inter Xeon E5-2620和8根16G DDR4內存條共128 G內存的服務器上,并在服務器的局域網內模擬了2個參數(shù)服務器和10個客戶端,基于Python3實現(xiàn)本文所提出的基于防御蒸餾和聯(lián)邦學習.在實驗中,每一次迭代都會使得參與者和服務器交互計算1次,完成梯度的聚合運算.
分別從準確率、訓練的通信開銷和對抗樣本的攻擊成功率三方面來分析文中所提出的方案.
衡量模型性能一個很重要的標準就是模型的準確率,通過測量準確率的變化,表明本文方案對于模型性能的影響是可以接受的,這一部分首先測量了原始DNN和僅使用聯(lián)邦學習和稀疏三元方法的DNN兩種情況.圖8分別給出了兩種情況下在訓練過程中的準確率的變化情況,其中本文所使用的STC中的梯度選擇的參數(shù)為1%、5%和10%.
圖8 準確率變化Fig.8 The accuracy change
可以看到,在使用聯(lián)邦學習和不同的梯度選擇參數(shù)的條件下,模型訓練的收斂速度基本一致,并且模型的準確率雖略有降低但是在可以接受的范圍內.接下來在模型中使用防御蒸餾,其中防御蒸餾中softmax層的溫度T取{1,2,5,10,20,30,50,100}.如圖9所示,經過訓練可以發(fā)現(xiàn),溫度對于模型性能的影響是有限的.
圖9 溫度對于模型性能的影響Fig.9 The effect of temperature on model performance
在本文所提出的協(xié)議中,需要將參與用戶的訓練梯度傳輸?shù)椒掌髦校虼?,通信開銷大是研究者必須面臨的問題,因此為了通信性能的提升,本文使用了STC稀疏三元法與聯(lián)邦學習算法結合提出了高效的解決方案.
在實驗中,將STC選擇的比率選擇為1%、5%和10%,并分別在不使用STC的plaintext以及協(xié)議πDNFL條件下,在一次迭代過程中的通信開銷.結果如表2所示.
表2 一次迭代訓練中的通信開銷Tab.2 Communication overhead in an iterative training
實驗結果表明,相比于不使用梯度選擇算法的plaintext,該協(xié)議使用的STC稀疏三元法可以極大地優(yōu)化通信開銷,由3.1節(jié)可得,稀疏度在該范圍內選擇不會對模型的性能造成太大的影響,因此可以看到,將STC的稀疏度從10%降為1%,通信開銷減少了大約9.02倍,很好地優(yōu)化了通信性能.
在本節(jié)中,需要在測試集中生成對抗樣本,因此通過將輸入特征的4.02%進行失真[19]的方法在測試集中生成9 000個對抗樣本,該方法在沒有使用蒸餾的情況下成功率可以達到95.89%.然后將測試集中的樣本輸入協(xié)議πDNFL中進行預測,同時不斷的改變溫度T的值,分別觀察在不同的溫度下,對抗樣本攻擊的成功率的大小.實驗中將溫度T的值取為{1,2,5,10,20,30,40,50,100},圖10展示了與溫度有關的對抗樣本成功率.
圖10 溫度對于對抗樣本成功率的影響Fig.10 The effect of temperature on the success rate of adversarial samples
由圖10中的數(shù)據(jù)可以看到,隨著溫度的上升,對抗攻擊的成功率從95.89%下降到了0.45%,因此提高溫度可以有效地抵御對抗樣本的攻擊.
DNN是一中優(yōu)秀的深度學習模型,但是其卻容易受到對抗攻擊和隱私泄露的威脅,而這個問題則在當今的生活中顯得尤為重要.本文將防御蒸餾、聯(lián)邦學習和稀疏三元法相結合,在保證DNN可以抵御對抗攻擊和隱私泄露問題的同時,也使得通信效率有了很大的提升.由于除了DNN之外,其他的很多機器學習模型依舊受到對抗攻擊的威脅,但是防御蒸餾卻只能使用在DNN模型中,接下來筆者將探索更好的對抗攻擊的應對方法,并使這些擁有更好的泛化能力.