0
| 本文作者: 貝爽 | 2020-09-02 18:26 |
如何保護數據集隱私,是深度學習訓練必須要解決的問題之一。
近日,Facebook開源了一個名為Opacus的高速庫,該庫可用于訓練具有差分隱私的PyTorch模型。

差分隱私(Differential Privacy ,簡稱DP)是保護數據集隱私的重要工具。在此之前,谷歌、微軟等也陸續開源了其核心產品使用的差分隱私庫。
不同的是,與現有方法相比,Opacus具有可擴展性,支持大多數類型的PyTorch模型,并且只需對神經網絡進行最少的代碼更改。同時它允許客戶端實時監控任何給定時間花費的隱私預算(Privacy Budget,DP中的核心數學概念)。
蘋果在 2016 的開發者大會上首次提出了“差分隱私(DP)”的概念。即通過算法來打亂個體用戶數據,讓任何人都不能憑此追蹤到具體的用戶,但又可以允許機構成批分析數據以獲得大規模的整體趨勢用于機器學習。
換句話說,DP有效地限制了某些用于匯總數據集信息的算法。
Facebook在博客中稱,他們通過計算精確答案并添加隨機采樣噪聲來執行計數查詢的差分隱私。以最簡單的形式,可以使用從拉普拉斯分布中提取的噪聲來實現隱私保護機制。
同時,他們在此基礎上,引入差分私有隨機梯度下降算法(Differentially Private Stochastic Gradient Descent,簡稱,DP-SGD),該算法通過小批量隨機優化過程,使其具有差分私有性。
具體而言,Opacus庫在保護數據隱私方面有以下特性:
速度:通過利用PyTorch中的Autograd Hook,Opacus可以計算成批的單個樣本梯度,與微批量(Microbatching.)處理的現有DP庫相比,實現了數量級的加速。
安全:Opacus對其安全關鍵代碼使用加密的偽隨機數生成器,在GPU上對整批參數進行高速處理。
靈活性:Opacus可以與Pythorch代碼和純Python代碼相互混合和匹配,來快速構建工程師的想法原型。
生產力:Opacus附帶教程,在訓練開始前警告不兼容層的幫助函數,以及自動重構機制。
交互性:Opacus可以跟蹤任何給定時間點花費的隱私預算,從而能夠提早停止和實時監控。
Opacus通過引入Privacy Engine抽象定義了一個輕量級API,它既可以跟蹤隱私預算,也可以處理模型的梯度。
同時,它的使用方法也非常簡單,無需調用,用戶只需要將Opacus附加到標準的PyTorch優化器上,并在訓練代碼的開頭添加以下代碼即可:

訓練后,生成的就是一個標準的PyTorch模型,沒有部署私有模型的任何額外步驟或障礙:在使用DP對其進行訓練之后部署,無需更改任何代碼。
另外,Opacus庫還包括了經過預訓練和微調的模型,用于大型模型的教程,以及用于隱私研究實驗的基礎結構。
Opacus能夠在保護每個訓練樣本私密性的同時,限制對最終模型準確性的影響。它通過修改標準的PyTorch優化器來做到這一點。具體來說,是采用一種差分私有隨機梯度下降的算法。
Facebook在博客中稱,“該算法的核心思想是,我們可以通過干預模型來更新權重的參數梯度(而不是直接獲取數據)來保護訓練數據集的隱私。通過在每次迭代中將噪聲添加到梯度中,可以防止模型記住其訓練示例,同時仍可進行匯總學習,(無偏)噪聲自然會在訓練中看到的許多批次而抵消。
需要強調的是,由于PyTorch優化器可以查看參數梯度,因此,可以直接將噪聲添加到其中,并允許任何人簡單地訓練差分私有模型,其代碼如下:

此外,噪聲的定量問題是這一解決方案的關鍵。因為過多的噪聲會破壞信號,過少的噪聲將無法保證隱私。
為了確定合適的比例,首先要查看小批量中梯度的最大范數。因為離群值比大多數樣本具有更大的梯度,需要確保這些異常值的私密性。
通常研究人員會采用微批量(microbatch)的方法。該方法是在小批量處理中計算每個樣本的梯度,分別裁剪梯度,將其累積回單個梯度張量,然后將噪聲添加到總和中。該方法具有簡單性和兼容性和特點,但計算每個樣本的梯度,限制了訓練的速度。
在這里,Opacus采用了另一種更高效的解決方案。該方案由谷歌于2015年提出,其論文為《EFFICIENT PER-EXAMPLE GRADIENT COMPUTATIONS》,對于所有ML樣本而言,它可以計算整個批次的梯度向量,同時優化性能。
Facebook在論文中表示,他們在訓練標準神經網絡時,采用該方法獲得了所有需要的梯度向量。該方法的不同之處在于,對于模型參數,可以單獨返回給定批次中每個示例的損耗梯度,如下所示:

通過在運行各層時跟蹤一些中間數量,可以使用適合內存的任何批次大小進行訓練,這種方法比其他軟件包中的微批量方法快一個數量級。
目前,這款Opacus高速庫已經在Github開源。所有機器學習從業者和差異隱私科學家都可以下載使用。

Github地址:https://github.com/pytorch/opacus
Facebook表示,他們希望通過開發Opacus之類的PyTorch工具,可以使對此類隱私保護資源的訪問民主化,同時通過使用PyTorch的更快,更靈活的平臺彌合了安全社區和通用機器學習工程師之間的鴻溝。
用戶可以直接從Github安裝最新版本,代碼如下:
git clone https://github.com/pytorch/opacus.git
cd opacus
pip install -e .
另外,需要注意的是,要使用差分隱私訓練模型,需要聲明PrivacyEngine,并將其附加到優化器,再運行,例如:

引用鏈接:雷鋒網雷鋒網雷鋒網
https://medium.com/pytorch/differential-privacy-series-part-1-dp-sgd-algorithm-explained-12512c3959a3
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。