摘要
許多公司為用戶提供神經網路預測服務,應用范圍廣泛,然而,目前的預測系統會損害一方的隱私:要么用戶必須將敏感輸入發送給服務提供商進行分類,要么服務提供商必須將其專有的神經網路存盤在用戶的設備上,前者損害了用戶的個人隱私,而后者暴露了服務提供商的專有模式,
我們設計、實作并評估了DELPHI,這是一個安全的預測系統,允許雙方在不泄露任何一方資料的情況下執行神經網路推理,DELPHI通過同時聯合設計密碼學和機器學習來解決這個問題,我們首先設計了一種混合加密協議,在通信和計算成本上比之前的作業有所提高,其次,我們開發了一個規劃器,自動生成神經網路架構配置,導航我們的混合協議的性能精度權衡,與之前最先進的作業相比,這些技術使我們的在線預測延遲提高了22倍,

1 介紹
機器學習的最新進展推動了神經網路推理在語音助手[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倍,
1.1技術
我們現在在較高的層次上描述了DELPHI卓越性能背后的技術,
性能目標, 現代卷積神經網路由許多層組成,每個層包含一個子層用于線性操作,一個子層用于非線性操作,常見的線性運算包括卷積、矩陣乘法和平均池化,非線性操作包括激活函式,如流行的ReLU(整流線性單元)函式,
因此,實作現實神經網路的加密預測需要(a)構建用于評估線性和非線性層的有效子協議,以及(b)將這些子協議的結果相互鏈接,
之前的作業,以往幾乎所有的密碼預測協議都使用重量級密碼工具來實作這些子協議,這導致計算和通信成本遠遠高于同等的明文成本,更糟糕的是,許多協議在協議的延遲敏感在線階段使用這些工具,即當用戶獲取輸入并希望獲得其分類時,(這與延遲敏感度較低的預處理階段相反,后者發生在用戶輸入可用之前),
例如,最先進的GAZELLE協議的在線階段使用了大量的加密技術,如線性同態加密和亂碼電路,正如我們在7.4節中所展示的,這會導致大量的預處理和在線成本:對于通過CIFAR-100訓練的流行網路架構ResNet-32, GAZELLE在預處理階段需要~ 158秒和8GB的通信,在預處理階段需要~ 50秒和5GB的通信,在在線階段需要~ 82秒和600MB的通信,
1.1.1 DELPHI協議
為了在真實的神經網路上獲得良好的性能,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秒的時間,
2系統概述
2.1系統設定
在系統設定中有兩方:客戶端和服務提供者(或服務器),在我們系統的明文版本中,服務提供者通過API使用其內部模型以服務的形式提供預測,客戶端通過將資料傳輸給服務提供者,使用這個API對自己的資料運行預測,服務提供者使用適當的神經網路運行預測,然后將預測結果發送回客戶端,在DELPHI中,雙方通過提供各自的輸入來共同執行安全預測,服務提供者的輸入是神經網路,而客戶端的輸入是用于預測的私有輸入,
2.2威脅模型
DELPHI的威脅模型類似于之前的安全預測作品GAZELLE [Juv+18]和MiniONN [Liu+17a],更具體地說,DELPHI是為兩方半誠實環境設計的,其中只有一方被對手破壞,此外,這個對手永遠不會偏離協議,但它將試圖從它收到的訊息中了解有關其他方私人輸入的資訊,
2.3隱私目標
DELPHI的目標是讓客戶只學習兩部分資訊:神經網路的架構和推理的結果;所有其他關于客戶端私有輸入和服務器神經網路模型引數的資訊都應該被隱藏,具體來說,我們的目標是實作一個強大的基于模擬的安全定義;參見定義4.1,
像之前的所有作業一樣,DELPHI并不隱藏關于網路架構的資訊,例如網路中每一層的尺寸和型別,對于之前的作業,這通常不是問題,因為體系結構獨立于訓練資料,然而,由于DELPHI的規劃器使用訓練資料來優化二次近似,揭示網路架構會揭示關于資料的一些資訊,具體地說,在優化“層網路”時,規劃者做出“二元選擇”,因此最多只能揭示關于訓練資料的位元資訊,因為'對于實際網路來說非常小(例如,' = 32對于ResNet32),這個泄漏可以忽略不計,這種泄漏可以通過使用差分私有訓練演算法[Sho+15;阿壩+ 16]
與大多數先前的密碼預測系統一樣,DELPHI不隱藏預測結果所揭示的資訊,在我們看來,防范利用這種泄漏的攻擊是DELPHI解決的一個補充問題,事實上,這種攻擊甚至已經成功地針對那些通過要求客戶端將其輸入上傳到服務器而“完美”隱藏模型引數的系統[Fre+14;吃+ 15;Fre + 15;吳+ 16 b;+ 16],此外,針對這些攻擊的常用緩解措施,如差異隱私,可以與DELPHI的協議結合使用,我們將在第8.2節中更詳細地討論這些攻擊和可能的緩解措施,
2.4系統架構及作業流程
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]等系統中的影像分類,
3 密碼原語
4加密協議
在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協議分兩個階段進行:預處理階段和在線階段,我們將在后面的小節中詳細介紹這兩個階段,
4.1預處理階段
在預處理程序中,客戶端和服務器預先計算在線執行程序中可以使用的資料,這個階段可以獨立于輸入值執行,也就是說,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的乘法三元組.
4.2在線
在線階段分為兩個階段:設定和層評估,
4.2.1 啟動
客戶端在輸入x時,將x?r1發送給服務器,服務器和客戶端現在擁有x的附加秘密共享,
4.2.2 層次評估
在第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 安全
定理 4.3,假設存在亂碼電路、線性同態加密和用于 Beaver 的三元組生成和乘法程序的安全協議,上述協議是一個密碼預測協議(見定義 4.1),
證明, 下面我們先針對客戶端損壞的情況介紹模擬器,然后針對服務端損壞的情況介紹模擬器,我們在附錄 B 中提供了一個依賴于這些模擬器的混合論證,
5 Planner
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),

