对抗机器学习(Adversarial Machine Learning)发展现状 2018年文章

对抗机器学习(Adversarial Machine Learning)发展现状
分类专栏: AI论文研究
版权

目录

1. 了解对手

1. 1 攻击目标(Goal)

1. 2 知识储备(Knowledge)

1.3 能力限制(Capability)

1.4 攻击策略(Strategy)

2. 学会主动

2.1 躲避攻击(Evasion Attack)

2.2 毒药攻击(Poisoning Attack)

3. 保护自己

3.1 反应式防御(Reactive Defense)

3.2 主动式防御(Proactive Defense)

总结

现在的模式识别技术(Pattern Recognition)包括语音、物品识别到现在现代网络安全任务,都借助这深度学习技术的发展得到了长足的进步。但是这些技术很容易被对抗样本(Adversarial Examples)所迷惑,所谓对抗样本:就是指一些为这些识别任务精心打造的故意混淆和误导检测任务的样本。比如说一个图片识别任务,对抗样本可以按照像素级别来扰动这个图片,这样以来人眼看不出问题,但是机器却会识别失败。

于是对抗机器学习(Adversarial Machine Learning)火了。但是它和机器学习、神经网络一样也有10年多的研究历史,而并不是近年来新兴的一个概念。

因为这个领域涉及安全,那么自然而然也就和传统网络安全领域一样是一种攻防两端的军备竞赛。这里有两个名词,即反应性(Reactive)和主动性(Proactive)。
反应性就是说系统被攻击之后发现存在漏洞,我们改进系统修复漏洞;
主动性就是系统设计者模拟攻击,然后不断改进系统。

比较看来,必然是主动防御的策略更可取。那么如何操作呢?文章给出了三个比喻用作主动防御遵循的三条法则:了解“对手”、学会主动、保护自己。

 
1. 了解对手

了解对手意味着,在设计整个系统或者算法模型的时候,首先要知道有哪些威胁。这里我们需要换位思考,就是说如果我是一个攻击者,我的思维是怎样的。文章列出了四个方面:攻击目标,知识储备,能力限制,攻击策略。
1. 1 攻击目标(Goal)

首先对于攻击者而言,攻击意味着什么?这里目标继续细化为三类:

1.1.1 安全性违背(Security Violation)

    攻击者可以在不影响系统正常操作的情况下逃避检测,这是完整性违背(Integrity Violation);
    攻击者可以破坏合法用户可用的正常系统功能,这是可用性违背(Availability Violation);
    攻击者可以逆向工程获取用户、数据和系统的私密信息,这是隐私违背(Privacy Violation)。

1.1.2 攻击指向性(Attack Specificity)

攻击者可以有针对的攻击,或者无差别攻击。前者就是为了导致对于特定的数据点错误分类,后者就是纯粹的使数据的分类性能下降。

1.1.3 错误指向性(Error Specificity)

攻击者可以让数据点错分为特定的类,也可以错分为任意一类。
1. 2 知识储备(Knowledge)

了解知识储备的目的是明确攻击者对于模型的了解程度。了解程度也分为三类:完整知识储备(Perfect Knowledge)、不完整知识储备(Limited Knowledge)、无知识储备(Zero Knowledge),分别对应了白盒攻击(White-box Attack),灰盒攻击(Gray-box Attack)以及黑盒攻击(Black-box Attack)。
1.3 能力限制(Capability)

能力限制反映了攻击者能对输入数据造成的影响,就是作为一个攻击者,可以对数据做什么。如果按照是否可以修改训练或测试数据分类,可以分为毒药攻击(Poisoning Attack)和躲避攻击(Evasion Attack)。毒药攻击就是可以修改训练数据,“毒化”数据;躲避攻击就是只可以修改测试数据,试图“躲避”模型的正常分类。
1.4 攻击策略(Strategy)

攻击策略就是不同的攻击方法了。不过总的方向就是使修改后的数据(或攻击数据)尽可能的最大化攻击效果。
 
2. 学会主动

