人工智能系统的形式化验证技术研究进展与趋势


  这是《2019-2020中国计算机科学技术发展报告》中的一篇报告,主要从形式化方法的角度观察过去三年内(主要从2017年起)基于形式化方法的人工智能系统安全可信研究的进展。
  我在这里对其做一个概括介绍,希望自己能够坚持写学习笔记,养成一个良好的记录习惯。

国际研究现状

人工智能系统安全内涵

  关于人工智能系统的可信性目前并没有统一的定义。大多数文献主要围绕其某个具体的性质进行研究。目前主要研究的性质包括:鲁棒性,安全性,可靠性,可解释性等性质。

  鲁棒性从狭义上讲,指的是对于系统的输入数据中出现的小的偏差(噪声)以及非正常分布的数据,系统的结果和性能不应当受到大的影响。文章里后续讨论的也都是狭义上的鲁棒性,系统的鲁棒性是安全性的前提,有些文献里也将安全性简单地专指为鲁棒性。

  普林斯顿大学的研究人员综合考虑了可信机器学习中的隐私性和鲁棒性,并且通过分析高鲁棒模型的内部结构特征,提出了新的基于对抗样本预测的“成员推断攻击”的概念[5]。“成员推断攻击”的原理是通过判定特定的数据是否属于目标机器学习的训练集/测试集,对学习目标进行攻击,提出“鲁棒模型往往泄漏了更多的成员数据信息”和“其训练算法本身往往使得模型对训练数据更加敏感”等结论。

此外,本文还给出了一些与可信性相关的性质的形式化表示:
输出可达性P( f,η),表示输入空间η中所有输入的输出结果集合。
区间属性I( f,η),表示一个能包含P( f,η)的凸集合,我们称I( f,η)为一个区间。
利普希茨属性,一个函数 f 是利普希茨连续的当其满足|| f(y) – f(x) || ≤ K|| y – x ||,直观地讲,利普希茨连续限制了函数的变化速度不能超过某个具体的值,Lips( f,η,Lp)表示函数 f 在η上的利普希茨值。

文献[9]中给出了上述性质之间的关系,如图1所示,箭头表示后者可以通过前者计算得到。
在这里插入图片描述

人工智能系统形式化验证技术

现有的深度神经网络的验证工作可以分为以下几个类别:
● 确定性保证,即可以“确定”地阐述某个性质是否成立。
● 单边性保证,即只需提供一个“上界”或者“下界”,便可判断某个性质是否成立。
● 收敛性保证,即针对某个性质成立提供“收敛”的上下界。
● 统计性保证,即量化某个性质成立的“概率”。

确定性保证:确定性保证方法首先将所验证问题转化成为一个约束的集合(无论是否具有优化目标函数),然后使用约束求解的方法来解决这个问题。此类方法主要依赖于当下各类约束求解器,譬如SMT求解器、SAT求解器、线性规划求解器、混合整数规划求解器等。

基于SMT/SAT的求解方法,2010年文献[12]中提出了一种基于SMT求解的抽象精化方法来验证神经网络;2017年文献[14]提出了针对神经网络的得SMT求解器Reluplex;2019年文献[16]提出了Marabou框架,可以验证全连接和卷积神经网络。除了基于SMT的求解验证,文献[17-18]于2018年提出了基于SAT求解来验证一类特殊的神经网络,即二值神经网络。

基于混合整数规划(MILP)的求解方法,2017年文献[19]将全连接神经网络编码成混合整数规划,把其上的ReLU激活函数表达成一系列混合整数规划,以便计算输出范围。同年,文献[20]在混合整数规划的基础上加入了启发法来加速求解过程。

单边性保证:这类方法的优势在于它避免了现有约束求解器的实现过程中可能会出现的浮点问题,大部分现有的约束求解器在进行浮点计算时只能提供估计值,所以有可能发生计算出的估计值不是真实最优解的情况。

抽象解释,神经网络可以看作是一类特殊的程序,输入一般是高维的,激活函数是非线性的。因此,对神经网络进行精确推理代价很大,需要用抽象解释对网络的具体语义进行抽象。苏黎世理工学院(ETH)的一个研究组最早提出了一种基于抽象解释的框架AI2,来验证神经网络的安全性和鲁棒性[28]。在这之后,ETH研究组面向神经网络验证设计了专门的子多面体抽象域[32]。为了提高验证的精度,ETH研究组还将基于抽象解释的方法和更精确的基于线性规划的方法进行了结合[33]