5.1 為DELPHI的planner適配NAS
挑戰 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 節中的實驗表明,此功能使我們能夠選擇既高效又準確的網路,
$$&lt;br&gt;score(N) := acc(N)(1+ \frac{\#quad.activations}{\#total.activations} )&lt;br&gt;$$&lt;/div&gt; &lt;br&gt;&lt;h2 &gt;&lt;span &gt;5.2 選擇NAS演算法<p ><span >到目前為止的討論與 NAS 演算法的選擇無關,在我們的實作中,我們決定使用流行的基于群體的訓練演算法 [Jad+17],因為它可以直接為我們的用例定制它,并且因為它有許多優化的實作(比如 [Lia+18] ]).<p></p><p ><span >基于群體的訓練 (PBT) [Jad+17] 維護了一個候選神經網路群體,它在一系列時間步長上進行訓練,在每個時間步結束時,它通過用戶指定的評分函式衡量每個候選網路的性能,并將性能最差的候選網路替換為性能最好的候選網路的變異版本(變異函式由用戶指定) .在優化程序結束時,PBT 輸出它找到的性能最佳的候選網路架構(以及用于訓練它們的超引數),
6 系統實施
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 評價
我們將評估分為三個部分來回答以下問題
-
第 7.2 節:DELPHI 構建塊的效率如何?
-
第 7.3 節:DELPHI 的規劃器是否為現實的神經網路(例如 ResNet-32)提供了效率和準確性之間的良好平衡?
-
第 7.4 節:使用 DELPHI 為此類神經網路提供預測服務的延遲和通信成本是多少?
7.1 評估設定
所有密碼學實驗都是在 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 協議實作;只有個別的子協議被執行,
7.2 微基準
我們提供了 DELPHI 在線性和非線性層上的性能的微基準測驗,并將兩者與 GAZELLE 進行了比較,
7.2.1 線性運算
下面我們重點關注卷積運算的性能,因為它們構成了神經網路線性運算的大部分成本,卷積的復雜性取決于輸入的維度、卷積核的大小和數量,以及填充和步幅(后一個引數決定了將核應用于輸入的頻率),在表 1 中,我們評估了 ResNet-32 中使用的卷積的成本,關鍵要點是我們的在線時間比 GAZELLE 小 80 多倍,我們的在線交流少 150 多倍,另一方面,我們的預處理時間和通信量高于 GAZELLE,但最多等于 GAZELLE 的在線時間和通信量,

優化 GPU 操作,如備注 4.2 中所述,DELPHI 對素數域的選擇使 DELPHI 能夠使用標準 GPU 庫來評估在線階段的卷積層,但是,這樣做需要將層權重和輸入復制到 GPU 記憶體中,并將每個線性層的輸出復制回 CPU 記憶體,此復制可能會產生大量開銷,為了攤銷它,可以將不同輸入的卷積批處理在一起,在表 2 中,我們報告了批量大小為 1、5 和 10 的成本,關鍵要點是,對于單卷積,這些成本比表 1 中的等效成本低 50-100 倍以上,并且對于批量卷積,成本似乎與批量大小呈次線性關系,

7.2.2 ReLU 和二次激活
回想一下,我們用于評估 ReLU 激活的協議使用了亂碼電路,我們的 ReLU 電路遵循 [Juv+18] 中的設計,并進行了一些額外的優化,為了評估二次激活,我們的協議使用 Beaver 的乘法程序 [Bea95],它需要從服務器向客戶端發送一個場元素,反之亦然,然后需要雙方進行一些廉價的本地場操作,兩種激活的通信和計算成本如表 3 所示

7.3 DELPHI的規劃器
為了證明我們的規劃器的有效性,我們需要證明 (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 基線更少的激活,

7.4 DELPHI 的密碼協議
我們通過展示 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 相關作業
我們首先在第 8.1 節中討論用于安全執行機器學習演算法的密碼技術,然后,在第 8.2 節中,我們討論了從預測中恢復有關模型的資訊的模型推理攻擊,以及針對這些攻擊的對策,最后,在第 8.3 節中,我們討論了先前關于神經架構搜索的作業,
8.1 安全機器學習
安全推理問題可以通過通用安全計算技術解決,如安全兩方(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] 改為針對三方設定,其中模型的份額在兩個非共謀服務器之間分配,客戶端必須與這些服務器互動以獲得它們的預測,
8.2 預測中的模型泄漏
預測API攻擊[Ate+15;自由+15;吳+16b;貿易+16;翔+17; Jag+19] 的目標是學習關于服務器模型或訓練資料的私人資訊,只允許訪問任意查詢的預測結果,
除了速率限制和查詢審計 [Jag+19] 之外,沒有針對預測 API 攻擊的一般防御措施,但是,可以防御特定類別的攻擊,例如,可以使用差異私有訓練 [Sho+15; Aba+16] 來訓練不泄露有關底層訓練資料的敏感資訊的神經網路,
DELPHI 的保證是對任何此類緩解措施提供的保證的補充,事實上,只要付出足夠的努力,這些技術就可以集成到 DELPHI 中,以提供更強大的隱私保證;我們把它留給未來的作業,
8.3 神經結構搜索
最近,機器學習研究在神經架構搜索 (NAS) 領域取得了快速進展(參見 [Els+19; Wis+19] 調查),該領域的目標是開發通過優化網路的超引數來自動優化神經網路屬性(如準確性和效率)的方法,通常優化的超引數示例包括卷積核的大小、層數以及梯度下降演算法的引數,如學習率和動量,在這項作業中,我們僅依靠 NAS 演算法來優化網路中二次逼近層的放置,因為 ReLU 激活是我們系統中的瓶頸,
神經結構搜索的常見方法包括基于強化學習 [Zop+17]、進化演算法 [Yao99; Ber+13],隨機搜索[Ber+12;杰德+17], DELPHI的planner使用Population-Based Training演算法[Jad+17]來進行NAS, PBT 可以看作是進化演算法和隨機搜索方法的混合體,
復制成功
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/548628.html
標籤:其他
上一篇:全網最詳細中英文ChatGPT-GPT-4示例檔案-最強JS助手聊天機器人應用從0到1快速入門——官網推薦的48種最佳應用場景(附python/node.js/curl命令源代碼,小白也能學)

復制成功