摘要: 隐私数据与机器学习看似矛盾,其实不然。如何有效保护机器学习训练中的隐私数据?谷歌专家给出了答案——PATE框架,就算你不太懂隐私保护的知识,也可以通过PATE框架来保护机器学习里的训练数据。

最近关于互联网隐私引发大众的关注于讨论,前有Facebook“数据门”,小扎不得不换下常穿的灰色短袖和牛仔装,换上深蓝色西装参加国会听证;后有百度总裁李彦宏称中国用户愿用隐私方便和效率引发网友强烈反感,网友评论说,牺牲隐私不一定换来效率,还可能换来死亡,比如搜索到莆田医院,还可能换来经济损失,比如大数据杀熟等等;近来有知乎强制隐私搜集条款,引发部分用户卸载APP,国内很多APP若不同意给予相关权限,则无法正常使用,这真是陷入两难境地。为什么现在很多应用会收集数据呢,《未来简史》这本书中给了答案——未来的世界数据为王,人类可能只是放大版的蚂蚁,用于产生数据。有了数据后,加上合适的算法可以完成很多事情,这些技术均与机器学习、深度学习以及数据科学相关。人们担心自己的数据被收集后会被泄露或者是被不正当使用,因此,如何将隐私数据很好地保护起来是公司需要考虑的主要问题之一。本文将分析隐私与机器学习二者的关系,并设计了一种PATE框架,能够很好地避免被动地泄露用户隐私数据,下面带大家一起看看吧。

在许多机器学习应用中,比如用于医学诊断的机器学习,希望有一种算法在不存储用户敏感信息(比如个别患者的特定病史)的情况下,就可以完成相应的任务。差分隐私(Differential privacy)是一种被广泛认可的隐私保护模型,它通过对数据添加干扰噪声的方式保护锁发布数据中潜在用户的隐私信息,从而达到即便攻击者已经掌握了除某一条信息以外的其它信息,仍然无法推测出这条信息。利用差分隐私,可以设计出合适的机器学习算法来负责任地在隐私数据上训练模型。小组(Martín Abadi、 Úlfar Erlingsson等人)一系列的工作都是围绕差分隐私如何使得机器学习研究人员更容易地为隐私保护做出贡献,本文将阐述如如何让隐私和机器学习之间进行愉快的协同作用。
小组最新的工作是PATE算法(Private Aggregation of Teacher Ensembles,PATE),发表在2018年ICLR上。其中一个重要的贡献是,知道如何训练有监督机器学习模型的研究人员都将有助于研究用于机器学习的差分隐私。PATE框架通过仔细协调几个不同机器学习模型的活动来实现隐私学习,只要遵循PATE框架指定程序,生成的模型就会有隐私保护。

为什么需要隐私机器学习算法?

机器学习算法的工作方式通过大量数据并更新其参数来学习数据中的关系。理想情况下,希望这些机器学习模型的学习到一般模型(比如“吸烟患者更容易患心脏病”),而不是训练特定实例(比如“Jane Smith患有心脏病”)。不幸的是,机器学习算法没有学会默认地忽视这些细节,如果想用机器学习来解决某个重要的任务,比如癌症诊断模型,当发布机器学习模型时(比如开源癌症诊断模型),可能无意中透露训练集的相关信息,恶意攻击者可能从发布的模型获得关于Jane Smith的私密信息,这就是差分隐私应用的地方。

如何定义和保护隐私?

科学家在分析数据时提出了很多方法来提供隐私保护,比较流行的做法是在分析数据之前,删除私人细节或随机值替代等。一般将电话号码和邮编等细节匿名处理,然而匿名数据并不总是足以满足要求,当攻击者获得关于数据集中表示个体的辅助信息时,这种匿名操作提供的隐私性就会大大降低。因此,定义和保护隐私是困难的,很难估计出攻击者能够获得的信息范围。
差分隐私是用于隐私保护的模型,其基本思想是随机化部分机制的行为以提供隐私,将随机性引入到学习算法中的直觉是很难从训练好的模型中根据训练数据辨别出隐私行为。
本文使用的差分隐私版本是要求训练集改变一个例子时学习到的任何特定参数的概率大致相同。这样做的原因是,如果单个病人(Jane Smith)的数据不影响模型学习的结果,那么该病人的数据就不会被记录,其隐私受到保护。本文将这种概率称为隐私预算(privacy budget),较小的隐私预算对应更强的隐私保护。

clipboard.png

如上图所示,当攻击者不能由基于三个用户数据训练的算法从两个用户的数据中区分随机算法产生的答案时,则实现了差分隐私。

PATE背后的直觉是什么?

PATE方法为机器学习提供查分隐私是基于一个简单的直觉——如果两个不同的分类器分别在两个没有共同的训练实例数据集上训练,并对一个新的输入实有相同输出时,那么做出的决定没有透露任何单个训练实例的信息。由于每个模型所预测的类别可能会泄露其训练数据中包含的一些私人信息,所以不能单独发布每个模型的类别输出。比如,假设Jane Smith的数据只对两个模型中的一个模型的训练数据作出贡献,且该模型预测与Jane Smith记录数据非常相似的患者为患癌,而另外一个模型预测结果则相反,这种情况则可以透露出Jane Smith的私人信息。这个例子也说明了为什么对算法添加随机性是确保它提供任何有意义的隐私保护的必要条件。
PATE如何工作?
在PATE中,首先在数据子集中分离出私有数据集,如下图所示。如果Jane Smith记录在私有数据集中,那么它只在一个分区中存在。在每个分区上训练机器学习模型,将其称为教师模型(teacher model)。教师模型的训练方式是没有约束的,这也是PATE的主要优点之一。所有的教师解决相同的机器学习任务,但它们都是独立训练的。即,只有一位教师分析了Jane Smith记录的数据。

