Opacus 是 Facebook AI 更為廣泛努力的一部分,旨在推動用于機器學習和負責任的人工智能安全計算技術。總的來說,這是一個重要的踏腳石,使該領域在未來轉向隱私優(yōu)先的系統(tǒng)。日前,Opacus 已開源發(fā)布。
差分隱私(Differential privacy,DP)是密碼學中的一種手段,旨在提供一種當從統(tǒng)計數(shù)據(jù)庫查詢時,最大化數(shù)據(jù)查詢的準確性,同時最大限度減少識別其記錄的機會。讀者可以查看這篇由 InfoQ 中文站翻譯的文章《差分隱私簡介》,以了解基本概念。
機器學習算法一般是用大量數(shù)據(jù)更新模型參數(shù),學習數(shù)據(jù)特征。在理想情況下,這些算法學習到一些泛化性較好的模型,例如 “吸煙患者更容易得肺癌”,而不是特定的個體特征,例如 “張三是個吸煙者,患有肺癌”。然而,機器學習算法并不會區(qū)分通用特征還是個體特征。當我們用機器學習來完成某個重要任務,例如肺癌診斷,發(fā)布的機器學習模型可能在無意中透露訓練集中的個體特征,惡意攻擊者可能從發(fā)布的模型獲得關于張三的隱私信息,因此使用差分隱私技術來保護機器學習模型是十分必要的。
通常,差分隱私需要在將原始數(shù)據(jù)輸入本地機器學習模型之前,將少量噪聲注入原始數(shù)據(jù),從而使惡意攻擊者難以從訓練的模型中提取出原始文件。如果一個觀察者觀察算法的輸出,無法判斷它在計算中是否使用了某個特定個體的信息,那么這個算法就可以被認為是差分隱私的。
為了解決這一問題,日前,F(xiàn)acebook 發(fā)布并開源了Opacus,這是一個新的高速庫,用于訓練具有差分隱私的 PyTorch 模型,比現(xiàn)有的最先進方法更具可擴展性。差分隱私是一個數(shù)學上嚴謹?shù)目蚣?,用于量化敏感?shù)據(jù)的匿名化。人們對機器學習社區(qū)的興趣越來越濃厚,它經常被用于分析。隨著 Opacus 的發(fā)布,F(xiàn)acebook 希望能為研究人員和工程師在機器學習中采用差分隱私提供一條更簡單的路徑,并加速該領域的差分隱私研究。
Opacus 地址
Opacus 提供了如下特征:
速度:通過利用 PyTorch 中的 Autograd 鉤子,Opacus 可以計算經過批處理的每個樣本梯度,與現(xiàn)有的依賴微批處理的 DP 庫相比,速度提高了一個數(shù)量級。
安全性:Opacus 為安全關鍵代碼使用了一個 密碼安全、偽隨機、GPU 加速的數(shù)字數(shù)生成器。
靈活性:多虧了 PyTorch,工程師和研究人員可以通過將 Facebook 的代碼與 PyTorch 代碼和純 Python 代碼混合匹配,從而快速構建他們的想法原型。
生產力:Opacus 提供了教程、輔助函數(shù)(可以在你的訓練開始之前警告不兼容的層),以及自動重構機制。
交互性:Opacus 可以跟蹤你在任何給定時間點上的隱私預算(差分隱私中的核心數(shù)學概念),從而實現(xiàn)提前停止和實時監(jiān)控。
Opacus 通過引入 PrivacyEngine 抽象定義了一個輕量級 API,它負責跟蹤隱私預算和處理模型的梯度。你不需要直接調用它進行操作,因為它連接到標準的 PyTorch 優(yōu)化器上。它在幕后工作,使得使用 Opacus 進行訓練就像在你的訓練代碼的開頭添加這些代碼行一樣容易:
model = Net() optimizer = torch.optim.SGD(model.parameters(), lr=0.05) privacy_engine = PrivacyEngine( model, batch_size=32, sample_size=len(train_loader.dataset), alphas=range(2,32), noise_multiplier=1.3, max_grad_norm=1.0, ) privacy_engine.attach(optimizer) # That's it! Now it's business as usual
經過訓練,得到的是一個標準的 PyTorch 模型,沒有部署私有模型的額外步驟或障礙:如果今天可以部署一個模型,那么你就可以在用差分隱私訓練后部署它,無需更改任何一行代碼。
Opacus 庫還包括預訓練和微調的模型、針對大型模型的教程,以及為隱私研究實驗設計的基礎設置。它是開源的【地址】
利用 Opacus 實現(xiàn)高速隱私訓練
Facebook 表示,他們使用 Opacus 的目的是保護每個訓練樣本的隱私,同時限制對最終模型正確率的影響。Opacus 通過修改標準 PyTorch 優(yōu)化器來實現(xiàn)這一目標,以便在訓練期間執(zhí)行(和測量)查分意思。更具體地說,他們的方法以差分隱私隨機梯度下降(Differentially private stochastic gradient descent,DP-SGD)為中心。
這個算法背后的核心思想是,可以通過干預模型用來更新權重的參數(shù)梯度,而不是直接干預數(shù)據(jù),從而保護訓練數(shù)據(jù)集的隱私。通過在每次迭代中想梯度添加噪聲,人們就可以防止模型記憶其訓練實例,同時仍然可以進行融合學習。在訓練過程中看到的許多批處理中,(無偏的)噪聲將自然地趨于抵消。
這種每個樣本的計算是構建 Opacus 的最大障礙之一。與使用 PyTorch 的典型操作相比,它更具挑戰(zhàn)性,因為在 PyTorch 中,Autograd計算整個批處理的梯度張量,因為這對于所有其他機器學習用例都是有意義的,并且它對性能進行了優(yōu)化。為克服這一問題,F(xiàn)acebook 使用了一種有效的技術,在訓練標準神經網絡時獲得所有需要的梯度向量。對于模型參數(shù),則單獨返回給定批處理中每個示例的損失梯度,例如:
通過在運行層時跟蹤一些中間量,人們可以使用適合內存的任何批處理大小進行訓練,這使得 Facebook 的方法與其他軟件包中使用的替代微批處理方法相比,速度提高了一個數(shù)量級。
隱私保護機器學習的重要性
安全社區(qū)鼓勵安全關鍵代碼的開發(fā)者使用少量經過仔細審核和專業(yè)維護的庫。這種“不要自己搞安全方案”原則有助于最大限度地減少攻擊面,讓應用開發(fā)人員專注于他們最擅長的事情:構建偉大的產品。隨著機器學習的應用和研究不斷加速,對于機器學習研究人員來說,在不減慢訓練過程的前提下,獲得簡單易用的工具,以獲得數(shù)學上嚴格的隱私保證是非常重要的。
Facebook 希望通過開發(fā)像 Opacus 這樣的 PyTorch 工具,使此類隱私保護資源的訪問更加民主化。Facebook 正在通過使用 PyTorch 的更快速、更靈活的平臺,彌合安全社區(qū)和普通機器學習工程師之間的鴻溝。
建立社區(qū)
過去幾年,隱私保護機器學習(Privacy-preserving machine learning,PPML)社區(qū)發(fā)展迅速。Facebook 表示他們對圍繞 Opacus 形成的生態(tài)系統(tǒng)感到興奮,這個生態(tài)系統(tǒng)由 PPML 的領導者組成。
OpenMined 是 Facebook 的主要貢獻者之一,它是一個由數(shù)千名開發(fā)者組成的社區(qū),他們在開發(fā)應用時考慮到了隱私問題。OpenMined 社區(qū)已經為 CrypTen 做出了貢獻,并利用 PyTorch 的許多構件來支持 PySyft 和 PyGrid 的差分隱私和聯(lián)合學習。作為合作的一部分,Opacus 將成為 PySyft 等 OpenMined 庫的依賴。
Facebook 期待繼續(xù)合作,進一步發(fā)展社區(qū)。
文章來源:AI前線 ,作者Davide Testuggine、Ilya Mironov
審核編輯 黃昊宇
-
人工智能
+關注
關注
1791文章
47352瀏覽量
238777 -
開源
+關注
關注
3文章
3363瀏覽量
42537 -
pytorch
+關注
關注
2文章
808瀏覽量
13239
發(fā)布評論請先 登錄
相關推薦
評論