学会主动也是主动防御里关键的一步,也就是模拟攻击手段。上面也提到了,针对能力限制的两种攻击手段,一个是测试时的躲避攻击,一个是训练时的毒药攻击。
2.1 躲避攻击(Evasion Attack)

躲避攻击有很长时间的历史了,早在2004年就有人在研究攻击垃圾邮件分类这个问题。核心思想就是混淆“坏”的词汇或者添加“好”的词汇。最简单的,假设你有一个线性垃圾邮件分类器,你就找这个分类器权重最高的一些词汇去做手脚,从而达到较少的代价和较高的可读性。有了这个想法,相应的反制策略也有了。那就是均匀特征的权重,让分类器需要更多的词汇修改才能达成误判。所以攻击线性分类器这个问题有较为已知的解决方案。

然后人们开始转向非线性分类器。那么如何知道那些特征影响分类器的判断呢?答案就是分类函数的梯度指定了最大变化的方向。同样的根据这个我们修改数据使得这个数据的判别函数尽可能的小,然后错误分类尽可能合理并可信。这是在知晓模型的情况下。如果不知道模型的话,也可以根据已有的信息训练一个代理模型,攻击这个代理模型获得近似的效果。

之后就是攻击深度学习了。同样的想法:在对抗样本和实际样本的预测类别不同的情况下,最小化两者的“距离”。同样的套路,代理模型也可以作为反防御的策略一定程度上绕过防御机制攻击模型。

这里解释一个非常常见的误区:对于攻击者来说,攻击目的往往都是最大化模型的可信度,也就是说我们扰动过的数据依然需要较好的分类概率,而不是最小化扰动使得攻击样本被误分类就足够。而一些研究例如Carlini和Wagner的论文也印证了这一点,即一些只针对最小扰动的攻击的防御策略在强攻击(或置信度很高的攻击)下也是存在漏洞的。
2.2 毒药攻击(Poisoning Attack)

毒药攻击在上面也提了一下,基本思想就是在训练模型的过程中,故意加一些“毒药”数据,从而使得训练出来的模型受到影响。这个理论最早是在2006年提出,很快就有一些最传统机器学习模型做毒药攻击的,包括SVM,岭回归、和LASSO等,中心思想就是双层优化问题。后来也有研究者用一种Back-gradient Optimization的方法攻击深度学习网络的。

虽然毒药攻击看起来需要具备的条件比较高,例如需要接触到训练数据集,参透模型等等,但是反映这个概念的例子已经存在了。前段时间的微软聊天机器人Tay就是一个。开放的16个小时其实也是它训练的过程,但这个过程中种族主义等恶意的言论就是训练的“毒药”。所以人工智能在目前来看可以模仿人类的行为,但无法分辨那些行为是误导行为。
 
3. 保护自己

最后一条准则当然就是如何防御。关于防御,一个直观的方向就是补救和预防。相应的我们把防御分成反应式防御(Reactive Defense)和主动式防御(Proactive Defense)。
3.1 反应式防御(Reactive Defense)

之前说到了主动式防御是一个看似较为健全的策略,但是如果仔细考虑的话,相比于主动式防御的降低未来潜在攻击风险的角度,反应式防御更方便直接有效。方向上可以考虑三个角度:周期性检测攻击、周期性重新训练、决策验证。较为实际点来说,就是经常性的收集新发现的已知的攻击种类,然后让自己的模型具备识别这类攻击的能力,然后适时地重新训练,而且可以考虑更多之前没有考虑过的数据特征。最后就是时常让专家验证决策是否合理,从而确保模型没有偏离决策方向。
3.2 主动式防御(Proactive Defense)

主动式防御要做的就是预防未来可能存在的威胁。这里有两种思路,一个是针对白盒攻击的设计性防御(Security-by-Design),一个是针对灰黑盒攻击的混淆性防御(Security-by-Obscurity)。

3.2.1 设计性防御(Security-by-Design)

