Deep Learning with Differential Privacy

摘要:

基于神经网络的机器学习技术在各种领域都取得了显著的成果。通常,模型的训练需要大量的、具有代表性的数据集,这些数据集可能是众包的(就是从各个用户那里搜集的数据,群策群力),并包含敏感信息。模型不应该在这些数据集中公开私有信息。为了实现这一目标,我们开发了新的学习算法技术,并在差异隐私的框架内对隐私成本进行细化分析。我们的实现和实验表明,我们可以在适度的隐私预算下,以软件复杂性、训练效率和模型质量方面可管理的成本训练具有非凸目标的深度神经网络。

1.介绍

神经网络的最新进展在广泛的应用中取得了令人印象深刻的成功,包括图像分类、语言表示、Go的移动选择等。这些进展在一定程度上是由于可用于训练神经网络的规模和具有代表性的数据集。这些数据集通常是众包的,并且可能包含敏感信息。它们的使用需要满足应用程序需求的技术,同时提供有原则和严格的隐私保证。

在本文中,我们将最先进的机器学习方法与先进的隐私保护机制结合起来,在一个适度的(“个位数”)的隐私预算内训练神经网络。我们用非凸目标、几层和数万到数百万个参数来处理模型。(相比之下,之前的工作在参数数量较少的凸模型上获得了强大的结果,或处理复杂的神经网络,但有很大的隐私损失。)为此,我们开发了新的算法技术,在差异隐私的框架内对隐私成本进行重新定义的分析,以及详细的实现策略:

1、我们证明,通过跟踪隐私损失的详细信息(越来越大的矩信息),我们可以获得对总体隐私损失的更严格的估计,无论是渐近上的还是经验上的。

2、通过引入新技术,提高了差异私人训练的计算效率。这些技术包括计算单个训练示例的梯度的有效算法,将任务分割成更小的批次以减少内存占用,并在输入层应用不同的私有主投影。

3、我们建立在机器学习框架TensorFlow上,用于具有不同隐私的训练模型。我们在两个标准的图像分类任务,MNIST和CIFAR-10上评估了我们的方法。我们选择这两个任务是因为它们基于公共数据集,并且在作为机器学习的基准方面有着悠久的记录。我们的经验表明,深度神经网络的隐私保护可以在软件复杂性、训练效率和模型质量方面以适度的成本实现。

机器学习系统通常由有助于保护其训练数据的元素组成。特别是,旨在避免与用于训练的示例进行过拟合的正则化技术,可能会隐藏这些示例的细节。另一方面,解释深度神经网络中的内部表征是出了名的困难,它们的大容量意味着这些表征可能会编码至少一些训练数据的细节。在某些情况下,已确定的对手可能能够提取部分训练数据。例如,弗雷德里克森等人。演示了一种从面部识别系统中恢复图像的模型反演攻击。

虽然模型反演攻击只需要“黑箱”访问训练模型(即通过输入和输出与模型交互),但我们考虑具有额外能力的对手,很像Shokri和什马蒂科夫。(这一段表述了威胁模型)我们的方法提供了防止一个强大的对手,这个对手有着充分知识的训练机制和访问模型的参数。这种保护特别有吸引力,特别是对于手机、平板电脑和其他设备上的机器学习应用。在设备上存储模型可以实现高效、低延迟的推理,并可能有助于隐私,因为推断不需要将用户数据通信到中央服务器;另一方面,我们必须假设模型参数本身可能会暴露在敌对的检查中。

此外,当我们是关于保护训练数据中一条记录的隐私,我们允许对手有可能控制部分甚至全部剩余的训练数据。在实践中,这种可能性不能总是被排除在外,例如,当数据是众包的时侯。

2.背景

在本节中,我们将简要回顾微分隐私的定义,介绍高斯机制和组成定理,并概述深度学习的基本原理。

2.1 差分隐私

差异隐私构成了聚合数据库上算法隐私保证的有力标准。它是根据相邻数据库的特定于应用程序的概念来定义的。例如,在我们的实验中,每个训练数据集都是一组图像标签对;如果这些集合在单个条目中不同,即一个图像标签对在一个组中,而在另一组中没有,那么这两个集合是相邻的。


ε-差异隐私的原始定义不包括附加术语δ。我们使用Dwork等人引入的变体。它允许纯ε微分隐私的概率为δ(优选小于1/|d|)。

差异隐私有几个属性,使其在我们的应用程序中特别有用:可组合性、组隐私和对辅助信息的鲁棒性。可操作性使机制的模块化设计成为可能:如果机制的所有组件都是不同的私有的,那么它们的组成也是如此。如果数据集包含相关的输入,比如由同一个人贡献的输入,那么组隐私意味着隐私保证的缓慢下降。对辅助信息的鲁棒性意味着隐私保证不受对手可用的任何边信息的影响。

