什么是对抗机器学习?为何要对抗机器学习?
扫描二维码
随时随地手机看文章
对抗机器学习是一个机器学习与计算机安全的交叉领域。对抗机器学习旨在给恶意环境下的机器学习技术提供安全保障。由于机器学习技术一般研究的是同一个或较为稳定的数据分布,当部署到现实中的时候,由于恶意用户的存在,这种假设并不一定成立。比如研究人员发现,一些精心设计的对抗样本(adversarial example)可以使机器学习模型不能成功地输出正确的结果。针对模型的攻击问题,我们主要分为两大类,就是从训练阶段和推理(inference)阶段来进行讨论。
⚫训练阶段的攻击
训练阶段的恶意攻击(Training in Adversarial Settings),主要的目的就是针对模型的参数进行微小的扰动,从而让模型的性能和预期产生偏差。这样的行为主要是通过数据投毒来完成的。
不过在此之前,有个前提,在PAC理论中,有一个已经论证的结论:对于任意的学习算法而言,其置信度β,必须满足β≤Σ\1+Σ,其中Σ表示了学习准确率。那么也就是说,当需要达到90%的学习准确率(Σ=0.1),那么被扰动的数据量必须少于10%(0.1/1+0.1)。
1)标签操纵(label manipulation)
这个方法很直观,就是直接通过对于训练数据的标签进行替换,让数据样本和标签不对应,最后训练的结果一定是不如预期的。有前人在SVM的场景下,随机替换了约40%的数据,对其算法进行了破坏,最后的效果也如预期一样好。其实这只是在二分类问题中起到了比较好的效果,但是在多分类的情况下并没有很好的解释,或者是实证性的研究。(这里可以有一个比较有趣的思考,如果二分类的分类替换了40%的数据会导致模型的预测结果很不好,那么多分类的SVM需要替换多少数据样本的标签?是需要替换更少的标签,还是更多?是随机替换还是有目标性的都替换成一种?)后来的研究则是对这个标签操纵的过程更加优化,是否能通过更少的标签替换,来实现更强烈的模型扰动,从而产生更有说服力的攻击模。
2)输入操纵(input manipulation)
在此攻击场景下,攻击者需要获知模型的算法类型,并且能结束到训练集。比较直接的攻击方式,则是通过在线的方式获得训练数据的输入权,那么最终的结果就是直接通过恶意数据来扰动在线训练过程,自然最后的结果就是脱离预期,从而导致恶意者的操纵成功。而当我们无法接触到在线模型的时候,我们只能通过线下的方式操纵训练数据,那么则需要构
造尽量少且恶意程度尽量高的恶意样本,那么这就可以使用梯度上升的方法去达到局部分类错误最大的结果,从而完成样本构造,然后再输入到模型中进行训练。那么,当我们无法直接接触到在线训练模型或离线时,我们也无法接触到训练数据,我们该怎么进行输入的操纵呢?从之前的流程介绍中我们也提到了,在物理世界获取数据的时候,这阶段并没有受到很好的保护。因此这阶段的数据,我们可以通过恶意地攻击物理世界中的数据来获取,例如交通信号灯,或者是自动驾驶摄像头正在拍摄的图像等。通过其在数据转换之前,就进行数据的污染,或是数据表示的污染。
⚫推理阶段的攻击(Inference in Adversarial Settings)
当训练完成一个模型之后,这个模型就可以看做一个BOX,那么这个盒子中,对于我们如果是透明的话,我们就把它当成是“白盒”模型,如果这个盒子中,我们什么都看不了,我们就把它当成“黑盒”模型。(我们在这个部分不讨论灰盒模型)那么针对白盒和黑盒的进攻手段自然是不同的,但是最终的目的都是希望能对模型的最终结果产生破坏,与预期脱离。其影响力以及攻击的构造粒度也是有所不同的。
1)白盒攻击(White-Box Adversarial)
当然这种所谓的“白盒攻击”,需要提供一个很“假”的前提——就是我们需要知道里面所有的模型参数,这个在现实生活中是非常不现实的。除非是,当模型被打包压缩到智能手机上之后,然后恶意者通过逆向工程来进行原有模型的复原,才有可能。当然这种情况出现的情况非常低了,因此我们需要有这种前提假设。
2)黑盒攻击(Black-Box Adversarial)
当模型处于黑盒的时候,更加符合现实的场景,但是这比白盒的模型缺少了更多的模型信息。因此,大家就从几个角度考虑如何进行模型攻击:通过输入和输出猜测模型的内部结构;加入稍大的扰动来对模型进行攻击;构建影子模型来进行关系人攻击;抽取模型训练的敏感数据;模型逆向参数等。
其中有两个方法比较有趣。一个是加入扰动来对模型进行攻击。这个方法最主要针对的是,找到原有模型的“blind spot”,或是说“blind area”。这些区域主要是原有模型模棱两可的区域,或是boundry,这对二分类的问题来说可能这些区域比较小或是比较狭窄,但是如果针对的是多分类问题,就可能在高维空间中提现出更多的“blind area”。因此尽量高地命中这些盲区,是这种方法致力于的方向,同时这里也提出一个思考,这样的盲区是否是可以定向搜索的,或者是否可以用一个模糊的算法bound住这些区域。
第二是建立影子模型,通过构建一个功能性类似的模型,来仿造一个攻击空间。类似于军事演习,想要在战场上打出好的效果,就要模拟产战场上可能发生的情况,但是目前对战场的情况一无所知,所以只能根据大致的情况去模拟。模型也是如此,只能对黑盒的情况进行对应的训练模拟,然后对其进行“白盒”的尝试,由于模型的迁移性还不错,或者说类似的算法都有不少的相同点,因此,影子模型的攻击成效还是不错的。