线性近似,文献[35]在考虑激活函数为ReLU的神经元时,提出了在局部对神经网络用线性函数做上近似和下近似,从而帮助验证鲁棒性的Fast-Lin算法。2019年,文献[39]提出了针对循环网络结构的POPQORN算法,可以用来验证简单的RNN、长短期记忆(LSTM)和GRU(Gated Recurrent Unit)等。
凸优化,2018年,文献[40]提出了凸优化的方法来学习包含ReLU激活函数的神经网络。

区间分析,2018年,文献[42]提出区间运算可以用于计算深度神经网络的输出结果的界值。

输出可达集估计,2018年,文献[44]提出了另一种叫作输出可达集估计的方法来评估神经网络的鲁棒性。

收敛性保证:上述提到的验证方法通常只能运用在小型网络上,譬如隐藏神经元在千个数量级别的网络。这里要介绍的是对于较大型深度神经网络的验证可以提供收敛性保证的方法,即同时提供针对某个性质成立的上界以及下界,并且证明这两个上下界收敛。

逐层精化,文献[8]于2016年提出了一个可以自动化验证深度神经网络的基于SMT的框架,它采用了逐层精化的方法,从神经网络的输入层分析至其隐藏层并且最终可以达到输出层。

双选手博弈,文献[46]在2018年针对深度神经网络的鲁棒性提出了两个研究问题:一是最大安全半径问题;二是特征鲁棒性问题。这两个问题又可以转换成双选手轮流博弈的最优解,在此博弈中,一位选手选择输入图片上的特征,另一位选手则判断在选定的特征内如何干扰。

全局优化,2018年,文献[10]证明了现有深度神经网络中大部分的层都是利普希茨连续的,从而在此基础上利用全局优化提出了针对神经网络的DeepGO验证算法。

统计性保证:利用一个量化的概率值表示性质是否被满足或者某个值是否是下界等问题的结果。

基于极限值理论的利普希茨常数估计,2018年,文献[51]提出了一种名为CLEVER的度量,并以此来估计利普希茨常数的值。

鲁棒性估计,2016年,文献[53]针对神经网络中存在反例的频率和严重度分别提出了两种对于鲁棒性的统计度量方法,此种方法基于上文引入的最大安全半径问题。

人工智能系统的测试技术

从三个方面对当前国际上比较流行的深度学习模型测试方法加以总结,即:
● 现有深度学习模型的测试标准。
● 现有针对深度学习模型生成测试用例的测试技术。
● 其他测试技术在神经网络中的应用。

测试标准:根据覆盖粒度,神经网络的测试覆盖准则可分为三类:神经元覆盖、网络层级覆盖、神经元对覆盖。

神经元覆盖,这是最早被提出的深度学习模型测试标准,神经元覆盖率指标可以视为软件测试中语句覆盖的一个变种[54]。它将神经元被激活与否作为该神经元是否被覆盖的标准,并将整个测试集中被激活的神经元的比例,即神经元覆盖率,作为衡量模型测试程度的指标。不过该指标在实际中过于容易实现,因而对评价模型的被测试程度并没有太多指导意义。

网络层级覆盖,鉴于神经元覆盖率的局限性,马等人在其工作DeepGauge[58]中提出网络层级的top-k神经元覆盖准则。

神经元对覆盖,文献[57]提出了一个扩展指标MC/DC,直观上讲是说如果一个神经元被覆盖,那么所有可能影响到该神经元激活情况的神经元(激活与否)都应当被测试所覆盖。

测试技术:神经网络测试技术的主要手段是针对当前模型,生成针对提升某一测试指标更加有效的测试用例,添加所生成测试用例到原先训练数据集进行模型的重新训练,以期来增强最终训练出神经网络的安全性和鲁棒性。

变异测试,南京大学陈等人[60]提出了模型层面的变异算子,对神经网络的结构直接进行变异操作生成变异神经网络,用于评估神经网络测试数据集的完整性。

蜕变测试,蜕变测试是根据判断多个输入输出之间的关系是否被满足,来判断被测软件的正确性。利用该方法,DeepTest[63]将蜕变测试应用在基于深度神经网络的自动驾驶系统上,主要用来测试深度神经网络是否对同样场景不同天气条件的情况输出相似的转向角,即自动驾驶系统不受天气因素的影响或影响较小。