clipboard.png

如何使用这一组独立训练的教师模型来保证隐私呢?在PATE中,聚合所有教师预测并形成共识时加入噪声。统计每个类别投票的教师数量,然后添加拉普拉斯或高斯分布的随机噪声来扰乱统计数据。当两个输出类别的票数相同时,随机选取其中一个。另外,如果大多数教师的输出类别指向同一个类别,加入噪声并不会改变该类别获得最多选票。因此,引入拉普拉斯等噪声,把票数的统计情况打乱,从而保护隐私

clipboard.png

以分两类的医学诊断任务为例说明聚合过程。如果Jane Smith得了癌症,下面分析聚合机制的输出结果。下图中的红色模型是唯一一个在Jane Smith数据上训练的教师模型,因此能够将类似于Jane的记录数据预测为癌症患者。从图中可以看到,有两位教师投票是“癌症”,剩余的两位教师投票是“健康”。在投票计数中添加随机噪声阻止聚合结果反映任何个别教师的投票以保护隐私。

clipboard.png

该框架存在两个限制:首先,由聚合机制做出的每个预测增加了总的隐私预算;其次,不能开源发布教师模型的集合,否则,攻击者可以检查公布的模型参数,以了解到训练使用的私人数据。因此,创建学生模型(student model)。
学生模型通过将教师集合获得的知识以隐私保护的方式进行训练。学生模型从一组未标记的公共数据中选择输入数据,并将这些输入提交给教师模型以获得标签,之后学生模型使用标记过的数据来训练模型。

clipboard.png

PATE使得隐私与学习协同作用

隐私保护和由聚合机制预测标签的正确性都源于教师之间达成的共识。当大多数教师投票某一类别时,增加噪声并不会改变投票最多的类别结果,这表明聚合机制有非常强的隐私保证。
差分隐私能够很好地与机器学习的任务相一致,比如在学习过程中,记住像Jane Smith病例这样的特殊训练实例是侵犯隐私的行为,也是一种过拟合现象,降低了模型泛化能力。
这一过程促使我们聚合机制进行改进,使其具有选择性:教师只对学生提出的部分问题作出回应。当教师提问时,首先检查教师之间的共识度是否足够高,若投票数大于设定的阈值,则接受学生的询问,否则拒绝。阈值的设定是随机的,以便在选择过程中提供隐私性。下图表明了该过程:

clipboard.png

在实验中,隐私预算主要花费在两个方面:选择和回答查询。然而教师之间具有高度一致性,因此选择回答查询的预算十分小。下图展示了不同查询问题函数时性能的提升情况,分别为原始机制(Simple GNMax)、优化后机制(Confident GNMax),当使用数据依赖(data-dep)分析时,使用时刻会计(moments accountant)和RDP(R'enyi Differential Privacy)。

机器学习研究者如何使用PATE改进模型?

主要影响方法提供的隐私保护的强度有两个:

1.教师之间的共识:共识越强烈,输出相应标签所花费的隐私预算也越少。
2.学生询问的数量:学生询问标签时,教师产生标签花费的预算会被添加到总的隐私成本中,尽可能少地对教师进行训练,增强提供的隐私保护。
加强教师共识,需要在小量数据集上训练一大批教师模型,提高这些模型的准确性和泛化能力将有助于提升共识。
PATE框架已经开源,并且可在TensorFlow模型库中调用,使用以下代码克隆相关程序并设置变量:

cd
git clone https://github.com/tensorflow/models
cd models
export PYTHONPATH=$(pwd):$PYTHONPATH
cd research/differential_privacy/multiple_teachers

第一步是训练教师模型,以下演示的是在MNIST手写体数据集上训练250位教师模型:

python train_teachers.py --nb_teachers=250 --teacher_id=0 --dataset=mnist
python train_teachers.py --nb_teachers=250 --teacher_id=1 --dataset=mnist
...
python train_teachers.py --nb_teachers=250 --teacher_id=248 --dataset=mnist
python train_teachers.py --nb_teachers=250 --teacher_id=249 --dataset=mnist

训练好后,加载这些教师模型,并应用聚合机制来监督学生模型的训练:

python train_student.py --nb_teachers=250 --dataset=mnist --stdnt_share=1000 --lap_scale=20 --save_labels=True

可以看到,在聚合机制中引入了拉普拉斯尺度1/20的噪声,训练好后保存在文件/tmp/mnist_250_student_clean_votes_lap_20.npy中。
运行分析脚本来了解学生模型保护差异隐私的界限值,并将noise_eps设置为 2/lap_scale:

python analysis.py --counts_file=/tmp/mnist_250_student_clean_votes_lap_20.npy --max_examples=1000 --delta=1e-5 --noise_eps=0.1 --input_is_counts

以上设置再现了PATE框架,感兴趣的读者可以在Github查阅全部代码。
详情请阅读原文


阿里云云栖号
27.8k 声望35.7k 粉丝

阿里云官网内容平台