人工智能系统可靠性测试的对抗样本怎么做?
2021/10/20

前面的文章我们讲了模型离线的测试,这里面测试基本上对于一些典型的应用来说基本上是比较成熟的,也就是说各个领域的测试指标基本上都是比较固定的,或者说是比较有共识的。接下来我们着重介绍一下可靠性测试,对于可靠性来说我们主要是要关注模型的安全性,或者对于异常输入的影响。

这里面有典型的两种,一种叫对抗样本,对抗样本(Adversarial Examples)是攻击者故意设计,诱导机器学习模型出错的输入样本。
当时提出对抗样本的这篇论文也是引起了很大的轰动,以至于后来我们学术界也好、工业界也好很多人都对对抗样本的生成以及防御方法进行了非常多的研究。

对抗样本具体是怎么回事?我们可以看下面这张样例。比如说我们输入是一张熊猫的图片,如果说原始状态下,我训练好了这个模型,能够正确地判断出我输入的这张图片是一个熊猫,但是攻击者对这张熊猫图片加入一些很微小的噪声,但是这个噪声人的眼睛是看不出来的,但是对于机器学习系统来说,它输入的时候具体计算出来的时候,就会有所差别。这个噪声是经过我特别训练之后所生成的,它的目的在于,这个噪声添加进去之后,能够恰好使得目标系统的输出和原来正常的输出不同。

软件测试服务

比如说熊猫加入一个噪声之后,我就能够让这个系统识别成一个长臂猿,或者识别成一个其他的动物,这个在人工智能系统的安全性能来说也是非常重要的一个问题。不仅是在图像领域,在语音识别领域和自然语言处理领域都会有这样的一个问题。
比如说语音识别,在自动驾驶的时候,我要攻击这个自动驾驶系统的语音操作的系统,有时候我们可以去用特定的方法生成一段音乐。这段音乐人类听起来就是一段正常的音乐,但是这段音乐输入到人工智能系统之后,进行解析的时候,有目的地让这一段音乐被解析成自动驾驶的一个指令,比如说刹车,这样对人工智能自动驾驶系统来说就非常危险。
还有对于人脸识别系统的攻击方式,比如说我可以生成这样一副特殊的眼镜,这副眼镜戴上去之后,能够使得系统将原来这位女士识别成一位演员。


软件测试服务

还有对自动驾驶系统的攻击,比如说我原来有一个STOP的交通方式,加入一些噪声或者加入一些贴图之后,尽管人的肉眼看上去仍然是一个STOP,但是对于自动驾驶系统,特别是以图像为基准的自动驾驶系统,我们攻击它的时候,就有可能让它识别成一个绿灯。这对于这种性命攸关的系统来说这是非常危险的。


软件测试服务


所以我们在做可靠性测试的时候,对于这种性命攸关的系统,我们是非常有必要加入一些对抗样本去测试。我们可以用技术手段去特别地生成一些对抗样本,对人工智能系统去进行一个更有针对性的测试。
测试完成之后,如果人工智能系统不能很好地去防御这种对抗攻击的话,我们也可以运用相关的手段去加强人工智能系统对于恶意输入的抵御能力。比如说我们可以引入一个对抗性的一个训练,也就是说我们可以把这些对抗样本也同时加入到我们的训练数据当中去,让人工智能系统对这些对抗样本的特征有一定的学习,这样可以加强人工智能系统的可靠性。

下面的文章中,将为大家介绍另一种方法,如何利用差分测试生成易出错的测试样本。