测试用例生成方法,有一系列针对覆盖指标生成测试用例的方法。例如,文献[54]结合差分测试,通过求解联合目标优化问题生成测试用例,以使得多个神经网络判别出现分歧同时尽可能提高神经元覆盖率。

其他测试技术在神经网络中的应用:除了上述测试方法之外,一些新的测试技术为神经网络测试提供了不同的角度和思想。例如,文献[56]发现攻击样本在输入和模型扰动下相比正常样本有更高的敏感度,因此提出利用此特点并结合变异测试从输入样本中检测攻击样本。

人工智能系统的可解释性

人工智能的可解释性是近年来提出的一个概念,指人工智能系统决策机制能够被人类理解的程度[66]

特征排序:目前主要的特征排序方法可以归为两大类:基于反向传播和基于输入扰动,两种特征排序方法往往都依赖于启发式算法来实现。

文献[67]中针对ConvNet模型的图片分类可视化工作是反向传播方法早期的典型代表。其中,ConvNet图像分类器在一个具体输入点附近的行为被近似为一个线性方程,这个线性方程的参数是通过对网络在这个具体输入点上进行求导获得的。以后的基于反向传播的特征排序工作也多沿袭了对机器学习模型的函数求导。

与上文提到的只需要一次反向传播的特征提取方法不同,基于扰动的方法通过反复采样输入空间来寻求更高的准确度。LIME[74]是基于输入扰动的特征排序的诸多方法中很典型的一种。给定一个输入,LIME通过覆盖一部分输入特征来在给定输入点附近进行采样,并通过分析这些样本与机器学习模型分类结果之间的变化关系,来构建这个机器学习模型在采样点附近的线性行为模型,然后以此对输入特征的重要性进行排序。

量化追踪:最新的研究发现,对信息流在神经网络各个隐藏层表示的统计特性进行追踪,是理论理解深度学习的训练过程的关键。而信息论作为研究信息的基础理论,被用来量化深度学习的训练过程,起源于以色列理工的Tishby的团队在2015年和2017年的开创性工作[81-82]。其主要思想是把DNN的训练过程放入信息瓶颈的框架之中,把DNN的学习过程和泛化过程用两个互信息量来衡量。

人工智能系统建模

对神经网络系统本身如何进行形式化建模目前还处于探索阶段。研究者们目前提出的各种技术,主要有有限自动机、规则集合、决策树和程序等。

  由于有限自动机与神经网络(尤其是RNN)之间存在着很大相似,大多数研究工作采用有限自动机来表示神经网络的知识萃取或模型。早期的自动机提取技术主要采用层次聚类分析来分析神经网络的连续空间状态[89-91]。此外,有些研究者提出了基于采样的方式来提取自动机,文献[101]中提出了第一个基于采样的方法。但这些基于采样的方法存在着宏观状态的不一致性问题。

  为了解决不一致问题,概率自动机[106]这个方案被提了出来,文献[107]提出了一个从RNN中提取概率自动机的方法。

  上述方法都属于白盒方法,需要了解神经网络的结构及其内部状态。一些研究者提出了与之相反的黑盒方法,例如,文献[117]提出了一种从应用于序列数据的黑盒系统中提取权重自动机的学习方法。

  近两年,还有一些研究者试图从形式语言的角度来理解RNN,文献[128]结合了近似可能正确和约束求解,提出了从RNN中提取线性时序逻辑的方法,以解释RNN的决策过程。

对抗攻击与形式化验证

攻击技术的目的在于给缺少理论保证的深度神经网络提供实例证明,与之对应的是防御技术,可以通过提高神经网络的鲁棒性来减少对抗样本的数量,也可以从矫正输入中取出对抗样本。

对抗攻击:现存的大多数攻击技术主要是针对计算机视觉方面的对抗样本。这里列举几个比较有代表性的产生对抗样本的方法:有限存储的BFGS算法(L-BFGS)[7],FGSM(Fast Gradient Sign Method)[142],JSMA[144],DeepFool[145],C&W[146]

通过自然转换的对抗攻击:除了上述能够发现像素级别的对抗攻击的方法,还可以通过自然转换来挑选对抗样本。包括对输入图像进行旋转和平移[149],基于流场的空间转换的对抗样本[150]

更加实际的机器学习验证:裴等人[151]为了评估DNN等的鲁棒性,提出一个带有12个实际转换的通用模型(VeriVis),分别是均值平滑、中值平滑、腐蚀、膨胀、对比度、亮度、闭合、旋转、修建、尺度变化、平移和映射。对所有的输入都穷尽这些变换以验证给定的DNN的鲁棒性。

