《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 既保護隱私又快速訓練,Facebook開源Opacus庫,利用差分隱私訓練PyTorch模型

既保護隱私又快速訓練,Facebook開源Opacus庫,利用差分隱私訓練PyTorch模型

2020-09-01
來源:機器之心

  隱私保護機器學習領域的重要倫理問題之一,而差分隱私(DP)是行之有效的隱私保護手段。那么,如何方便地使用差分隱私來訓練機器學習模型呢?近日,Facebook 開源了 Opacus 庫,支持以這種方式訓練 PyTorch 模型。

  近日,Facebook 開源了一個新型庫 Opacus,它支持使用差分隱私來訓練 PyTorch 模型,擴展性優于目前的 SOTA 方法。同時,Opacus 庫支持以最少代碼更改來訓練模型,且不會影響訓練性能,并允許在線跟蹤任意給定時刻的隱私預算。

  Opacus 庫開源地址:https://github.com/pytorch/opacus

  Opacus 庫的目標受眾主要為以下兩類人群:

  機器學習從業者:可以使用該庫輕松了解如何利用差分隱私訓練模型,該庫支持以最少代碼更改來訓練模型;

  差分隱私科學家:Opacus 庫易于實驗和修復,這允許他們專注于更重要的事。

  差分隱私是一個具備數學嚴謹性的框架,可用于量化敏感數據的匿名化。Facebook 在相關博客中表示,希望 Opacus 庫能為研究人員和工程師提供一條更簡單的途徑,以便在 ML 中使用差分隱私,并加快該領域的 DP 研究。

  Opacus 庫提供了什么?

  通過這個開源的高速庫 Opacus,你可以得到:

  速度:利用 PyTorch 中的 Autograd hook,Opacus 能夠批量化計算每個樣本的梯度。與依賴 microbatching 的現有 DP 庫相比,Opacus 實現了一個數量級的加速。

  安全性:Opacus 對其安全關鍵代碼使用密碼學安全偽隨機數生成器 CSPRNG,在 GPU 上對整批參數進行高速處理。

  靈活性:基于 PyTorch,工程師和研究人員可以通過將 Opacus 代碼與 PyTorch 代碼和純 Python 代碼進行融合和匹配,快速為其 idea 構建原型。

  生產效率:Opacus 庫附帶教程、在訓練開始前提示不兼容層的輔助函數,以及自動重構機制。

  交互性:Opacus 可以追蹤用戶在任意給定時間所花費的隱私預算(DP 的核心數學概念),從而實現早停和實時監控。

  Opacus 通過引入 PrivacyEngine abstraction 定義了一個輕量級的 API,它既可以追蹤隱私預算,也能夠處理模型梯度。該 API 無需直接調用,只需將其連接至標準 PyTorch 優化器。該 API 在后臺運行,這使得利用 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 模型,并且它沒有部署私有模型的額外步驟或障礙:如果今天就想部署模型,你可以在使用 DP 訓練模型后進行部署,且無需更改一行代碼。

  Opacus 庫還包括預訓練和微調模型、針對大型模型的教程,以及為隱私研究實驗而設計的基礎架構。

  如何使用 Opacus 實現高速隱私訓練?

  Opacus 旨在保留每個訓練樣本的隱私,同時盡量不影響最終模型的準確率。Opacus 通過修改標準 PyTorch 優化器來實現這一點,以便在訓練過程中實現(和度量)差分隱私。

  具體來說,Opacus 的重點是差分隱私隨機梯度下降(DP-SGD)。該算法的核心思想是:通過干預模型用來更新權重的參數梯度來保護訓練集的隱私,而不是直接獲取數據。通過在每次迭代中向梯度添加噪聲,該庫可以防止模型記住訓練樣本,同時還可以實現在 aggregate 中的學習。在訓練過程的多個批次中,(無偏)噪聲自然會被抵消。

  但是,添加噪聲需要一種微妙的平衡:噪聲過多會破壞信號,過少則無法保證隱私。為了確定合適的規模,我們需要查看梯度范數。限制每個樣本對梯度的影響非常重要,因為異常值的梯度大于大部分樣本。但是異常值的隱私也需要得到保護,因為它們極有可能被模型記住。

  因此,開發者計算 minibatch 中每個樣本的梯度。開發者分別對每個梯度進行梯度裁剪,將其累積到一個梯度張量,然后再將噪聲添加其中。

  基于每個樣本的計算是構建 Opacus 的最大障礙之一。PyTorch 的典型操作是利用 Autograd 計算整個批次的梯度張量,因為這對其他機器學習用例都有意義,并且可以優化性能。與之相比,基于每個樣本的計算顯然更具挑戰性。

  為了克服這一困難,開發者利用 Ian Goodfellow 2015 年提出的高效技術(參見論文《EFFICIENT PER-EXAMPLE GRADIENT COMPUTATIONS》),獲取訓練標準神經網絡所需的全部梯度向量。

  至于模型參數,則單獨返回給定批次中每個樣本的損失梯度,整個過程如下所示:

  Opacus 工作流程圖,其中計算了每個樣本的梯度。

  通過在運行各層時追蹤一些中間量,Opacus 庫支持使用適合內存的任何批量大小進行訓練。這使得該方法比其他替代性 micro-batch 方法快了一個數量級。

  此外,Opacus 庫的安裝和使用過程也比較簡單,詳情參見 GitHub 項目。

  

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 欧美日韩免费播放一区二区 | 国产日韩欧美精品一区二区三区 | 国产麻豆剧看黄在线观看 | 国产满18av精品免费观看视频 | 视频一区二区在线观看 | 1024日本| 欧美激情综合亚洲一二区 | 2020国产精品亚洲综合网 | 深夜国产成人福利在线观看女同 | 国产日韩欧美一区二区三区视频 | 日韩亚洲综合精品国产 | 成人毛片100部免费看 | 99视频在线观看免费视频 | a亚洲欧美中文日韩在线v日本 | 性欧美videos另类视频 | 国产成人精品福利网站人 | 国产精品单位女同事在线 | 欧美在线视频一区二区 | 狠狠亚洲丁香综合久久 | 久草视频中文 | 国产高清在线精品二区一 | 黄色免费在线观看网址 | 国产成人v片视频在线观看 国产成人v视频在线观看 | 国产三级视频网站 | 国产手机在线αⅴ片无码观看 | 97毛片| 日韩美女免费线视频 | 激情影院成人区免费观看视频 | 日韩欧美一区二区三区久久 | 日本不卡三级 | 日本xxxxxxxxx18| 一级黄色片网 | 一级特黄录像免费播放中文版 | 欧美国产日本高清不卡免费 | 欧美人成一本免费观看视频 | 在线18| 国产尤物视频在线 | 天天摸天天添 | 国产在线一区二区三区在线 | 亚洲va乱码一区二区三区 | 亚洲手机在线 |