在加密資料上進行神經網路的訓練

2021-10-25 11:40:40 字數 2924 閱讀 5849

本文介紹一下目前如何使用加密資料進行神經網路的訓練,並簡要介紹各種應用場景、已有工具框架等內容。

當前,基於雲的神經網路服務部署逐漸成為主流,在這種情況下,資料和模型由不同方擁有。但是,mlaas的場景下會產生許多資料隱私問題。舉個簡單例子來講,第三方開發了乙個深度學習**模型,對患者的醫學資料進行某種疾病的檢測。由於法律法規和個人隱私需求的限制,醫院無法直接傳輸明文醫學資料給第三方用於模型輸入,也不應將檢測結果暴露給患者以外的第三方。通過同態加密(he),醫院可以傳送加密資料,使得第三方在加密資料上執行模型,而無需透露任何基礎資訊。

在過去一段時間,這種基於he的機器學習方法逐漸成為研究重點,另一種技術書安全多方計算(mpc)。he非常適合使用深度神經網路進行**的任務。

資料擁有者(do)和雲模型提供者(cloud)

加密的資料,加密的模型:do將he加密的資料傳送到cloud。然後,cloud根據加密資料計算模型以產生加密輸出,將輸出傳送給do,do使用私鑰對其進行解密。

未加密的資料,加密的模型:cloud將已加密的模型傳送給do,然後do在不現實任何資料的情況下在本地執行模型,以生成加密的輸出。do不會獲得任何有關模型的任何資訊,並且可以由金鑰的所有者(如模型的所有者)解密輸出。

加密資料,加密模型:乙個do或多個do將資料聯合起來輸入加密網路進行**,cloud返回加密**結果,需要多個金鑰才能解密。類似於聯邦學習。

第乙個應用場景是最具有代表性的,因為它是mlaas在同態加密下的直接應用。與mpc相比,he的優勢在於不需要維持通訊來進行計算,但是缺點也同樣明顯,那就是計算量的代價、可計算函式的侷限性、同態乘法的誤差增長。總體而言,he方案的主要瓶頸是計算能力,而mpc則是通訊。

同態加密(he,homomorphic encryption)是密碼學裡一種特殊的加密模式,同態加密使我們可以將加密後的密文發給任意的第三方進行計算,並且在計算前不需要解密,即:在密文上進行計算。 雖然同態加密的概念最早出現於30年前,但是第乙個支援在密文上進行任意運算的全同態加密框架出現較晚,在2023年由craig gentry提出。

同態加密的分類

部分同態加密(phe)指同態加密演算法只對加法或乘法(其中一種)有同態的性質。phe的優點是原理簡單、易實現,缺點是僅支援一種運算(加法或乘法)。可以應用在聯邦學習中伺服器的聚合操作。

層次同態加密演算法(lhe)一般支援有限次數的加法和乘法運算。lhe的優點是同時支援加法和乘法,並且因為出現時間比phe晚,所以技術更加成熟、一般效率比fhe要高很多、和phe效率接近或高於phe,缺點是支援的計算次數有限。全同態加密演算法(fhe)支援在密文上進行無限次數的、任意型別的計算。fhe的優點是支援的運算元多並且運算次數沒有限制,缺點是效率很低,目前還無法支撐大規模的計算。基於格的同態加密演算法(rlwe)支援有限次數的加法和乘法運算。rlwe的有點是密文結果較短,效率較與傳統方法要好,缺點是該問題在密文中新增了雜訊項,在加法特別是乘法期間,雜訊項迅速增長,會導致最終無法再解密。

usenix-18 gazelle: a low latency framework for secureneural network inference

在聯邦學習中,多方聯合訓練模型一般需要交換中間結果,如果直接傳送明文的結果可能會有隱私洩露風險。在這種場景下,同態加密就可以發揮很重要的作用。多方直接將中間結果用同態加密演算法進行加密,然後傳送給第三方進行聚合,再將聚合的結果返回給所有參與者,不僅保證了中間結果沒有洩露,還完成了訓練任務(第三方可以通過優化系統設計去除)。