对抗攻击技术的总结:表1从五个方面,总结了常用对抗攻击方法的主要相似点和不同点。
在这里插入图片描述

国内研究现状

人工智能系统安全内涵

  中国科学院何积丰在2017年首次提出可信人工智能的概念,他认为可信人工智能应该具备与人类智能类似的特质,表现为鲁棒性、自我反省、自适应、透明性和可解释性,以及公平性。为了对智能系统不确定环境的形式化建模理论进行扩展,何积丰提出了基于程序代数的概率程序演算模型[158]

  在人工智能系统的可信度量方面,李德毅在其专著《不确定性人工智能》中提出用超熵来度量智能系统的不确定性,并对不确定性人工智能研究的发展方向进行了展望[160]

  在人工智能安全体系架构和标准体系方面,方滨兴在其专著《人工智能安全》中提出人工智能安全体系架构,并提出了相关的人工智能安全伦理准则[165]。中国电子技术标准化研究院、清华大学、百度、华为、360、阿里巴巴等联合编写的《人工智能安全标准化白皮书》对人工智能系统安全风险的内涵进行了分析,并提出了一系列针对人工智能安全的标准体系[166]

人工智能系统形式化验证技术

  目前,国内对人工智能形式验证的工作主要集中在神经网络、深度学习程序以及黑盒系统的验证工作。

  在神经网络的形式化验证方面,中科院软件所、国防科技大学、英国利物浦大学的团队合作研究提出了一种基于符号传播的方法来提高基于抽象解释的神经网络验证的精确性[30]

  北京大学、国防科技大学、香港科技大学的团队合作研究关注开发者编写的深度学习程序本身(即神经网络架构,如采用TensorFlow编写的程序)的缺陷,主要技术途径是将基于抽象解释的静态分析方法应用于人工智能深度学习程序中数值缺陷的检测[169]

  在黑盒系统形式验证方面,中科院软件所薛白、北京大学孙猛等人合作提出了一种在可能近似正确学习框架下计算黑盒系统安全输入特征集的线性规划方法[170]

人工智能系统的测试技术

  近年来,国内学者在神经网络测试方面做了大量的工作,并取得系列重要进展。这里对其中的测试覆盖准则、测试用例生成等主要方面做简要介绍。

  在神经网络测试方面,在DeepGauge[58]基础上,哈尔滨工业大学马雷等人也提出了基于变异的覆盖制导模糊测试技术DeepHunter,以生成测试用例实现高覆盖度测试[172]

  南京大学冯洋与陈振宇等人基于变异测试技术提出了模型层面的变异算子,该团队还提出了DeepGini[176]技术,用于神经网络的测试用例排序。清华大学软件学院姜宇等提出了基于差分对抗模糊测试的测试用例生成和后门检测加固工作[178-180],实现对抗样本的快速生成和后门数据的高效植入。

  北京大学孙猛团队提出从模型输出不确定性的角度来区分正常样本和攻击样本,并发现了许多不易被之前测试方法所覆盖的攻击样本[181]

人工智能系统的可解释性

  在人工智能可解释性方面,相关研究近两年来得到了广泛的关注,国内研究者在该方面有了一定的快速发展。

  其中,上海交通大学的张拳石团队对卷积神经网络、生成网络等的可解释性都有较为充分的研究[190-191]。该系列研究通过解释图、决策树等方法对卷积神经网络进行可解释分析和图解。北京大学的朱占星团队在经过对抗训练的卷积神经网络进行了初步的可解释性探索[193]

  国内在特征排序的研究上也取得了一系列的成果。在文献[194]中,来自中科院、南京大学、京东安全中心的学者与美国宾夕法尼亚州立大学和弗吉尼亚理工大学的学者合作,研究了针对安全软件的深度学习系统的特征排序。清华大学的刘奕群、马少平等人在文献[195]中将用户评论作为推荐系统的特征,通过对评论的排序来提高推荐系统的性能。

人工智能系统建模

  在人工智能系统建模方面,国内研究者也取得了一些相关成果。

  南京大学周志华团队提出了一种从神经网络集成器中提取符号化规则的方法REFNE[199],和一种基于聚类算法从RNN中提取自动机的算法[200]。上海交通大学张拳石等人[192]提出了从CNN中提取决策树的方法,该方法的思想是将中间特征层分别与语义对象和CNN的预测关联起来。

