雷锋网AI科技评论按:去年年底,Ian Goodfellow与Nicolas Papernot(是的,就是ICLR 2017的最佳论文得主之一)合作开了一个博客叫cleverhans,主要写一些关于机器学习在安全与隐私问题的文章。一个Goodfellow、一个Papernot,此二神的称呼真是般配呢。
在第一篇博客里,他俩介绍了为什么攻击机器学习要远比防御容易得多。以下是雷锋网AI科技评论编译的第二篇文章,未经雷锋网AI科技评论许可不得转载:
在我们的第二篇博客里,我们此前已经给出了一些背景知识,告诉大家,为什么到目前为止,我们还不能有效的处理对抗样本。对此,我们怀疑我们是否还可以对此进行防御。
在本文中,我们将探讨积几类保护措施。通过这些措施,我们就可以使我们的机器学习模型能够真正的起作用。就目前来说,我们认为现有防御措施的限制在于,缺乏对机器学习模型的验证机制。确实是这样的,为了能够设计出可靠地系统,工程师们都需要进行测试与验证:
测试指的是在某些环境状态下,对系统进行评估,并记录系统的运行状况以及是否出现缺陷。
验证指的是,经过验证,我们确保我们的系统在一般情形下,可信并可用的,它具有通用性。
与这个问题相正交的另一个问题是,哪些数据需要作为验证集与测试集。我们是否只应考虑那些“自然而然”的数据作为测试与验证的数据集?倘若我们的输入的是一些脏数据,对此,我们是否要提供一些保护性措施?许多的软件系统对于某些输入都有未定义的反应。比如说,编译器。
机器学习从业人员广泛依赖初级的测试方法。一般来说,我们评估一个分类器的做法是:从测试数据中选出一些样本,使用分类器对这些样本进行预测,最终得到分类器预测这些样本的准确率。通过以上描述,我们知道,这种测试方法并不能涵盖到所有可能被误判的样本。
对测试集误差的验证模拟,是一种统计学习理论。通过运用该理论,我们就能确保测试错误率不会超过某个阈值。但是这些保证往往太过于保守,我们在工程实践上很少用到。即使我们使用了统计学习理论,我们也会认为仅仅考虑到那些“自然而然的”输入:这些保证仅仅在测试数据集与训练数据集属于同一个分布的时候,才会生效。
为了能够提供安全保护,我们有必要在两个维度上进行改进:
1)我们最好使用验证而不是测试;
2)确保模型可以应对异常情况。
研究人员都希望他们的研究结果会有很大的鲁棒性,能够应对异常情况。
为了检验系统对对抗样本的鲁棒性,最简单的方式是使用含有对抗样本的数据集作为测试集[SZS13]。也就是使用新的输入来应用于传统的机器学习测试方法。
然而,不幸的是。仅仅通过测试,我们并不能得到完美的安全保证。因为,攻击者会使用不同于测试集中的数据。例如,我们的模型对于对抗样本生成的方法——fast gradient sign method具有很强的鲁棒性,但是却有可能易受到代价高昂计算方法的影响,比如说数值优化[szs13]或者是显著图[PMJ16]。
通常情况下,仅仅进行测试是不够的。因为,测试仅仅提供了系统的错误率的下限,而我们要想得到安全保证,我们还需要得到上限。换句话说,通过测试,我们知道n个输入导致了错误的发生,那么工程师就能够确定至少会有n个输入会导致模型失效。可是,实际上工程师更希望找到另外一种方法。他们希望这种方法能够找到导致错误发生的输入的上限。
我们在机器学领域内测试上遇到的局限性,让人想起了许多其他的软件设计中遇到的问题。当我们讨论如何确保程序的准确性的时候,Edsger Dijkstra说到:“测试表明bug是存在的,而不是不存在。”
我们都清楚,使用正常数据进行测试足够满足我们的机器学习应用。但是,对异常数据的验证对于安全保证来说,依然是必需的。我们需要验证,然而目前为止,我们仅仅知道该如何进行测试。
我们很容易破坏掉目前我们得到的机器学习模型,使用异常数据进行测试就足够暴露模型的缺陷了。希望在不久的将来,我们可以有更好的方式来应对对抗样本。仅仅通过测试,可能尚不足以暴露模型的缺点。我们需要验证技术来研究新防御措施的有效性。保障机制的发展表明,在存在对抗的背景下,正确处理输入空间对于ML未来的发展至关重要。它几乎完全就是建立在形式化验证的基础之上的。
机器学习模型对对抗样本的鲁棒性验证尚处于起步阶段。对于分类器,当前使用的验证方法是,分类器将同一个类别中的所有的点分配到某个点 x 的附近。下面的这幅动画演示了这种方法。我们将这种方法与模型测试的方法进行比较。
对于神经网络,研究人员正在努力地建立验证机制。不幸的是,这些系统还不是很成熟。Pulina et al.开发出了第一代的验证系统,表明神经网络的输出类别在所期望区域是恒定的。第一代系统的缺陷是,仅仅有一层隐藏层,所表征的网络中的隐藏单元数量不到12个。此外,sigmoid激励函数使用约束来近似的将问题减少为SAT。
这之后,Huang et al.改善了初始化方法,并提出了一个适应于现代神经网络结构的新的验证系统.[HKW16]。该系统能够适应于更大的网络。比如说ImageNet分类器。这个系统唯一存在的限制是,它依赖于各种假设。比如说:神经网络中只有部分隐藏结点和输入有关。这种假设也就意味着该系统不在绝对的保证没有对抗样本。因为对抗样本可以通过违背假设,进而躲开系统的检测。比如说,对抗样本通过使用无关隐藏单元。
Relupex是另一个检验系统。它使用的是线性规划求解器,能够适用于非常大的网络。Replux对于rectified linear networks以及分段线性结构来说,效率更高。
目前的验证系统都有一定的使用范围,并不是通用的。它们仅在那些输出类别是恒定,并且仅在某些特定点x的特定周围时候,才会起作用。下面是该系统的两个限制:
1) 我们无法穷举近似分类器的点。(我们不能认为未来的输入的数据都是正常的数据)
2) 我们所使用的临近x的区域。都过于武断与保守;我们倾向于使用小尺寸的Lp范数球,因为研究人员认同意这样做。对于足够小的范式球来说,所有相接近的点都会属于同一类。但是实际上,真正类别所属的区域应该会更大,并且可能不会是规范的形状,不会是我们所指定的形状。
总之,要想验证我们的机器学习模型,我们首先要做的是定义一组正常的输入。也就是说,我们的分类器能够很好地进行与判别。在大多数情况下,合法输入集要远比测集大。研究人员需要设计验证技术,通过验证技术,我们就能够有效的确保我们的机器学习模型能够在合法数据上做出正确的判断。机器学习经常会有很多的挑战,这样我们可能就很难达到目标。比如说模型推广问题。[PT10, HKW16, KBD17 ]中有相关介绍。如果是这种情况的话,使用其他领域的开发技术可能会使机器学习模型得到部分验证(更类似于某种测试):一个很好的案例是,模糊性对于计算机安全来说,有积极地影响。
因为没有任何一个机器学习模型是完全健壮与准确地,因此我们需要考虑不存在验证系统的可能性。特别要注意的是,对于新的,之前没有看到过但是合法的输入x,我们很难做到推广。
对于传统的机器学习来说,有很多的理论能够清晰地界定机器学习模型是否适应新的测试数据。比如说,“没有免费的午餐”定理(NFL定理)。该理论表明,在我们将所有可能的数据集进行平均后,所有的监督学习分类算法在测试集上会有同样的准确率。
现在的我们面临的开放问题是,NFL定理是否也同样适用于对抗情形?我们假设我们对测试数据集进行小规模扰动,验证NFL定理的时候,将这些扰动同样考虑进来,最终我们发现这个理论失效了。
根据这个问题的解决方案,攻击方与防守方可能会有不同的结果。攻击方会有很大的优势,因为我们都知道预测新的测试数据的准确值在统计上来说会有很大的困难。倘若我们足够幸运的话,防守者defender可能会在众多问题中都有很大的优势,这就为我们设计与验证鲁棒性算法铺平了道路。
有趣的是,读者可以在[PMS16]这篇文章中找到关于该问题的初步探讨。分析权衡了模型准确率与对对抗性的鲁棒性。表明,对抗样本会导致学习器的损失变大,之后学习器将会从更大的假设中进行筛选,并从中受益。更大的假设意味着更为复杂的假设类别,更为复杂的假设类别意味着我们对于任何分布都会有更小的损失。因此,在数据有限的情况下,我们的模型会获得更好的适应能力。传统上来讲,要想获得更为复杂的模型,你一般需要更多的数据。
尽管验证从理论的角度来看是具有挑战性的,但从实际的角度来看,即使是直接测试也是具有挑战性的。假设研究人员提出了新的防御机制,并通过使用对抗样本进行检验。倘若我们的模型依然会获得很高的准确率,这是否意味着防御机制是有效的?可能是吧。但是这也有可能意味着研究人员使用的attack很弱。同样的问题也会存在攻击机制中。
为了解决这些问题,我们开发出了CleverHans 库。这个库中包含了几种攻击和防御程序的参考实现。研究人员以及产品研发人员可以使用cleverhans来测试他们的模型对先进攻防措施的鲁棒性。通过这种方法,倘若模型经过cleverhans攻击依然会获得很高的准确率,那么我们就可以认为防御很有效。反之亦然。此外,只要研究人员使用同样的CleverHans版本与计算环境,那么就可以对他们的研究结果进行比较。
对于机器学习模型的验证仍处于起步阶段,目前我们所使用的方法都是避免使用不包含对抗样本的数据集。我们希望我们的读者可以收到启发,进而能够解决问题。此外,我们鼓励研究人员可以使用CleverHanslai来提高机器学习测试在对抗环境中的可重复性。
很感谢Martin Abadi对于本文的反馈
[GBB11] Glorot, X., Bordes, A., & Bengio, Y. (2011, April). Deep Sparse Rectifier Neural Networks. In Aistats (Vol. 15, No. 106, p. 275).
[GSS14] Goodfellow, I. J., Shlens, J., & Szegedy, C. (2014). Explaining and harnessing adversarial examples. arXiv preprint arXiv:1412.6572.
[HKW16] Huang, X., Kwiatkowska, M., Wang, S., & Wu, M. (2016). Safety Verification of Deep Neural Networks. arXiv preprint arXiv:1610.06940.
[JKL09] Jarrett, K., Kavukcuoglu, K., & LeCun, Y. (2009, September). What is the best multi-stage architecture for object recognition?. In Computer Vision, 2009 IEEE 12th International Conference on (pp. 2146-2153). IEEE.
[KBD17] Katz, G., Barrett, C., Dill, D., Julian, K., & Kochenderfer, M. (2017). Reluplex: An Efficient SMT Solver for Verifying Deep Neural Networks. arXiv preprint arXiv:1702.01135.
[NH10] Nair, V., & Hinton, G. E. (2010). Rectified linear units improve restricted boltzmann machines. In Proceedings of the 27th international conference on machine learning (ICML-10) (pp. 807-814).
[PMJ16] Papernot, N., McDaniel, P., Jha, S., Fredrikson, M., Celik, Z. B., & Swami, A. (2016, March). The limitations of deep learning in adversarial settings. In 2016 IEEE European Symposium on Security and Privacy (EuroS&P) (pp. 372-387). IEEE.
[PMS16] Papernot, N., McDaniel, P., Sinha, A., & Wellman, M. (2016). Towards the Science of Security and Privacy in Machine Learning. arXiv preprint arXiv:1611.03814.
[PT10] Pulina, L., & Tacchella, A. (2010, July). An abstraction-refinement approach to verification of artificial neural networks. In International Conference on Computer Aided Verification (pp. 243-257). Springer Berlin Heidelberg.
[SZS13] Szegedy, C., Zaremba, W., Sutskever, I., Bruna, J., Erhan, D., Goodfellow, I., & Fergus, R. (2013). Intriguing properties of neural networks. arXiv preprint arXiv:1312.6199.
[V98] Vapnik, V. (1998). Statistical Learning Theory.
[W96] Wolpert, D. H. (1996). The lack of a priori distinctions between learning algorithms. Neural computation, 8(7), 1341-1390.