差分隐私实战-以保护新冠数据隐私为例
差分隐私实战-以保护新冠数据隐私为例
差分隐私实战-以保护新冠数据隐私为例
前⾔
最美女教师技术的发展是为⼈类创造更美好的世界。
随着AI技术的进步,攻击AI的技术也越来越多,包括对抗样本、后门攻击等,这些是针对模型安全⽽⾔的,在数据层⾯,攻击者甚⾄可以通过攻击窃取训练集中的个⼈隐私数据,为此,安全研究⼈员提出将差分隐私应⽤于AI,以保护AI 的训练集中样本的隐私;在另⼀⽅⾯,借助差分隐私技术也可以促进各⽅的交流,避免数据孤岛。在本⽂中,我们将以设想的新冠疫情下医院之间互助的场景为例,通过实战介绍PATE技术在利⽤AI赋能医疗⾏业的同时保护患者个⼈隐私。
场景
由于新冠疫情的流⾏,由⼤量的病⼈拍摄的CT等待被医⽣分析、诊断,我们尝试在⾃⼰的医院⾥创建⼀个⼆分类的图像分类器,可以根据CT图像判断病⼈的是否得了新冠(阳性或阴性)。但是我们的CT图像是没有标记的,这意味着不能做监督学习。⽽有5家医院有有标记的数据(医⽣已经看过CT并给出结论了),并且愿意帮助我们这家医院,可是如果直接把这些数据分享给我们,会侵犯病⼈的隐私,同时可能违反⼀些数据保护相关的法律法规。此时我们的⽬标是在为我们医院构建深度学习模型的同事,保护这5家医院的隐私,那么具体该怎么做呢?
背景知识
我们⽤到称为差分隐私的⽅法。什么是差分隐私呢?
差分隐私确保统计分析不会损害隐私。它确保个⼈的数据对整个模型输出的影响是有限的。换句话说,不论是否包括数据集中特定个体的数据,算法的输出⼏乎是相同的。
如上图所⽰,John 的信息出现在第⼀个数据集中,不在第⼆个数据集中,但是模型输出是相同的,所以想要获得 John 的数据的对⼿不能确定数据集中是否存在 John,更不⽤说数据的内容了。因此,John的隐私得到了保障。
差分隐私通常通过在模型或统计查询的输⼊层(本地差分隐私)或输出层(全局差分隐私)添加统计噪声来⼯作。增加的噪声保证了个⼈对决策结果的贡献被隐藏起来,但在不牺牲个⼈隐私的情况下获得了对整体的深⼊了解。
噪声的⼤⼩取决于⼀个称为privact budget(隐私预算)的参数,这个参数通常⽤%u3B5表⽰。%u3B5的值越⼩(即添加的噪声越多) ,它提供的隐私就越⾼,反之亦然。如下图所⽰,我们可以看到,随着越来越多的噪声被添加到脸部图像,它得到的匿名信息越多,但它变得越来越不可⽤。因此,选择正确的%u3B5值⾮常重要,需要在可⽤性与隐私之间做好权衡。
在本⽂中我们使⽤的隐私⽅法叫做PATE(Private Aggregation of Teacher Ensembles)。
PATE的⼯作流程如下:
⾸先在不相交的训练集上分别训练得到⼏个模型,称为教师模型。然后将⼀个输⼊交给这些教师模型预测,教师模型预测得到各⾃的类标签,最终以所以教师模型输出的总和作为最终的预测类。不过这⼀步会分为两种情况:1.如果所有或者⼤多数教师模型的预测都是相同的,那么最终应该输出什么类就很容易知道了。这意味着不会泄露任何单个训练样本的私有信息,因为如果从某个数据集中删除任何训练样本,不会影响模型最后的输出。在这种情况下,privacy budget 很低,算法满⾜差分隐私;2.如果各个教师模型给出的预测不⼀致,则privacy budget很⾼,这会让最终应该给出什么预测变得不那么直接,并最终导致隐私泄露。为了解决这个问题,我们可以使⽤Report Noisy Max(RNM算法),它会在每个模型的输出中添加随机噪声。通过这种⽅法可以提供⼀种强⼒的隐私保护。这种情况下,算法满⾜了完全意义下的差分隐私。
但是PATE不限于此,它还额外增加了隐私。可能有些⼈会觉得将教师模型聚合在⼀起⽤于推理就可以了,但是这是不⾏的,原因有两点:
1.每次我们做出预测,privacy budget就会增加,所以迟早都会达到⼀个点,那时候隐私是⼀定会泄露的
2.通过多次查询,攻击者可以获取教师模型的训练数据,这时隐私也完全泄漏了
所以我们不能简单的聚合,⽽需要创建⼀个学⽣模型。学⽣模型使⽤的训练集是没有标签的(如场景
部分中提到的我们的医院),我们把训练集中的数据交给教师模型来预测,通过教师模型打标签,⼀旦打上标签,教师模型就可以被丢弃了。此时学⽣模型已经可以训练了,训练完毕后它实际上从教师模型中学习了有价值的信息。最重要的是,privacy budget不会随着学⽣模型每次查询⽽增加,⽽且在最坏的情况下,攻击者只能得到教师模型给出的带噪声的标签。
场景应⽤
回到我们的场景中来,我们希望为⾃⼰的医院训练⼀个分类器,⽤于判断病⼈是否患了新冠。我们只有⼀些未标记的CT图像,现在需要其他5家医院的数据来标记你的数据集,但是出于隐私原因,我们不能直接访问那5家医院的数据。在聊了上⼀节的知识后,我们决定按照如下步骤进⾏处理:
1.让这5家医院各⾃在⾃⼰的数据集上训练模型,完成这⼀步后,得到了5个教师模型
2.使⽤这5个教师模型,为我们医院的每张CT图像⽣成5个标签
3.为了保护教师训练集的隐私,可以对⽣成的标签应⽤RNM算法。对于每张CT图像,我们获得⽣成的5个标签中最频繁的标签,然后添加噪声实现差分隐私
4.使⽤带噪声的标签训练学⽣模型(我们医院⾃⼰的模型),将其部署在⾃⼰的医院中⽤于诊断。
数据集
在Images_Processed⽂件夹下有两个⽂件夹,分别是COVID和Non-COVID,对应存放的是确诊有新冠的和没有新冠的⽚⼦。在Data_Split⽂件夹下是图像的标签。为了后续编程⽅便,可以将Image_Processe和Data_Split分别改为Image,labels
参议院和众议院的区别创建数据集
在labels⽂件夹下同样可以看到COVID和Non-COVID,每个⼦⽂件下都有test,train,val,分别是测试集、训练集、验证集。
现在我们要模拟的场景是教师模型有私有数据(打上标签的),学⽣只有公开的没有标签的数据,所以我们可以将这⾥的训练集作为教师模型的新联数据集,将测试集作为学⽣模型的训练数据集,然后使⽤验证集来分别测试学⽣模型和正常模型(不通过差分隐私训练得到的模型)的性能。
⾸先创建⼀个⾃定义的dataset loader,创建数据转换,并最终加载数据
在成功加载数据后,可以可视化部分样本
我们现在可以继续在5家医院之间划分训练集。5家医院,对应着5个教师模型,这⾥需要注意,数据集必须是不相交的,也就是说,任何2个数据集都不应该有重叠的训练样本。前⾯已经说过,差分隐私中,如果个⼈的数据被从数据集中删除,数据集的输出仍然是相同的,以为个⼈对数据集没有贡献。
如果有某⼀个⼈的副本,即使删除其中的⼀个副本,个⼈的数据仍然有助于输出,这样就⽆法保护个⼈隐私。
所以在将训练集划为5个⼦集时,我们必须⾮常谨慎。
下⾯的代码就是在5个教师模型或者说5个医院之间划分我们的训练集,并为每⼀个教师模型创建训练集dataloader和验证集dataloader。
现在对于教师模型来说,有5个trainloader,5个validloader;接着我们为学⽣模型(我们⾃⼰的医院)创建trainloader,validloader
训练教师模型
复合木地板保养
⾸先训练教师模型,5家医院会在不相交的数据集中训练得到5个不同的模型
⾸先定义⼀个简单的CNN模型
然后如下定义我们的训练代码
定义超参数,我们使⽤交叉熵损失CrossEntropyLoss和Adam优化器。
每个教师模型训练50个epoch
然后开始训练教师模型
获取学⽣标签
在训练完成之后,我们得到了5个教师模型,使⽤这5个模型为学⽣模型⽣成标签。这5个模型中的每个模型都会为我们(学⽣)数据集中的每张图⽚⽣成标签。换句话说,对于学⽣模型的数据集来说,其中的每张图⽚都有5个⽣成的标签。
(163,5)的意思是说,在学⽣模型的数据中有163个训练样本,5个教师模型为每个样本⽣成了5个标签。第三张CT图⽚的预测标签为5个1,说明5个教师模型都认为这是新冠阳性。如果是[1,1,1,0,0]则表⽰两个教师模型认为这是阴性,三个教师模型认为这是阳性,此时我们以多数原则为依据,认为这是阳性。
添加拉普拉斯噪声银行几点钟上下班
我们在模型训练之后添加被⼴泛使⽤的拉普拉斯噪声,这可以保证不会泄露超过的信息。我们定义了add_noise,其将预测的标签和值作为输⼊,我们可以使⽤控制添加的噪声量
长寿花怎么养我们把这些标签保存下来就可以了,训练好的教师模型已经⽤不到了
锦绣为什么恨木槿
PATE分析
我们知道,这些标签实际上是来⾃于私⼈信息的,所以这些新标签中可能包含⼀定数量的泄露信息。泄露的信息量在很⼤程度上取决于添加的噪声量,这是由决定的。所以选择合适的很重要,我们可以使⽤PATE进⾏分析。它实际上可以告诉我们,如果发布这些标签,会有多少信息通过这些标签泄露。
我们使⽤perform_analysis⽅法,以所有教师模型的预测标签列表和我们刚刚计算的带噪声的新标签作为输⼊,并返回两个值:data_dep_eps,data_ind_eps,分别表⽰数据相关的和数据⽆关的。Perform_analysis⽬的在于告诉我们教师模型之间的⼀致性⽔平。data_ind_eps的表⽰在最坏情况下可能泄露的最⼤信息量,⽽data_dep_eps的表⽰教师模型的决策的⼀致性程度。⼀个⼩的data_dep_eps的表明,教师模型的预测具有很⾼的⼀致性,并且浙西模型没有记忆私⼈信息(过度拟合)。因此,⼩的data_dep_eps的表⽰较⼩的隐私泄漏率。在试验了不同的值以及noise_eps变量后,我们设=0.1,得到的结果如下
训练学⽣模型
现在已经从教师模型那⾥得到了带噪声的标签,现在就可以开始训练了。在训练之前需要⽤来⾃教师模型的新标签替换掉旧的学⽣的dataloader(其中包含着我们下载数据集的时候附带的原始标签,当然,在实际情况下我们是不可能有原始标签的,所以实际中是没有这⼀步的)
接着训练学⽣模型。我们使⽤换成新标签的trainloader进⾏训练,并使⽤validloader的数据集评估模型的性能。我们使⽤和教师模型相同的CNN架构以及超参数。
同时再训练⼀个使⽤原始标签的trainloader的数据的模型
注意,这两个模型只有所⽤的数据集的标签是不同的
训练完成后,在测试集上⽐较这两个模型的性能
可以看到,学⽣模型的准确率稍微低于正常训练的模型,原因包括教师模型预测的偏差、添加的噪声等等,在不牺牲隐私、不违反数据隐私保护法律的情况下我们可以为5家医院之外的其他医院训练出⼀个学⽣模型,可以提升医疗效率,拯救更多的⽣命。
总结
我们在本⽂中利⽤差分隐私保护⽅案PATE,以设想的医院互助场景为例,在保护患者隐私数据的情况下,实现了在未标记CT图像数据集上的训练,得到了不错的结果。
参考
1.Scalable Private Learning with PATE
3.Semi-supervised Knowledge Transfer for Deep Learning from Private Training Data

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。