用差异私有机制近似确定性实值函数f:D→R的一个常见范式是通过校准到f的灵敏度Sf的附加噪声,它被定义为绝对距离|f(d)−f(d0)|的最大值,其中d和d0是相邻的输入。(对实值函数的限制是为了简化这次审查,但不是必要的。)例如,高斯噪声机制如下

在上式中,N(0,Sf^2·σ^2)为均值为0,标准差为0的正态(高斯)分布Sfσ。一个简单的高斯机制应用,就是当f的敏感度Sf满足差分隐私,其中ε>1并且δ满足下式:

 


请注意,这种对机制的分析可以在事后应用,特别是,有无限多的(ε,δ)对来满足这个条件。

附加机制的重复应用的差异隐私遵循基本组成定理,或从高级组成定理及其改进。在McSherry介绍的隐私会计师中,可以跟踪执行复合机制的过程中累积的隐私损失,并执行适用的隐私政策来执行。

设计实现给定功能的差异私有加性噪声机制的基本蓝图包括以下步骤:通过有界灵敏度函数的连续组成来近似该功能;选择加性噪声的参数;并对产生的机制进行隐私分析。

2.2 深度学习

深度神经网络对于许多机器学习任务都非常有效,它将从输入到输出的参数化函数定义为许多层基本构建块的组成,如仿射变换和简单的非线性函数。后者的常用例子是sigmoids和整正线性单位(relu)。通过改变这些块的参数,我们可以“训练”这样一个参数化的函数,目的是拟合任何给定的有限的输入/输出示例集。

更准确地说,我们定义了一个损失函数L,它表示不匹配训练数据的惩罚。参数θ上的损失L(θ)是训练示例上的损失的平均值{x1,…,xN}。训练包括找到能产生可接受的小损失的θ,希望是最小的损失(尽管在实践中我们很少期望达到一个精确的全局最小值)。

对于复杂的网络,损失函数L通常是非凸的,难以最小化。在实践中,最小化通常是通过小批量批随机梯度下降(SGD)算法来完成的。在该算法中,每一步形成一批随机batch,每个batch包括B个样本数据,计算每个batch的梯度公式如下:

 


作为梯度∇θL(θ)的估计。然后,θ按照梯度方向−gB更新到一个局部最小值。

已经建立了几个系统来支持神经网络的定义,以实现有效的训练,然后执行有效的推理(执行固定参数)。我们的工作基于TensorFlow,这是一个由谷歌发布的开源数据流引擎。TensorFlow允许程序员从基本操作符中定义大型计算图,并在异构分布式系统中分发它们的执行。TensorFlow自动创建梯度的计算图;它也使批处理计算变得容易。

3. 我们的方法

本节描述了我们的神经网络差异私有训练方法的主要组成部分:差异私有随机梯度下降(SGD)算法、矩会计和超参数调优。

3.1 基于差分隐私的SGD

人们可能会试图通过只处理训练过程产生的最终参数来保护训练数据的隐私,将这个过程作为一个黑盒子。不幸的是,一般来说,人们可能无法对这些参数对训练数据的依赖性进行严格的描述;在参数中添加过于保守的噪声,将破坏学习模型的效用。因此,我们更喜欢一种更复杂的方法,其中我们的目标是控制训练过程中训练数据的影响,特别是在SGD计算中。这种方法在以前的工作中已经遵循;我们做了一些修改和扩展,特别是在我们的隐私会计中。

算法1概述了我们通过最小化经验损失函数L(θ)来训练一个参数为θ的模型的基本方法。在SGD的每一步,我们计算一个随机例子子集的梯度∇θL(θ,xi),裁剪每个梯度的l2范数,计算平均值,添加噪声以保护隐私,并采取与这个平均噪声梯度相反方向的一步。最后,除了输出模型外,我们还需要根据隐私会计师维护的信息来计算该机制的隐私损失。接下来,我们将更详细地描述该算法的每个组件和我们的改进。

 


 

(这里算法过程原文没说,以下是自己的理解)

