20行程式碼發一篇NeurIPS:梯度共享已經不安全了
- 2019 年 12 月 23 日
- 筆記
出品 | AI科技大本營(ID:rgznai100)
【導讀】12 月 8 日-14 日,NeurIPS 2019 在加拿大溫哥華舉行,和往常一樣,今年大會吸引了數萬名專家參會,並展示了電腦領域的最新進展。其中來自 MIT 的一篇論文引起我們的關注,作者聲稱這篇論文可能是本屆程式碼量最少的論文之一,整篇論文僅涉及 20 行程式碼,用這 20 行程式碼,就可以通過共享梯度輕鬆「偷取」隱私訓練數據。這種技術如果真的這麼神奇,大家關心的隱私數據安全問題豈不是更加雪上加霜?
論文:https://arxiv.org/abs/1906.08935
作者:Ligeng Zhu, Zhijian Liu, Song Han
程式碼:https://gist.github.com/Lyken17/91b81526a8245a028d4f85ccc9191884
網站:[MIT HanLab] Deep Leakage from Gradients
通過共享梯度「偷」隱私訓練數據
在作者的背景介紹中提到,交換梯度是現代多節點機器學習系統(例如,分散式訓練、協作學習、聯邦學習)中廣泛使用的方法。尤其是在協作學習和聯邦學習中,每個用戶的數據始終儲存在本地,僅有模型的梯度在不同設備之前傳播。這類演算法不需要將數據集中到一處,可以在保護用戶隱私的同時,也讓模型從海量數據中收益,例如多家醫院可以共同訓練一個醫療模型而無需共享患者的醫療數據。所以,長期以來,人們認為梯度是可以安全共享的,即訓練數據不會因梯度交換而泄漏。
但是,這篇論文證明了其實可以通過從公共共享的梯度中輕鬆獲取隱私訓練數據。他們將此泄漏方法命名為 Deep Leakage from Gradient,並通過經驗驗證了其在電腦視覺和自然語言處理任務中的有效性。
實驗結果表明,這個團隊的攻擊比以前的方法要強大得多:獲取的影像精準度可達到像素級,文本,獲取的文本也是呈對匹配的。
但是,該團隊也表明,這項研究並無惡意,知識想要提高人們對數據安全隱私的重視。最後,他們還提出了防止這種深度泄漏的可能策略,其中最有效的防禦方法就是進行梯度修剪。這一點後文再提。

如圖所示,圖中紅色小惡魔偷數據的方法也很簡單:首先隨機生成一對「虛擬的」輸入和標籤(dummy data and label),然後執行通常的前向傳播(Forward)和反向傳播(Backward)。從虛擬數據導出虛擬梯度之後,該團隊沒有像傳統優化那樣更新模型權重,而是更新虛擬輸入和標籤,以最大程度地減小虛擬梯度和真實梯度之間的差異。下圖中的 ||∇w』 – ∇w|| 對於虛擬數據和標籤可導,因此可以使用標準梯度下降方法來優化。

Deep Leakage 演算法,黑框標註了會更新的部分
20行程式碼即可實現
由於該演算法需要算梯度的梯度,所以實現時需要找一個二階導的框架。目前 TensorFlow 和 PyTorch 都支援高階導(high order gradients),該團隊選擇了PyTorch 做為實現平台。
核心演算法是匹配虛擬數據和真實數據之間的梯度,整個實現非常簡單,核心演算法只需要 20 行即可實現。團隊也在 GitHub 上開源了程式碼:
def deep_leakage_from_gradients(model, origin_grad): dummy_data = torch.randn(origin_data.size()) dummy_label = torch.randn(dummy_label.size()) optimizer = torch.optim.LBFGS([dummy_data, dummy_label] ) for iters in range(300): def closure(): optimizer.zero_grad() dummy_pred = model(dummy_data) dummy_loss = criterion(dummy_pred, dummy_label) dummy_grad = grad(dummy_loss, model.parameters(), create_graph=True) grad_diff = sum(((dummy_grad - origin_grad) ** 2).sum() for dummy_g, origin_g in zip(dummy_grad, origin_grad)) grad_diff.backward() return grad_diff optimizer.step(closure) return dummy_data, dummy_labe
扒NeurIPS主頁小試牛刀
效果看來也是不錯。針對 Language Model(backbone 為 BERT),該團隊從 NeurIPS 主頁上隨機扒了三句話開始攻擊。可以到看到 iter = 0 時,產生的結果是 totally meaningless 的,但在 iters = 10 / 20 時,一部分片語就開始泄漏出來。當 iters = 30 時,雖然有一些由於 tokening 造成的歧義,但原句已基本泄漏了。

那麼針對影像效果如何呢?作者在該論文網站中展示了用 deep leakage 恢復影像的全過程。下圖中,左為隨機產生雜訊,右為原圖,中間是 leaking 的過程。整個 leaking 過程不需要任何額外關於 dataset 的 prior 而且最終結果是 pixel-wise accurate。所以作者把這認為這是一個很 「deep」 的 leakage,這也是標題 Deep Leakage from Gradients 的來源。