对抗攻击与形式化验证

  近年来,国内学者在神经网络的对抗攻击方面取得一些初步的研究成功,主要工作集中在2018年以后,主要以和国外的研究机构合作为主,现阶段作者全部是国内团队的工作还比较少。这里着重介绍黑盒对抗攻击算法,相比白盒攻击算法,黑盒攻击对算法有更高的要求。

  京东AI研究院的易津锋与美国加州洛杉矶大学和IBM合作,于2018年将针对硬标签的黑盒攻击问题转化为一种找寻到决策边界最短距离的方法,提出了Opt-Attack的黑盒对抗攻击算法[202]。与此同时,为了寻找到合适的对抗攻击策略并且能够有效地提升模型本身的鲁棒性,清华大学的朱军团队提出了基于动量的迭代算法来构造对抗攻击样本,取名为MI-FGSM[206],它能同时成功攻击白盒和黑盒模型。

  此外,国内还有一些团队结合进化算法和遗传算法提出了一些新的对抗攻击算法。比如,浙江工业大学的陈晋音团队提出了一种利用不同噪声点的像素阈值、噪声点数量和噪声点大小三个参数来产生不同的扰动的攻击方法,取名为POBA-GA[208]

国内外研究进展比较

  从前面介绍过的六个方面进行比较分析:

  针对人工智能安全内涵,当前国内外都尚未形成统一的标准。如何从不同的维度全面地刻画人工智能系统的安全,并利用形式化的方法给出严格的定义,是目前国内外都需要解决的关键问题。

  在人工智能系统的形式化验证方面,目前国内外都比较聚焦于系统鲁棒性的验证。主要原因有两个:一是鲁棒性是智能系统可靠性的一个重要的参数之一。另一个原因是鲁棒性在数学中有精确的定义,因此在形式化方法中相对容易描述与验证。与国际上关于智能系统的形式化验证相比,国内的相关的研究相对较少,同时缺乏原创性的成果。另外,由于智能系统中智能模块的不可解释性和结构复杂性,在系统的形式化描述,性质的形式化定义,以及算法的可扩展性等核心问题上,至今国内外研究依然停留在理论阶段,尚无有效的方法解决工业领域内智能系统的验证问题。

  在人工智能系统测试方面,近三年来国内在人工智能系统测试领域取得了一系列重要前沿成果,并处在国际前沿水平。不过由于当前大部分智能系统本身的不可解释性,相关的测试标准依然缺少足够的理论基础以确保测试结果的可靠性和准确性。

  在人工智能系统可解释性方面,相对于国外研究,国内众多团队形成了自己的研究特色。不过,目前的国内外研究大多基于启发式方法,还缺乏对可解释性的严格统一定义,亟待提出严格的理论框架对可解释性进行建模和相应的理论分析。

  关于神经网络知识模型构建方面的研究,绝大多数活跃在国外,国内对于这方面的研究尚未开始重视,活跃在这一领域的学者还不够多,同传统的形式化建模尚未形成一定的联系。

  对抗攻击技术作为生成测试用例的一种特殊方法,如何将对抗攻击与传统的测试用例生成技术相结合,生成有效的测试数据,如何根据测试结果更好地提升系统的安全可靠性,都是当前需要解决的问题。

发展趋势与展望

  人工智能系统的可信性已经逐渐成为制约人工智能技术在安全攸关领域应用的关键问题。可以预见,人工智能的可信性问题将会是工业界与学术界共同关注的焦点。

  另外,因为人工智能经常被用来处理非常复杂的、高维度的输入数据,一个最直接的问题便是决定输入数据的哪些特征真正对人工智能的判断起了关键影响。在可预见的未来,特征排序会在人工智能领域起到越来越重要的作用。

  随着神经网络规模越来越大,结构越来越复杂,以往的算法可能不再适用,如何从这些新型复杂网络中提取知识,特别是可解释可分析的形式化模型,可能是未来研究的一个关注点。从模型的角度,如何从神经网络提取表达能力更强的模型也是未来研究方向之一。

参考文献

  参考文献数量过多,原谅我的懒惰,就不一一列出来了。有兴趣的同学可以访问https://dl.ccf.org.cn/books/detail.html?_ack=2&id=5161520744974336查看原文,或者留言找我获取。

猜你喜欢

转载自blog.csdn.net/GGG_Yu/article/details/113571644