許多公司為使用者提供神經網路預測服務,應用範圍廣泛。然而,目前的預測系統會損害一方的隱私:要麼使用者必須將敏感輸入傳送給服務提供商進行分類,要麼服務提供商必須將其專有的神經網路儲存在使用者的裝置上。前者損害了使用者的個人隱私,而後者暴露了服務提供商的專有模式。
我們設計、實現並評估了DELPHI,這是一個安全的預測系統,允許雙方在不洩露任何一方資料的情況下執行神經網路推理。DELPHI通過同時聯合設計密碼學和機器學習來解決這個問題。我們首先設計了一種混合加密協定,在通訊和計算成本上比之前的工作有所提高。其次,我們開發了一個規劃器,自動生成神經網路架構設定,導航我們的混合協定的效能精度權衡。與之前最先進的工作相比,這些技術使我們的線上預測延遲提高了22倍。
機器學習的最新進展推動了神經網路推理在語音助手[Bar18]和影象分類[Liu+17b]等流行應用中的越來越多的部署。然而,在許多此類應用程式中使用推理會引起隱私問題。例如,Kuna [Kun]和Wyze [Wyz]等家庭監控系統(HMS)使用專有的神經網路對使用者家庭視訊流中的物體進行分類,如停在使用者家附近的汽車,或到家裡參觀的人的面孔。這些模型是這些公司業務的核心,培訓成本很高。
為了使用這些模型,要麼使用者必須將他們的流上傳到HMS的伺服器(然後通過流評估模型),要麼HMS必須將其模型儲存在使用者的監控裝置上(然後執行分類)。這兩種方法都不能令人滿意:第一種方法要求使用者將包含他們日常活動敏感資訊的視訊流上傳到另一方,而第二種方法要求HMS在每臺裝置上儲存其模型,從而允許使用者和競爭對手竊取專有模型。
為了緩解這些隱私問題,最近的一些工作提出了(折積)神經網路[Gil+16;衛生部+ 17;劉+ 17;Juv+18]通過利用專業的安全多方計算(MPC) [Yao86;高爾+ 87]。在較高的級別上,這些協定通過加密使用者的輸入和服務提供商的神經網路進行操作,然後客製化用於計算加密資料的技術(如同態加密或祕密共用),以對使用者的輸入執行推斷。在協定執行結束時,預期的一方(或幾方)學習推斷結果;雙方都不瞭解對方的任何資訊。該協定流程如圖1所示。
不幸的是,這些加密預測協定仍然不適合部署在現實世界的應用程式中,因為它們需要在線上執行期間使用大量的加密工具。這些工具需要大量的計算,通常需要使用者和服務提供者之間進行大量的通訊。此外,這種成本隨著模型的複雜性而增加,使得這些協定不適合用於當今實踐中使用的最先進的神經網路架構。例如,使用GAZELLE [Juv+18]這樣的最先進的協定來對ResNet-32 [He+16]這樣的最先進的深度神經網路執行推理需要約82秒,並導致超過560MB的通訊。
我們的貢獻。 在本文中,我們提出了DELPHI,一種用於真實神經網路架構的密碼預測系統。DELPHI通過密碼學和機器學習的精心聯合設計來實現其效能。DELPHI提供了一種新的混合密碼預測協定,以及一個計劃器,可以調整機器學習演演算法,以利用我們協定的效能精度權衡。我們的技術使我們能夠在比以前的工作中考慮的更現實的網路架構上執行加密預測。例如,在ResNet-32上使用DELPHI進行密碼預測,線上階段僅需要3.8秒,通訊60MB,分別比GAZELLE提高了22倍和9倍。
我們現在在較高的層次上描述了DELPHI卓越效能背後的技術。
效能目標。 現代折積神經網路由許多層組成,每個層包含一個子層用於線性操作,一個子層用於非線性操作。常見的線性運算包括折積、矩陣乘法和平均池化。非線性操作包括啟用函數,如流行的ReLU(整流線性單元)函數。
因此,實現現實神經網路的加密預測需要(a)構建用於評估線性和非線性層的有效子協定,以及(b)將這些子協定的結果相互連結。
之前的工作。以往幾乎所有的密碼預測協定都使用重量級密碼工具來實現這些子協定,這導致計算和通訊成本遠遠高於同等的明文成本。更糟糕的是,許多協定在協定的延遲敏感線上階段使用這些工具,即當用戶獲取輸入並希望獲得其分類時。(這與延遲敏感度較低的預處理階段相反,後者發生在使用者輸入可用之前)。
例如,最先進的GAZELLE協定的線上階段使用了大量的加密技術,如線性同態加密和亂碼電路。正如我們在7.4節中所展示的,這會導致大量的預處理和線上成本:對於通過CIFAR-100訓練的流行網路架構ResNet-32, GAZELLE在預處理階段需要~ 158秒和8GB的通訊,在預處理階段需要~ 50秒和5GB的通訊,在線上階段需要~ 82秒和600MB的通訊。
為了在真實的神經網路上獲得良好的效能,DELPHI建立在GAZELLE技術的基礎上,開發了用於評估線性和非線性層的新協定,最大限度地減少了重型加密工具的使用,從而最大限度地減少了預處理和線上階段的通訊和計算成本。我們首先簡要介紹一下GAZELLE協定,因為它是DELPHI協定的基礎。
起點:GAZELLE。 GAZELLE [Juv+18]是一種最先進的折積神經網路加密預測系統。GAZELLE使用優化的線性同態加密(LHE)方案[Elg85;Pai99;Reg09;Fan+12],可以直接對密文進行線性操作。為了計算非線性層,GAZELLE使用亂碼電路[Yao86]來計算ReLU所需的位元運算。最後,由於神經網路中的每一層都由交替的線性和非線性層組成,GAZELLE還描述瞭如何通過基於相加祕密共用的技術在前面提到的兩個原語之間有效地來回切換。
如上所述,GAZELLE在線上階段使用大量密碼學導致了效率和通訊開銷。為了減少這些管理費用,我們採取如下措施。
降低線性操作的成本。為了降低線性運算的線上計算成本,我們採用GAZELLE將LHE密文上繁重的密碼運算轉移到預處理階段。我們的關鍵見解是,在使用者輸入可用之前,服務提供者對線性層的輸入M(即該層的模型權重)是已知的,因此我們可以在預處理期間使用LHE建立M的祕密共用。之後,當用戶的輸入在線上階段可用時,所有線性操作都可以直接在祕密共用資料上執行,而不需要呼叫像LHE這樣的重型加密工具,也不需要執行矩陣向量乘法的互動。
這種技術的好處是雙重的。首先,線上階段只需要傳輸祕密共用而不是密文,這立即導致線性層的線上通訊減少了8倍。其次,由於線上階段只對素數位段的元素進行計算,並且由於我們的系統使用了具體的32位元素數,因此我們的系統可以利用最先進的CPU和GPU庫來計算線性層;詳見章節7.2和備註4.2。
降低非線性作業的成本。 雖然上述技術已經顯著減少了計算時間和通訊成本,但兩者的主要瓶頸仍然是評估ReLU啟用函數的亂碼電路的成本。為了使成本最小化,我們使用了另一種方法[Gil+16;劉+ 17;衛生部+ 17;Cho+18]它更適合於有限域元的計算:計算多項式。更詳細地說,DELPHI用多項式(具體地說,二次)近似代替ReLU啟用。這些可以通過標準協定安全有效地計算[Bea95]。
由於這些協定只需要在每次乘法時通訊少量常數的欄位元素,因此使用二次近似可以顯著降低每次啟用時的通訊開銷,而無需引入額外的通訊輪。同樣,由於底層乘法協定只需要一些廉價的有限域操作,計算成本也降低了幾個數量級。具體而言,安全計算二次近似的線上通訊成本和計算成本分別比亂碼電路的相應成本小192倍和10000倍。
然而,這種效能的提高是以底層神經網路的準確性和可訓練性為代價的。先前的工作已經確定二次近似在某些設定中提供了良好的精度[Moh+17;劉+ 17;Gho + 17;Cho + 18]。與此同時,之前的工作[Moh+17]和我們自己的實驗都表明,在許多設定中,簡單地用二次近似替換ReLU啟用會導致精度嚴重下降,並且可以將訓練時間增加幾個數量級(如果訓練收斂的話)。為了克服這一問題,我們開發了一種使用ReLUs和二次近似的混合密碼協定,以達到良好的精度和效率。
計劃有效地使用混合密碼協定。 事實證明,確定哪些ReLU啟用應該用二次近似代替並不簡單。事實上,正如我們在第5節中解釋的那樣,簡單地用二次近似代替任意的ReLU啟用會降低結果網路的準確性,甚至會導致網路無法訓練。
因此,為了找到合適的位置或網路設定,我們設計了一個規劃器,自動發現哪些relu要替換為二次近似,以最大限度地使用近似的數量,同時仍然確保精度保持在指定的閾值以上。
我們的計劃背後的洞察力是適應神經結構搜尋(NAS)和超引數優化的技術(見[Els+19;Wis+19]用於這些領域的深入調查)。也就是說,我們採用這些技術來發現在給定的神經網路架構中應該近似哪些層,並優化所發現網路的超引數。詳見第5節。
整個系統。 DELPHI將上述見解結合到一個內聚系統中,服務提供商可以使用該系統自動生成滿足提供商指定的效能和準確性標準的加密預測協定。更詳細地說,服務提供者以可接受的精度和效能閾值呼叫DELPHI的計劃器。規劃器輸出一個滿足此目標的優化架構,然後DELPHI使用該架構範例化一個具體的密碼預測協定,該協定利用我們上面的密碼技術。
這種密碼學和機器學習的聯合設計使DELPHI能夠有效地為網路提供比以往任何工作都更深入的密碼預測。例如,在第7節中,我們展示了使用DELPHI為流行的ResNet-32架構提供推理,只需要60MB的通訊和3.8秒的時間。
在系統設定中有兩方:使用者端和服務提供者(或伺服器)。在我們系統的明文版本中,服務提供者通過API使用其內部模型以服務的形式提供預測。使用者端通過將資料傳輸給服務提供者,使用這個API對自己的資料執行預測。服務提供者使用適當的神經網路執行預測,然後將預測結果傳送回使用者端。在DELPHI中,雙方通過提供各自的輸入來共同執行安全預測。服務提供者的輸入是神經網路,而使用者端的輸入是用於預測的私有輸入。
DELPHI的威脅模型類似於之前的安全預測作品GAZELLE [Juv+18]和MiniONN [Liu+17a]。更具體地說,DELPHI是為兩方半誠實環境設計的,其中只有一方被對手破壞。此外,這個對手永遠不會偏離協定,但它將試圖從它收到的訊息中瞭解有關其他方私人輸入的資訊。
DELPHI的目標是讓客戶只學習兩部分資訊:神經網路的架構和推理的結果;所有其他關於使用者端私有輸入和伺服器神經網路模型引數的資訊都應該被隱藏。具體來說,我們的目標是實現一個強大的基於模擬的安全定義;參見定義4.1。
像之前的所有工作一樣,DELPHI並不隱藏關於網路架構的資訊,例如網路中每一層的尺寸和型別。對於之前的工作,這通常不是問題,因為體系結構獨立於訓練資料。然而,由於DELPHI的規劃器使用訓練資料來優化二次近似,揭示網路架構會揭示關於資料的一些資訊。具體地說,在優化「層網路」時,規劃者做出「二元選擇」,因此最多隻能揭示關於訓練資料的位元資訊。因為'對於實際網路來說非常小(例如,' = 32對於ResNet32),這個洩漏可以忽略不計。這種洩漏可以通過使用差分私有訓練演演算法[Sho+15;阿壩+ 16]
與大多數先前的密碼預測系統一樣,DELPHI不隱藏預測結果所揭示的資訊。在我們看來,防範利用這種洩漏的攻擊是DELPHI解決的一個補充問題。事實上,這種攻擊甚至已經成功地針對那些通過要求使用者端將其輸入上傳到伺服器而「完美」隱藏模型引數的系統[Fre+14;吃+ 15;Fre + 15;吳+ 16 b;+ 16]。此外,針對這些攻擊的常用緩解措施,如差異隱私,可以與DELPHI的協定結合使用。我們將在第8.2節中更詳細地討論這些攻擊和可能的緩解措施。
DELPHI的體系結構由兩個部分組成:用於評估神經網路的混合加密協定,以及用於優化給定神經網路以配合我們的協定使用的神經網路設定規劃器。下面我們將概述這些元件,然後通過描述家庭監控系統(HMS)中加密預測的端到端工作流程來演示如何在實踐中使用這些元件。
混合密碼協定。 DELPHI的密碼預測協定包括兩個階段:離線預處理階段和線上推理階段。離線預處理階段獨立於使用者端輸入(定期更改),但假設伺服器的模型是靜態的;如果這個模型改變了,那麼雙方都必須重新執行預處理階段。經過預處理後,在線上推理階段,使用者端向我們專門的安全兩方計算協定提供輸入,並最終學習推理結果。我們注意到我們的協定提供了兩種不同的評估非線性層的方法:第一種以更差的離線和線上效率為代價提供了更好的準確性,而另一種降低了準確性,但提供了更好的離線和線上效率。
計劃。 為了幫助服務提供商在這兩種互補方法評估非線性層的效能和準確性之間進行權衡,DELPHI採用了一種有原則的方法,設計了一個計劃器,生成混合這兩種方法的神經網路,以最大限度地提高效率,同時仍能達到服務提供商所需的準確性。我們的規劃器將神經結構搜尋(NAS)以一種新穎的方式應用於密碼設定,以便自動發現正確的架構。
例2.1 (HMS工作流)。 如第1節所述,家庭監控系統(HMS)使使用者能夠監視房屋內外的活動。近期HMSes [Kun;Wyz]使用神經網路來判斷給定的活動是否是惡意的。如果是,他們會提醒使用者。在這種情況下,隱私對使用者和HMS提供商都很重要,這使得DELPHI成為理想的選擇。為了使用DELPHI來提供強大的隱私,HMS提供商按照以下步驟進行。
HMS提供商首先呼叫DELPHI的規劃器來優化其基線全relu神經網路模型。然後,在HMS裝置空閒期間,裝置和HMS伺服器執行此模型的預處理階段。如果裝置在本地檢測到可疑活動,它可以執行線上推斷階段以獲得分類。根據這個結果,它可以決定是否提醒使用者
備註2.2(適用於DELPHI的應用程式)。 例2.1表明,DELPHI最適合於以下應用:有足夠的計算能力用於預處理,推理是延遲敏感的,但執行頻率不足以耗盡預處理材料的儲備。這類應用的其他例子包括谷歌Lens [Goo]等系統中的影象分類。
在DELPHI中,我們引入了一種用於加密預測的混合加密協定(見圖4)。我們的協定對之前工作中提出的協定(如MiniONN [Liu+17a]和GAZELLE [Juv+18])進行了兩個關鍵改進。首先,DELPHI將協定分為預處理階段和線上階段,這樣大部分繁重的密碼計算都在預處理階段執行。其次,DELPHI引入了兩種不同的評估非線性函數的方法,為使用者提供了準確性和效能之間的權衡。第一種方法使用亂碼電路來評估ReLU啟用函數,而第二種方法使用安全評估ReLU的多項式近似。前者提供了最大的精度,但效率低,而後者計算成本低,但降低了精度。(我們注意到,下面我們描述了一個用於評估任何多項式近似的協定,但在本文的其餘部分,我們只限制自己使用二次近似,因為這些是最有效的。)
符號。 設R是一個有限環。設HE = (KeyGen, Enc,Dec,Eval)是明文空間R上的線性同態加密。伺服器持有一個模型M,由「層M1,…」, M」。使用者端持有一個輸入向量x∈rn。
我們現在給出一個加密預測協定的正式定義。直觀地說,該定義保證了協定執行後,一個半誠實的使用者端(即遵循協定規範的使用者端)只學習神經網路的架構和推斷的結果;關於伺服器神經網路模型引數的所有其他資訊都是隱藏的。類似地,半誠實的伺服器不瞭解任何關於使用者端輸入的資訊,甚至不瞭解推斷的輸出。
定義4.1。 一個伺服器之間的協定Π,其輸入模型引數為M = (M1,…,M '),使用者端以特徵向量x作為輸入,如果滿足以下保證,則是一個加密預測協定。
正確性。 在伺服器持有的每一組模型引數M和使用者端的每一個輸入向量x上,協定結束時使用者端的輸出是正確的預測M(x)。
安全性。
腐敗的使用者端。 我們要求一個損壞的、半誠實的使用者端不瞭解伺服器的網路引數M。形式上,我們要求存在一個有效的模擬器Sim_C,使得View^{\prod}_C\approx Sim_C(x,out),並且View^{\prod}_C表示執行Π時使用者端的檢視(檢視包括使用者端的輸入、隨機性和協定的記錄),out表示推理的輸出。
腐敗的伺服器。 我們要求損壞的、半誠實的伺服器不瞭解客戶機的私有輸入x的任何資訊。形式上,我們要求存在一個有效的模擬器Sim_S,使View^{\prod}_S\approx Sim_S(M),其中View^{\prod}_S表示執行Π時伺服器的檢視。
DELPHI協定分兩個階段進行:預處理階段和線上階段,我們將在後面的小節中詳細介紹這兩個階段。
在預處理過程中,使用者端和伺服器預先計算線上執行過程中可以使用的資料。這個階段可以獨立於輸入值執行,也就是說,DELPHI可以在任何一方的輸入已知之前執行這個階段。
1、使用者端執行HE.KeyGen獲取公鑰pk和金鑰sk。
2、對於每一個i\in[l],使用者端和伺服器分別選擇隨機遮蔽向量r_i,s_i \gets R^n。
3、使用者端傳送HE.Enc(pk, ri)
到伺服器。伺服器使用HE.Eval
計算HE.Enc(pk, Mi·ri−si)
,並將此密文傳送給使用者端。
4、使用者端對上述密文進行解密,獲得每一層的(Mi·ri−si)
。伺服器為每一層儲存si
,因此,使用者端和伺服器擁有Mi·ri
的加法祕密共用。
5、這一步取決於啟用型別:
(a) ReLU: 伺服器通過圖5所示的混淆電路C來構造\tilde{C}。它將\tilde{C}傳送到使用者端,同時,伺服器和使用者端通過無關傳輸(OT)交換對應於ri+1
和Mi·ri−si
的輸入線的標籤。
(b) 多項式近似: 使用者端和伺服器執行Beaver的三重乘法生成協定來生成一些Beaver的乘法三元組.
線上階段分為兩個階段:設定和層評估。
使用者端在輸入x時,將x−r1
傳送給伺服器。伺服器和使用者端現在擁有x的附加祕密共用。
在第i層的開始,使用者端持有ri
,伺服器持有xi−ri
,其中xi是通過計算輸入x上的神經網路的第(i−1)層(x1設為x)得到的向量。這個不變數將對每一層保持。我們現在描述了第i層的計算協定,它由線性函數和啟用函陣列成。
線性層。 伺服器端計算Mi (xi−ri) +si
,確保使用者端和伺服器端共用Mi·xi
的附加祕密。
非線性層。 線性函數之後,伺服器端持有Mi (xi−ri) + si
,使用者端持有Mi·ri−si
。有兩種評估非線性層的方法:用於ReLU的亂碼電路,或用於多項式近似的Beaver乘法:
亂碼電路
伺服器將Mi (xi−ri) +si
對應的亂碼標籤傳送給使用者端。
使用者端使用上述標籤和OT(離線階段)獲得的標籤對亂碼電路\tilde{C}進行評估,得到一次性的填充密文OTP(x_{i+1}−r_{i+1})。然後它將此輸出傳送到伺服器。
伺服器使用一次性填充鍵獲取x_{i+1}−r_{i+1}。
多項式近似
使用者端和伺服器執行Beaver的乘法過程來計算接近這一層的多項式。在過程結束時,使用者端持有[xi+1]_1,伺服器持有[xi+1]_2。
使用者端計算[xi+1]_1−r_{i+1}並行送給伺服器。伺服器將該值加上[xi+1]_2,得到x_{i+1}−r_{i+1}。
輸出層。 伺服器將x_l−r_l傳送給使用者端,使用者端將其與r_l相加以學習x_l。
備註 4.2(有限域中的定點演演算法)。到目前為止的討論假設在有限環上進行算術運算。然而,神經網路推理的流行實現對浮點數執行算術運算。我們通過使用浮點數的定點表示,並將這種定點演演算法嵌入到我們的環形演演算法中來解決這個問題。
具體而言,我們的實現工作於由素數 2138816513 定義的 32 位素數有限域,並使用 15 位定點表示。這種引數選擇可以在結果溢位素數域的容量之前實現兩個定點數的單次乘法。為了防止值隨著乘法次數呈指數增長(從而溢位),我們使用了 [Moh+17] 中的一個技巧,它允許我們簡單地截斷定點值的額外 LSB。即使結果是祕密共用的,這個技巧也能奏效,儘管是以 1 位錯誤為代價的。
與 Slalom [Tra+19] 類似,我們對素數域的選擇也使我們能夠將我們的域演演算法無失真地嵌入到 64 位浮點演演算法中。更詳細地說,64 位浮點數可以表示 "2^{−53} ,...,2^{53}" 範圍內的所有整數。因為我們的線性層協定的線上階段需要一個定點矩陣乘以一個祕密共用向量,結果是一個 ∼ 45 位整數,因此可以用 64 位浮點數完全精確地表示.這使我們的實現能夠將最先進的 CPU 和 GPU 庫用於線性代數。
定理 4.3。假設存在亂碼電路、線性同態加密和用於 Beaver 的三元組生成和乘法過程的安全協定,上述協定是一個密碼預測協定(見定義 4.1)。
證明。 下面我們先針對使用者端損壞的情況介紹模擬器,然後針對伺服器端損壞的情況介紹模擬器。我們在附錄 B 中提供了一個依賴於這些模擬器的混合論證。
DELPHI 的規劃器採用服務提供商的神經網路模型(以及其他約束)並生成滿足服務提供商的準確性和效率目標的新神經網路架構。該規劃器的核心是一種神經架構搜尋 (NAS) 演演算法,使服務提供商能夠自動找到此類網路架構。下面我們對這個關鍵元件進行了高度概述,並描述了我們的規劃器如何使用它。
背景:神經結構搜尋。 最近,機器學習研究在神經架構搜尋 (NAS) [Els+19;智慧+19]。 NAS 的目標是自動發現最能滿足一組使用者指定約束的神經網路架構。大多數 NAS 演演算法通過(部分)訓練許多不同的神經網路、評估它們的準確性並選擇效能最好的神經網路來實現這一點.
我們的規劃器概述。 DELPHI 的規劃器,當輸入基線 all-ReLU 神經網路時,以兩種模式執行。當再訓練不可能或不需要時(例如,如果訓練資料不可用,或者如果提供者無法負擔 NAS 所需的額外計算),規劃器將以第一種模式執行,並簡單地輸出基線網路。如果再訓練(以及 NAS)是可行的,那麼規劃器將訓練資料和最小可接受預測精度 t 的約束作為附加輸入,然後使用 NAS 來發現最大化二次近似數量的網路設定,同時仍然實現大於 t 的精度。我們的規劃器然後進一步優化此設定的超引數。更詳細地說,在第二種模式中,我們的規劃器使用 NAS 來優化給定 t 的候選網路設定的以下屬性:(a) 二次近似的數量,(b) 這些近似的放置(即,其中的層ReLU 替換為近似值),以及 (c) 訓練超引數,如學習率和動量。
前面是一個簡短的描述,省略了很多細節。下面,我們將描述我們如何解決使 NAS 適應這種設定所需的挑戰(第 5.1 節),我們對 NAS 演演算法的具體選擇(第 5.2 節),以及詳細的虛擬碼最終演演算法(圖 6)。
挑戰 1:訓練候選網路。之前的工作 [Moh+17;吉爾+16;高+17; Cho+18] 和我們自己的實驗表明,使用二次逼近的網路在訓練和部署方面具有挑戰性:二次啟用會導致底層梯度下降演演算法發散,從而導致精度低下。直覺上,我們認為這種行為是由這些函數的大而交替的梯度引起的。
為了解決這個問題,我們使用了以下技術:
梯度和啟用裁剪:在訓練期間,我們修改優化器以使用梯度值裁剪,這有助於防止梯度爆炸 [Ben+94]。特別是,我們將所有梯度的值剪裁為小於 2。我們進一步修改我們的網路以使用 ReLU6 啟用函數 [Kri10],以確保啟用後值的幅度最多為 6。這可以防止錯誤在兩者之間複合推理和訓練。
漸進式啟用交換:我們的實驗確定,儘管存在剪裁,但梯度仍在快速爆炸,尤其是在包含更高比例近似值的更深網路中。為了克服這個問題,我們利用了以下見解:直覺上,ReLU6 和 ReLU 的(截斷的)二次近似應該共用相對相似的梯度,因此應該可以使用 ReLU6 最初引導下降到一個穩定的區域,其中梯度是更小,然後使用近似的梯度在該區域內進行細粒度調整。
我們通過修改訓練過程來利用這種洞察力,逐漸將已經訓練過的 allReLU6 網路轉換為具有所需數量和二次近似位置的網路。更詳細地說,我們的訓練過程將每個啟用表示為二次和 ReLU6 啟用的加權平均值,即 act(x):= wq·quad(x)+wrReLU(x)
使得 wq +wr = 1。一開始,wq = 0 和 wr = 1。然後我們的訓練演演算法逐漸增加 wq 並減少 wr,最終 wq = 1 和 wr = 0。
這種技術還提高了 NAS 的執行時間,因為它不再需要從頭開始訓練每個候選網路設定。
挑戰二:高效優化設定。 回想一下,我們的規劃器旨在優化二次近似的數量、它們在網路中的位置以及訓練超引數。嘗試在單個 NAS 執行中優化所有這些變數會導致很大的搜尋空間,而在這個搜尋空間中找到有效的網路需要相應較長的時間。
為了解決這個問題,我們將單片 NAS 執行分成獨立的執行,負責優化不同的變數。例如,對於具有 n 個非線性層的架構,對於 m < n 的相關選擇,我們首先執行 NAS 以找到具有 m 個近似層的高分架構,然後再次執行 NAS 以優化這些架構的訓練超引數。在此過程結束時,我們的規劃器輸出具有不同效能-準確性權衡的各種網路。
挑戰 3:優先考慮高效設定。 我們規劃者的目標是選擇包含最大數量近似值的設定,以最大限度地提高效率。但是,具有大量近似值的網路設定需要更長的訓練時間,並且可能比具有較少近似值的網路準確度略低。由於傳統的 NAS 文獻側重於簡單地最大化效率,因此在此預設設定中使用 NAS 會導致選擇較慢的網路而不是更高效的網路,這些網路的準確性略低於較慢的網路。為了克服這個問題,我們通過設計一個新的評分函數 score(·) 來改變 NAS 為候選網路分配「分數」的方式,該函數可以平衡優先精度和效能。我們在第 7 節中的實驗表明,此功能使我們能夠選擇既高效又準確的網路。
DELPHI 的密碼協定是用 Rust 和 C++ 實現的。我們使用SEAL同態加密庫[Sea]實現HE,並依賴fancy-garbling library3進行亂碼電路。為了確保高效的預處理階段,我們在 SEAL 中重新實現了 GAZELLE 的線性層高效演演算法;這可能是獨立的利益。 DELPHI 的規劃器是用 Python 實現的,並使用 Tune [Lia+18] 中的可延伸 PBT [Jad+17] 實現。
備註 6.1(重新實現 GAZELLE 的演演算法)。 Riazi 等人 [Ria+19] 指出,GAZELLE 的實現不為 HE 提供電路隱私,這可能會導致有關線性層的資訊洩漏。為了解決這個問題,他們建議使用更大的引數來確保電路隱私。(需要注意的是,這些引數導致的效能比使用 GAZELLE 的高度優化引數更差。)因為 DELPHI 在我們的預處理階段使用 GAZELLE 的演演算法,我們試圖修改 GAZELLE 的實現 4 以使用電路私有引數。然而,事實證明這很困難,因此我們決定在支援這些引數的 SEAL 中重新實現這些演演算法。
我們將評估分為三個部分來回答以下問題
第 7.2 節:DELPHI 構建塊的效率如何?
第 7.3 節:DELPHI 的規劃器是否為現實的神經網路(例如 ResNet-32)提供了效率和準確性之間的良好平衡?
第 7.4 節:使用 DELPHI 為此類神經網路提供預測服務的延遲和通訊成本是多少?
所有密碼學實驗都是在 AWS c5.2xlarge 範例上進行的,該範例擁有 3.0GHz 的 Intel Xeon 8000 系列機器 CPU 和 16GB RAM。使用者端和伺服器分別在位於 us-west-1(加利福尼亞北部)和 us-west-2(俄勒岡)區域的兩個此類範例上執行。使用者端和伺服器執行各使用 4 個執行緒。機器學習實驗是在配備 NVIDIA Tesla V100 GPU 的各種機器上進行的。我們的機器學習和密碼協定實驗依賴於以下資料集和架構:
CIFAR-10 是一個標準化資料集,由分為 10 個類別的 (32 × 32) RGB 影象組成。訓練集包含 50,000 張影象,而測試集包含 10,000 張影象。我們的實驗使用 MiniONN [Liu+17a] 中指定的 7 層 CNN 架構。這樣做可以讓我們將我們的協定與之前的工作進行比較
CIFAR-100 包含與 CIFAR-10 相同數量的訓練和測試影象,但將它們分為 100 個類而不是 10 個。這種增加的複雜性需要具有更多引數的更深網路,因此我們的實驗使用流行的 ResNet-32 架構在 [He+16] 中介紹。我們注意到,之前沒有關於安全推理的工作試圖評估他們在困難資料集(如 CIFAR100)或深度網路架構(如 ResNet-32)上的協定。
每當我們將 DELPHI 與 GAZELLE 進行比較時,我們都會通過將我們重新實現線性和非線性層的相關子協定的成本相加來估算 GAZELLE 協定的成本。我們這樣做是因為沒有端到端的 GAZELLE 協定實現;只有個別的子協定被執行。
我們提供了 DELPHI 線上性和非線性層上的效能的微基準測試,並將兩者與 GAZELLE 進行了比較。
下面我們重點關注折積運算的效能,因為它們構成了神經網路線性運算的大部分成本。折積的複雜性取決於輸入的維度、折積核的大小和數量,以及填充和步幅(後一個引數決定了將核應用於輸入的頻率)。在表 1 中,我們評估了 ResNet-32 中使用的折積的成本。關鍵要點是我們的線上時間比 GAZELLE 小 80 多倍,我們的線上交流少 150 多倍。另一方面,我們的預處理時間和通訊量高於 GAZELLE,但最多等於 GAZELLE 的線上時間和通訊量。
優化 GPU 操作。如備註 4.2 中所述,DELPHI 對素數域的選擇使 DELPHI 能夠使用標準 GPU 庫來評估線上階段的折積層。但是,這樣做需要將層權重和輸入複製到 GPU 記憶體中,並將每個線性層的輸出複製回 CPU 記憶體。此複製可能會產生大量開銷。為了攤銷它,可以將不同輸入的折積批次處理在一起。在表 2 中,我們報告了批次大小為 1、5 和 10 的成本。關鍵要點是,對於單折積,這些成本比表 1 中的等效成本低 50-100 倍以上,並且對於批次折積,成本似乎與批次大小呈次線性關係。
回想一下,我們用於評估 ReLU 啟用的協定使用了亂碼電路。我們的 ReLU 電路遵循 [Juv+18] 中的設計,並進行了一些額外的優化。為了評估二次啟用,我們的協定使用 Beaver 的乘法過程 [Bea95],它需要從伺服器向用戶端傳送一個場元素,反之亦然,然後需要雙方進行一些廉價的本地場操作。兩種啟用的通訊和計算成本如表 3 所示
為了證明我們的規劃器的有效性,我們需要證明 (a) 二次啟用是 ReLU 啟用的有效替代品,並且 (b) 規劃器找到的網路提供比全 ReLU 網路更好的效能。在我們下面的實驗中,我們使用 80% 的訓練資料在規劃器中訓練網路,剩下的 20% 作為驗證集。規劃器根據驗證準確性對候選網路進行評分,但最終報告的準確性是測試集的準確性。
二次啟用是有效的。我們需要證明,不僅我們的規劃器輸出的網路具有良好的準確性,而且二次啟用不是多餘的。也就是說,我們需要證明網路沒有學會「忽略」二次啟用。這是一個問題,因為之前的工作 [Mol+17; Liu+18] 表明現代神經網路架構可以被「修剪」以去除無關引數和啟用,同時仍然保持幾乎相同的精度
我們通過在兩種模式下執行我們的規劃器來證明這一點。在第一種模式中,我們的規劃器被設定為尋找使用二次啟用的高效能網路,而在第二種模式中,它被設定為尋找使用恆等函數而不是二次啟用的網路,直覺是如果二次啟用無效,那麼使用身份函數的網路也會表現得一樣好。圖 7(對於 CIFAR-10)和圖 8(對於 CIFAR-100)顯示了不同數量的非 ReLU 層的執行結果。總之,這些結果表明我們的規劃器輸出的網路實現了與全 ReLU 基線相當的效能。此外,隨著非 ReLU 層數的增加,使用恆等啟用函數的效能最佳網路的準確度遠低於使用二次啟用函數的等效網路。
規劃好的網路表現更好。為了評估我們的規劃器找到提供良好效能的網路的能力,我們執行規劃器來生成具有不同數量(比如 k)的二次層的網路。然後,我們將這些網路中的 ReLU 啟用數與全 ReLU 網路(如 GAZELLE 支援的網路)中的啟用數進行比較。圖 9 說明了 CIFAR-100 上 ResNet32 的這種比較。我們觀察到我們的規劃器發現的網路始終具有比全 ReLU 基線更少的啟用。
我們通過展示 DELPHI 的預處理階段和線上階段比之前的工作 (GAZELLE) 顯著節省延遲和通訊成本來證明 DELPHI 加密協定的有效性。圖 10 和 11 總結了我們的規劃者發現的網路的這種改進;接下來我們提供詳細的評測。
預處理階段。 圖 12a 和 13a 分別比較了在 CIFAR-100 上的 ResNet32 和 CIFAR-10 上的 MiniONN 架構上執行 DELPHI 和 GAZELLE 預處理階段所需的時間。在這兩種情況下,我們都觀察到,在具有大量 ReLU 啟用的網路上,DELPHI 的預處理時間比 GAZELLE 的要長。這是因為DELPHI需要對每個線性層額外進行預處理。然而,隨著近似啟用次數的增加,DELPHI 的預處理時間迅速減少到低於 GAZELLE,因為 ReLU 的亂碼電路比近似啟用的預處理階段要昂貴得多。對於圖 12c 和 13c中的通訊成本,可以觀察到類似的趨勢。 總體而言,對於我們的規劃器輸出的最高效網路,DELPHI 需要的預處理時間減少 1.5-2 倍,通訊時間減少 6-40 倍。
線上階段。 圖 12b 和 13b 分別比較了在 CIFAR-100 上的 ResNet32 和 CIFAR-10 上的 MiniONN 架構上執行 DELPHI 和 GAZELLE 線上階段所需的時間。在這兩種情況下,我們都觀察到 GAZELLE 使用 HE 來處理線性層會產生顯著的計算成本。此外,隨著近似啟用次數的增加,DELPHI 和 GAZELLE 之間的差距越來越大。對於圖 12d 和 13d中的通訊成本,可以觀察到類似的趨勢。 總體而言,對於我們的規劃器輸出的最高效網路,DELPHI 需要 22-100 倍的時間來執行其線上階段,並且減少 9-40 倍的通訊。
我們首先在第 8.1 節中討論用於安全執行機器學習演演算法的密碼技術。然後,在第 8.2 節中,我們討論了從預測中恢復有關模型的資訊的模型推理攻擊,以及針對這些攻擊的對策。最後,在第 8.3 節中,我們討論了先前關於神經架構搜尋的工作。
安全推理問題可以通過通用安全計算技術解決,如安全兩方(2PC)計算[Yao86; Gol+87],完全同態加密(FHE)[Gen09],或同態祕密共用(HSS)[Boy+16]。然而,由此產生的協定將遭受可怕的通訊和計算複雜性。例如,使用 2PC 計算函數的成本隨著該函數的(算術或布林)電路的大小而增長。在我們的設定中,被計算的函數是神經網路本身。評估網路需要矩陣向量乘法,並且用於該運算的電路隨著輸入的大小呈二次方增長。因此,使用通用的 2PC 協定進行安全推理將導致計算和通訊中的直接二次爆炸。
同樣,儘管為提高 FHE 的效率做出了一系列努力 [Bra+11; 11 世代;範+12;哈爾+18; Hal+19]和HSS[Boy+17],它們的計算開銷還是很大的,不適合在我們的場景中使用。
因此,似乎有必要為安全機器學習設計專門的協定,並且確實有很長的前期工作[Du+04;劉+06;欄+09;尼克+13a;尼克+13b;山姆+15;博斯+15;吳+16a;怡安+16; Sch+19] 正是這樣做的。這些工作通常分為兩類:那些專注於安全訓練的,以及那些專注於安全推理的。由於安全訓練不是本文的重點,因此我們省略了討論,而是專注於安全推理的先前工作。大多數這些早期工作都集中在更簡單的機器學習演演算法上,例如 SVM 和線性迴歸。為這些更簡單的演演算法設計密碼協定通常比我們為神經網路設定推理更容易處理。
因此,在本節的其餘部分,我們將討論專注於神經網路安全推理的先前工作。這項工作一般分為以下幾類: (a) 基於 2PC 的協定; (b) 基於 FHE 的協定; (c) 基於 TEE 的協定; (d) 在多方模型中工作的協定。
基於2PC的協定。 SecureML [Moh+17] 是首批關注神經網路安全學習和預測問題的系統之一。然而,它完全依賴於通用的 2PC 協定來做到這一點,導致在現實網路上的效能不佳。 MiniONN [Liu+17a] 使用 SPDZ 協定來計算線性層和多項式近似啟用。與 DELPHI 不同,MiniONN 為線性層中的每個乘法生成乘法三元組;對於輸入大小為 n 的層,與 DELPHI 的 n 相比,MiniONN 需要 n 2 個離線和線上通訊。
GAZELLE [Juv+18] 是與我們最相似的系統:它對線性層使用基於 HE 的高效協定,同時使用亂碼電路來計算非線性啟用。然而,它在線上階段依賴大量的密碼操作導致協定在計算和通訊方面比 DELPHI 的協定更昂貴(請參閱第 7 節進行全面比較)。
DeepSecure [Rou+18] 和 XONN [Ria+19] 使用亂碼電路為權重均為布林值的受限類二值化神經網路 [Cou+15] 提供安全推理。此限制使這些協定能夠構建一個僅使用固定次數往返的協定。DeepSecure 還修剪輸入神經網路以減少啟用次數。 Ball 等人 [Bal+19] 最近還構建了一個安全推理協定,該協定依賴於 [Bal+16] 的亂碼方案。與 XONN 和 DeepSecure 不同,[Bal+19] 的協定支援通用神經網路。儘管進行了優化,但這些工作中的每一個都面臨著巨大的具體成本,因為每個工作都在亂碼電路內執行矩陣向量乘法。
EzPC [Cha+17],在輸入程式的高階描述時,綜合實現該程式的加密協定。編譯後的協定智慧地混合使用算術和布林 2PC 協定來提高效率。
基於 FHE 的協定。 CryptoNets [Gil+16] 是第一個嘗試優化和客製化 FHE 方案以進行安全推理的工作。儘管進行了優化,但 FHE 的侷限性意味著 CryptoNets 僅限於只有幾層深度的網路,即使對於這些網路,它也只有在處理一批輸入時才會變得高效。近期論文[Hes+17;布魯+18;布+18;趙+18; San+18] 開發了不同的方法來優化 CryptoNets 範例,但生成的協定仍然需要數十分鐘才能對比我們在此考慮的網路小得多的網路提供預測。
CHET [Dat+19] 將神經網路的高階規範編譯為基於 FHE 的推理協定。為了有效地使用 FHE,CHET 必須用多項式近似替換所有 ReLU,這會損害大型網路的準確性。
基於 TEE 的協定。 有兩種使用可信執行飛地 (TEE) 進行推理的方法:(a) 通過伺服器端飛地進行推理,其中使用者端將其輸入上傳到伺服器的飛地,以及 (b) 在使用者端飛地中進行推理,其中使用者端提交查詢儲存在使用者端飛地中的模型。
Slalom 和 Privado 是依賴伺服器端飛地的協定範例。 Slalom [Tra+19] 與 DELPHI 一樣,將推理分為離線和線上階段,線上階段使用附加祕密共用。與 DELPHI 不同,Slalom 使用英特爾 SGX 硬體飛地 [McK+13] 來安全地計算離線和線上階段。 Privado [Top+18] 將神經網路編譯成不經意的神經網路,這意味著計算轉換後的網路不需要對祕密資料進行分支。他們使用不經意的網路在英特爾 SGX 飛地內執行推理。 Slalom 的實現表明它不會無意識地實現線性或非線性層。
MLCapsule [Han+18] 描述了一個通過使用者端飛地執行推理的系統。 Apple 使用使用者端安全飛地執行指紋和麵部匹配以授權使用者 [App19]。
一般來說,大多數基於 TEE 的密碼推理協定比依賴密碼的協定(如 DELPHI)提供更高的效率。這種效率的提高是以威脅模型較弱為代價的,該模型需要對硬體供應商的信任和 enclave 的實施。此外,由於協定執行發生在對抗性環境中,任何側通道洩漏都更加危險(因為對手可以小心地操縱執行以強制進行這種洩漏)。確實,過去幾年出現了一些強大的側通道攻擊[Bra+17;哈+17;得到+17;莫格+17;施+17;萬+17; Van+18] 對抗英特爾 SGX 和 ARM TrustZone 等流行飛地
多方的協定。 上面的討論集中在兩方協定上,因為在我們看來,安全推理自然地對映到這種設定。儘管如此,許多作品 [Ria+18;搖擺+18;鐵; Bar+19] 改為針對三方設定,其中模型的份額在兩個非共謀伺服器之間分配,使用者端必須與這些伺服器互動以獲得它們的預測。
預測API攻擊[Ate+15;自由+15;吳+16b;貿易+16;翔+17; Jag+19] 的目標是學習關於伺服器模型或訓練資料的私人資訊,只允許存取任意查詢的預測結果。
除了速率限制和查詢審計 [Jag+19] 之外,沒有針對預測 API 攻擊的一般防禦措施。但是,可以防禦特定類別的攻擊。例如,可以使用差異私有訓練 [Sho+15; Aba+16] 來訓練不洩露有關底層訓練資料的敏感資訊的神經網路。
DELPHI 的保證是對任何此類緩解措施提供的保證的補充。事實上,只要付出足夠的努力,這些技術就可以整合到 DELPHI 中,以提供更強大的隱私保證;我們把它留給未來的工作。
最近,機器學習研究在神經架構搜尋 (NAS) 領域取得了快速進展(參見 [Els+19; Wis+19] 調查)。該領域的目標是開發通過優化網路的超引數來自動優化神經網路屬性(如準確性和效率)的方法。通常優化的超引數範例包括折積核的大小、層數以及梯度下降演演算法的引數,如學習率和動量。在這項工作中,我們僅依靠 NAS 演演算法來優化網路中二次逼近層的放置,因為 ReLU 啟用是我們系統中的瓶頸。