少年帮|Facebook开源差分隐私库Opacus,可保护数据隐私且高效训练Prytorch模型

如何保护数据集隐私 , 是深度学习训练必须要解决的问题之一 。
近日 , Facebook开源了一个名为Opacus的高速库 , 该库可用于训练具有差分隐私的PyTorch模型 。
少年帮|Facebook开源差分隐私库Opacus,可保护数据隐私且高效训练Prytorch模型差分隐私(Differential Privacy, 简称DP)是保护数据集隐私的重要工具 。 在此之前 , 谷歌、微软等也陆续开源了其核心产品使用的差分隐私库 。
不同的是 , 与现有方法相比 , Opacus具有可扩展性 , 支持大多数类型的PyTorch模型 , 并且只需对神经网络进行最少的代码更改 。 同时它允许客户端实时监控任何给定时间花费的隐私预算(Privacy Budget , DP中的核心数学概念) 。
保护隐私的Opacus库苹果在 2016 的开发者大会上首次提出了“差分隐私(DP)”的概念 。 即通过算法来打乱个体用户数据 , 让任何人都不能凭此追踪到具体的用户 , 但又可以允许机构成批分析数据以获得大规模的整体趋势用于机器学习 。
换句话说 , DP有效地限制了某些用于汇总数据集信息的算法 。
【少年帮|Facebook开源差分隐私库Opacus,可保护数据隐私且高效训练Prytorch模型】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优化器上 , 并在训练代码的开头添加以下代码即可:
少年帮|Facebook开源差分隐私库Opacus,可保护数据隐私且高效训练Prytorch模型训练后 , 生成的就是一个标准的PyTorch模型 , 没有部署私有模型的任何额外步骤或障碍:在使用DP对其进行训练之后部署 , 无需更改任何代码 。
另外 , Opacus库还包括了经过预训练和微调的模型 , 用于大型模型的教程 , 以及用于隐私研究实验的基础结构 。
高效训练的核心算法Opacus能够在保护每个训练样本私密性的同时 , 限制对最终模型准确性的影响 。 它通过修改标准的PyTorch优化器来做到这一点 。 具体来说 , 是采用一种差分私有随机梯度下降的算法 。
Facebook在博客中称 , “该算法的核心思想是 , 我们可以通过干预模型来更新权重的参数梯度(而不是直接获取数据)来保护训练数据集的隐私 。 通过在每次迭代中将噪声添加到梯度中 , 可以防止模型记住其训练示例 , 同时仍可进行汇总学习 , (无偏)噪声自然会在训练中看到的许多批次而抵消 。


推荐阅读