其他
20行代码发一篇NeurIPS:梯度共享已经不安全了
【导读】12 月 8 日-14 日,NeurIPS 2019 在加拿大温哥华举行,和往常一样,今年大会吸引了数万名专家参会,并展示了计算机领域的最新进展。其中来自 MIT 的一篇论文引起我们的关注,作者声称这篇论文可能是本届代码量最少的论文之一,整篇论文仅涉及 20 行代码,用这 20 行代码,就可以通过共享梯度轻松“偷取”隐私训练数据。这种技术如果真的这么神奇,大家关心的隐私数据安全问题岂不是更加雪上加霜?
通过共享梯度“偷”隐私训练数据
20行代码即可实现
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主页小试牛刀
防御方法
Deep leakage 给多节点机器学习系统带来了挑战。如我们的工作所示,梯度共享方案并不总是可靠的。为了防止 deep leakage,我们提出了三种防御策略:梯度扰动、半精度和梯度压缩。
梯度扰动
梯度压缩和稀疏化
保护数据隐私的方法失效了?
◆
精彩公开课
◆