在聯邦學習中,因為只需要對中間結果或模型進行聚合,一般使用的同態加密演算法為phe(多見為加法同態加密演算法),例如在fate中使用的paillier即為加法同態加密演算法。為了更好地展示同態加密在聯邦學習中的應用,我們在此展示乙個同態加密在聯邦學習推薦系統中的應用。

在傳統的推薦系統中,使用者需要上傳瀏覽記錄、評價資訊來實現個性化推薦,但是這些資訊均屬於個人的隱私資料,直接上傳會帶來很大的安全隱患。在聯邦推薦系統中,每個使用者將資料儲存在本地,只上傳特定的模型梯度。這樣雖然避免了隱私資料的直接洩露,但是還是透露了梯度資訊給雲伺服器。同時我們發現,從數學上可以證明,使用連續兩次更新的梯度即可反推出使用者的評分資訊。這種情況下,就必須使用同態加密對使用者上傳的梯度進行保護,即使用者在上傳梯度前使用加法同態加密演算法對梯度資訊進行加密,然後雲伺服器將所有使用者的密文梯度進行聚合(相加),再將更新後的模型返還給各個使用者解密,完成訓練更新。

這個框架目前使用的公私鑰加密方案是存在問題的,當server和其中乙個client進行共謀時,私鑰會洩露。因此後續可以採用私鑰秘密分享的方法進行設計。

密態計算中使用的同態加密演算法多為lhe和fhe。其實全同態加密研究的初衷,就是為了實現安全的雲計算,即對雲算力有需求的使用者可以將本地的資料全部加密,然後上傳到雲端,然後雲端的伺服器即可按照使用者指令完成計算,整個過程使用者的資料不會洩露給雲端,從而完成「絕對安全」的雲計算服務。

但是由於目前fhe效率比較低,所以使用全同態加密進行雲計算遠遠沒有達到應用的級別。機器學習在雲計算中有著廣闊的市場,而機器學習有訓練和推理兩種需求,訓練過程一般資料較多、計算量很大,而推理則資料量相對較小、計算量也小,所以目前研究主要集中在密態下的機器學習推理,並且目前已經有速度比較快的方案 (usenix-18 gazelle);而密態下的機器學習訓練研究稀少,是乙個比較難解決的問題。

intelai/he-transformer:

對加密資料進行本地機器學習,支援多種加密模式,如microsoft的seal-ckks的同態方案和aby的mpc方案。並有開源實現和**支援。

facebook/crypten:

主要是採用了安全多方計算來實現資料隱私保護下的機器學習任務。目前還在原型階段。

神經網路的訓練

既然我們希望網路的輸出盡可能的接近真正想要 的值。那麼就可以通過比較當前網路的 值和我們真正想要的目標值,再根據兩者的差異情況來更新每一層的權重矩陣 比如,如果網路的 值高了,就調整權重讓它 低一些,不斷調整,直到能夠 出目標值 因此就需要先定義 如何比較 值和目標值的差異 這便是損失函式或目標函式...

卷積神經網路的訓練

考慮步長為1 輸入影象的深度為1 filter的個數為1的最簡單的情況。假設 我們輸入的大小為3x3 filter大小為2x2,按步長為1來進行卷積,可知我們將得到的是乙個2x2的feature map。如下圖 後面的步驟一定要結合圖看才容易懂一點 在上圖中 通過推導,我們不難發現,計算 對應成卷積...

訓練神經網路的處方

翻譯自andrej karpathy blog 處方在實踐中,我們從簡單到複雜構建模型,並且在每一步我們對將要發生的具體事情進行 通過實驗進行驗證並且通過調查發現問題。一定要防止同時引入許多未經驗證的猜想,否則總是會在查詢問題。一開始,要使用較小的學習率,並每一步都要評估測試集上的表現。1 不要一開...