设计性防御顾名思义就是在一开始就尽可能安全地设计系统和算法。首先说如何防御逃避攻击。一个直观的想法就是把“逃避”了的样本也拿回来加入训练集。对于这些样本就可以通过模拟攻击的方式来获得。这个方法在2004年就有人提出过,而且和现在深度神经网络对付对抗样本攻击的方法没有太大的区别。但是一个问题就是,这种防御是启发式的,没有对收敛性和鲁棒性的正式保证。当然有人把这个归纳为博弈论范畴的理论研究,这部分比较复杂就不展开了。总之这种较为理论的尝试也面临这实际情况更为复杂的问题,例如是否实际的攻击者真的会遵循理论上假设采取行动等。还有对于真实的高维数据,获得攻击样本的分布也会变得非常费时费力。

一个更有效的办法是稳健优化(Robust Optimization)。所谓稳健优化,就是把对抗学习作为一个极小化极大问题(Minimax Problem)求解。内层问题是通过尽可能干扰训练集最大化训练损失,而外层问题是最小化引起相应的训练损失的情况。换句话说,就是把造成很大风险的可能性降低。有趣的是,内层问题要解决的问题正是线性分类器正则式所做的工作。这样一来,稳健优化就在一定程度上和正则化的目标函数划等号了。粗浅的说,就是在一些特殊的情况下,稳健优化要我们做的就是像正则化的线性分类器一样,对对抗样本的敏感程度低,从而确保模型的一般性。最近也有研究表明该公式可以推导到非线性分类器。

另外一种防御机制是,检测和否认那些里训练数据“很远”的点。这些样本被称为盲点躲避点,因为它们可能出现在了数据稀疏分布的地方,造成误判。所以干脆就对这些样本采取不接受的办法,防止对抗样本的影响。

还有一些策略,比如说使用分类器集合来抵抗躲避攻击甚至毒药攻击。这样一来即使一个分类器“中毒”其他的分类器也可以从不同的角度识别。但是问题在于如果基本的分类器本身就没有很好的组合,那么可能壁垒不攻自破,甚至更糟糕。对于神经网络,也有人提出使其具有有限的激活功能或者增强训练数据对模型的影响来减少对抗样本的扰动等。

另外值得提及的一点是,对于那些盲点躲避点,我们确实可以采取过滤的方式拒绝接受这些样本。可是确实存在一些对抗样本,它们很难与训练数据集的样本分开,这导致之前提到的识别方法都无效。所以学习算法的安全属性应该和它选择的特征属性有所区别。也就是说安全性这个特征应该是额外的独立的一个属性,而不是表现在那些易被伪装模仿的特征属性上。

说完了逃避攻击,再简单说说毒药攻击。毒药攻击从目的上来说是要通过污染模型,对剩下的数据造成影响,否则就没有意义。所以从某一种角度上讲,它可以被当做一个噪音(outlier)。那么对于噪音的处理就有很多办法了,比如对数据进行清理净化,给予稳健的统计学习从而使噪音对模型的影响不明显等手段。

3.2.2 混淆性防御(Security-by-Obscurity)

针对灰黑盒攻击,我们可以做的是,尽可能隐蔽攻击者想要知道的信息,从而提升模型的安全性。比如说打乱训练数据,从不同的时间地点收集数据;使用分类器集合等难以逆向工程的模型;提高接触到模型或训练数据的难度;在一定程度上随机模型的输出,来混淆给予攻击者的反馈。

以上这些办法的效果是有限的。因为突破这层阻碍的最直接的办法就是训练代理模型,无论是可微还是不可微模型。
总结

以上就是到2018年对AML领域的一些研究综述。最后引用Ronald Rumsfeld的一句话:“机器学习面对的是已知的未知,而对抗机器学习面对的是未知的未知”。我们永远无法知晓何种未知的未知这种威胁在今后的发展中意味着什么,至于这项研究的未来工作,也正处在对抗机器学习、稳健人工智能和机器学习的可以解释性的交叉路口。也许未来有一天更进一步的理解能触碰到现代以数据驱动的机器学习技术的天花板。
 

原文地址:https://www.cnblogs.com/bonelee/p/14949474.html