可以看到,恢復影像的精準度的確讓人吃驚!僅用 20 行程式碼,數據真的被無聲無息地「偷走」。(以上技術原理性解釋引用自知乎用戶Lyken https://www.zhihu.com/people/shi-hou-11/activities)
防禦方法
為了對付 deep leakage,該論文中也提出了相應的防禦方法:
Deep leakage 給多節點機器學習系統帶來了挑戰。如我們的工作所示,梯度共享方案並不總是可靠的。為了防止 deep leakage,我們提出了三種防禦策略:梯度擾動、半精度和梯度壓縮。
對於梯度擾動,我們發現高斯雜訊和拉普拉斯雜訊的標度都高於

會有很好的防禦作用。雖然半精度防禦失敗,但梯度壓縮防禦成功攻擊,修剪梯度超過 20%。
梯度擾動
防禦DLG最直接的方法是在共享之前在梯度上添加雜訊。測試表明,高斯和拉普拉斯雜訊(廣泛用於差異隱私研究)分布,其分布範圍為

至

,中心為0。從圖7a和7b中,我們觀察到防禦效果主要取決於分布方差的大小,與雜訊類型的關係較小。當方差在

範圍內時,雜訊梯度不會阻止泄漏。對於方差為

的雜訊,儘管有偽影,但仍然會發生泄漏。只有當方差大於

並且開始有雜訊影響精度時,DLG才會發生。我們還注意到,拉普拉斯運算元在

時防禦得更好。
梯度上的另一個常見擾動是半精度,其最初的設計旨在節省記憶體空間,並廣泛用於減少通訊頻寬。我們測試了兩種流行的半精度實現IEEE float16(單精度浮點格式)和bfloat16(Brain Floating Point,32位float的截斷版本)。不幸的是,如圖7c所示,兩個半精度都無法保護訓練數據。

梯度壓縮和稀疏化
我們還嘗試通過梯度壓縮進行防禦。梯度壓縮會將較小的梯度修剪為零,因此,由於優化目標也會被修剪,DLG很難匹配梯度。我們評估了不同級別的稀疏性(從1%到70%)如何防禦泄漏。當稀疏度為1%到10%時,它對DLG幾乎沒有影響。當修剪比例增加到20%時,如圖7d所示,恢復影像上會出現明顯的偽像像素。我們注意到,稀疏度的最大容忍度約為20%。當修剪率大於20%時,無法再從視覺上識別恢復的影像,因此,梯度壓縮成功地防止了泄漏。
先前的工作顯示,梯度可以壓縮300倍以上而不會損失精度。在本案例中,稀疏度高於99%,並且已經超過DLG的最大容限(約20%)。這表明壓縮梯度是避免泄漏的一種很好的實用方法。
保護數據隱私的方法失效了?
現在,中國外都非常重視數據隱私保護與監管的問題,不僅是用戶自己開始重視數據隱私,企業更是需要保護好自己的數據,凸顯自家優勢。而既能打破數據=孤島又能保護數據隱私的方法也成為大家急迫需要的,隨後同態加密、協同學習、聯邦學習等模型不斷被提出與應用,尤其是聯邦學習,在這兩年備受金融、醫療等領域的關注。
此前,AI科技大本營(ID:rgznai100)也為大家介紹了很多企業聯邦學習的研究與應用成果,如:《讓數百萬台手機訓練同一個模型?Google把這套框架開源了》、《重磅!全球首個可視化聯邦學習產品與聯邦pipeline生產服務上線》、《微眾銀行AI團隊開源聯邦學習框架,並發布聯邦學習白皮書1.0》、《李開復口中的「聯邦學習」 到底是什麼?| 技術頭條》。
在聯邦學習中,不共享數據,協同建模中有一個經常被大家利用的方法就是上面提到的梯度共享,但是到這裡我們不禁思考:成功攻擊的方法已經出現,這些試圖保護數據隱私的學習模型被攻破,未來還會有效嗎?
回顧幾年前 GAN 火爆後,對抗攻擊方法也應運而生,此前 AI科技大本營(ID:rgznai100)為大家介紹過多種模型與網路的對抗攻擊方法,雖然諸如弱攻擊,基於類別標籤的生成模型的攻擊方法不斷取得成功,但是 GAN 依然流行至今,在眾多領域裡發揮著它獨特的魅力。有攻擊就有防禦,大家基於攻擊結果也在提出防禦方法,讓模型更堅固。在這篇論文中,作者也提出了梯度擾動、半精度和梯度壓縮三種防禦策略,為大家日後保護數據隱私提供更多思路。
NIPS 2019 已經接近尾聲,在這次大會上還有很多精彩的論文,歡迎推薦你的或你認為優秀的Paper。
(*本文為AI科技大本營整理文章,轉載請微信聯繫 1092722531)