Machine Learning Models that Remember Too Much
论文介绍:这是一篇2017年的发表在Proceedings of the 2017 ACM SIGSAC Conference on computer and communications security上的论文,内容是关于设计特殊的模型训练代码,帮助adversary获取模型的训练集信息。
摘要
Machine Learning(ML)正在成为一种商品。Data holder能够方便地使用大量的ML框架和服务来对自己的模型进行训练,即使他并不是这个方向的专家。ML models在敏感信息上进行训练时,很重要的一点就是,不能够泄漏这些信息。
论文考虑了一个恶意的ML provider,他提供模型训练代码给数据持有者(data holder),而不直接观察数据。但是之后他可以使用白盒或者黑盒的方式观察模型训练结果。论文设计了一种实际的算法,其中一些非常类似于传统机器学习的技术比如正则化和数据增强,这帮助模型记忆训练集的信息,但是同时这个模型的性能和传统模型一样。然后论文解释了如何从模型中提取记忆的信息。
主要贡献
证明了对训练算法的微小改变,能够在获得高性能(模型精度和泛化性能)的同时,泄漏模型的训练集信息。
论文假设一个恶意的ML provider提供训练算法给data holder,但是不观察他的执行过程。在模型训练结束后,ML provider要么获得整个模型(白盒),要么获取它的input-output权限(黑盒),然后从中提取有关训练集数据的信息。
在白盒中,评估几种技术:1、将训练集的敏感信息编码到模型参数的不重要的bits;2、迫使参数和敏感信息高度相关;3、将敏感信息编码到模型参数的符号(正负号)。后两者技术在损失函数中添加一个恶意的正则化项。
在黑盒中,使用一种类似于数据增强的技术,使用额外的合成数据扩展训练集,因此没有对训练算法进行修改。因此训练过程包括两个任务,一个是主要分类任务,另一个恶意的任务是给定一个特定的合成的输入,“预测”出关于真实训练集的一个或多个比特的信息。因为我们的合成的增强的输入和相关联的标签,编码了我们的训练集的信息,标签与输入并没有结构上的联系。因此实质上第二个任务让模型学习的是随机标签。我们的经验证明,模型对合成输入的过拟合对主要任务和泛化的影响不大。因此实际过程中,对手提供一个合成输入,模型输出标签,标签中包含关于在训练过程中记忆的真实训练数据的秘密bits。
背景
简单说一下
一个machine learning model可以认为是一个函数fθ:X→Yf_\theta:X\rightarrow Yfθ:X→Y,其中θ\thetaθ是模型的参数。
威胁模型
Adversary 我们假设模型的训练过程时由adversary掌控的。但是数据是由客户data holder掌控的。其提供的算法需要满足训练性能。
Adversary’s objectives 尽可能多地推断客户的私有训练集。或许推断一个已知的输入是否存在于训练集(类似于membership inference)。
WHITE-BOX ATTACKS
在白盒攻击中,adversary可以看到训练模型的参数。因此专注于在参数中直接编码训练集数据。主要问题在于同时让客户满意这个生成的模型,简单来说就是模型需要满足性能需求。
LSB
参考图像水印的技术,LSB水印嵌入算法。许多研究表明许多高性能不需要高精度参数,因此可以在模型参数的最小位中嵌入关于训练集的信息。
Encoding:首先按照正常训练方法进行模型训练,然后在模型参数θ\thetaθ中,修改每个参数的最小位(比如模型一般使用的是32位浮点数,把最后一个bit位的信息进行修改)来嵌入信息,成为参数θ′\theta'θ′。
Decoding:直接逆过程。
Correlated Value Encoding
另一种方法是在训练参数的过程中逐步编码信息。Adversary可以添加一个恶意的项在损失函数中,能够最大化权重参数和秘密信息sss之间的相关性。
使用皮尔逊(Pearson)相关系数的负绝对值作为损失函数的额外项。
Encoding:首先提取从训练集中提取秘密数据s∈Rls\in R^ls∈Rl,对其进行编码。使用相关性项C在损失函数。
Sign Encoding
另外一种方法是将参数的符号作为一个bit,比如正号代表1,负号代表0。可以表示为下述优化问题:
使用惩罚函数放宽为无约束优化问题,定义惩罚项P:
这个方法的精度可能受限,因为惩罚项不能够保证每一位都成功嵌入,所以适合允许冗余的数据嵌入比如图像。
BLACK-BOX ATTACK
方法:使用合成数据来“增强”训练数据集。希望这些合成输入的标签编码能够泄漏我们希望的模型的信息。这些合成数据会在训练过程中与模型过拟合。
和白盒类似,首先需要从训练集信息中提取隐秘信息s。然后生成对应的xmal→ymalx_{mal}\rightarrow y_{mal}xmal→ymal来实现数据嵌入。