根据上面这个算法,输入数据样本X,损失函数L(θ),学习率n,噪声参数σ,组大小L以及梯度范数边界C。首先随机初始化θ,开始训练,epoch设为T。通过固定的采样概率,这个采样概率就是选择batch的几率,文中用lot表示,我这里用batch问题不大。比如我在1000个数据样本中分了10个batch,那么这个采样概率就是10/1000=1%。这个东西就是选择batch进行训练。然后就是计算梯度没什么好说的,每个样本计算梯度。主要在于梯度裁剪,如果我得到的梯度超过了设定的边界,那就裁剪至C,因为取最大值嘛,两个梯度相除消掉了只剩下C了,如果没超过就除以1保留原来的梯度。接着就是加噪,将均值为0的高斯分布在梯度上加噪,最后取均值。最后进行梯度下降,这里的梯度下降结合学习率,这里的学习率是步长。最后的输出为最优的θ,体现损失函数最小化,同时使用差分计算的方式计算全局的隐私预算。

(回到原文)

梯度裁剪:为了证明算法1的有效性,需要限制每个示例对˜gt的影响。由于梯度的大小没有先验界,我们用l2范数剪辑每个梯度。如果我得到的梯度超过了设定的边界,那就裁剪至C,因为取最大值嘛,两个梯度相除消掉了只剩下C了,如果没超过就除以1保留原来的梯度。我们注意到,由于非隐私原因,这种形式的梯度剪切是深度网络的流行组成部分,尽管在这种设置下,通常在平均后剪辑就足够了。

每层和与训练轮次相关的参数:算法1的伪代码将所有参数分组为损失函数L(·)的单个输入θ。对于多层神经网络,我们分别考虑每一层,这允许为不同的层设置不同的剪切阈值C和噪声尺度σ。此外,剪切和噪声参数可能随着训练步骤t的数量而变化。在第5节中展示的结果中,我们对C和σ使用常数设置。

Lot:与普通的SGD算法一样,算法1通过在一组例子上计算损失的梯度并取平均值来估计L的梯度。这个平均值提供了一个无偏估计量,其方差随着组的大小增加而迅速减小。我们经常称为这样的组为lot,以区别于通常称为批处理的计算分组batch。为了限制内存消耗,我们可以设置批量大小远小于批量大小L,这是算法的一个参数。我们分批执行计算,然后将几批分成lot组以增加噪声。在实践中,为了提高效率,批次和批次的构建是通过随机排列例子,然后将它们划分为适当大小的组来完成的。然而,为了便于分析,我们假设每个批次都是通过独立选择概率为q=L/N的每个示例而形成的,其中N是输入数据集的大小。 正如文献中常见的那样,我们通过将训练算法的运行时间表示为epochs来规范化训练算法的运行时间,其中每个纪元都是处理N个示例所需的(预期)批数。在我们的符号中,每个epoch包含N/L个Lot。

隐私会计:对于不同的差分隐私SGD,一个重要的问题是计算训练的总体隐私成本。差异隐私的可组合性使我们能够实现一个“会计”程序,该程序计算每次访问培训数据时的隐私成本,并随着培训的进行而积累这些成本。培训的每一步通常需要多层梯度,会计积累与所有层次相对应的成本。

矩会计:许多研究已经致力于研究特定噪声分布的隐私损失以及隐私损失的组成。对于我们使用的高斯噪声,高斯机制中的σ被作者设定了一个固定的组成(这一步不知道为什么这样设定),

。然后通过标准参数每个步骤是(ε,δ)相对于批次的差分隐私。由于批次本身是数据库中的随机样本,隐私累加定理意味着每个步骤是(O(qε),qδ)相对于完整数据库的差异私有,其中q=L/N是每个批次的采样比和ε≤1。在文献中,产生最佳的总体界的结果是强组合定理(在其他论文中,不是这篇)。


然而,强组成定理可能是松散的,并且没有考虑到所考虑的特定噪声分布。在我们的工作中,我们发明了一种更强的会计方法,我们称之为矩会计。它允许我们证明算法1是(O(qε√T),δ)对于适当选择的噪声尺度和裁剪阈值的设置是符合差分隐私的。与强组成定理得到的结果相比,我们的界控制得更加精密,体现在两方面:它在ε部分保存了一个       √log(1/δ)因子,在δ部分保存了一个Tq因子。由于我们期望δ很小,并且T>>1/q(即每个例子都被多次检查),所以我们的边界的下降是相当重要的。这一结果是我们的主要贡献之一。


首先看定理本身的描述,定义了两个常数,以及采样概率和训练轮次就不用多说了,前面提过了。对于任意的ε都满足ε<c1q^2T,至于为什么这么设定我暂时也不清楚,往后走。接着就是约束噪声参数,满足上面那个公式,至于这个公式后面有推导。文中说,如果使用其他的论文中提到的强组合原理,就是选择一个噪声参数满足


但是这篇文章不是这样做的,结合定义可见,作者把其中一个项去除了,从而降低了噪声参数。至于为什么省去后面有推导,这样省去的结果就是最后的隐私预算少了,但是加噪水平不变。

(后续是关于MA的细节)