导读:深度神经网络的可解释性近年来受到大家越来越多的关注,相关技术流派也呈百家争鸣的状态。但是目前大部分可解释性算法往往侧重于工程性的功能实现,侧重于迎合人类对被解释事物的主观认知,而缺少基于统一的理论基础的科学理论体系,影响了可解释性算法的严谨性,阻碍了可解释性研究的进一步发展。

上海交通大学约翰霍普克罗夫特计算机科学中心长聘教轨副教授,博士生导师,青源会会员张拳石自从博士毕业以后,就一直扎根在这一领域。他致力于在博弈交互理论的支撑下,建立一个统一的体系,将以往的各种“神农尝百草”式直觉性的方法纳入到同一个框架下,去芜存菁,提炼出行之有效的机理,指导深度学习的发展和研究。在他所建立起来的框架体系下,视觉纹理、形状、美观度,乃至算法泛化能力、对抗鲁棒性都得到了扎实的理论解释。本文就张拳石选择可解释性研究的初衷以及近年来的研究工作做了梳理和总结。

作者:张拳石

整理:周致毅

编辑:李梦佳

01

为什么选择可解释性作为研究方向

2015年,深度学习研究如火如荼,那时候我刚刚开始博后研究。当时朱松纯老师说:“深度学习已死。”尽管很多人对深度学习有种种担心,但是在2015年深度学习风头正劲的年代,不是每个人都敢说这样的话的,因为无论是从深度学习2015年前的势头还是2015年之后的辉煌来看,深度学习都绝对和“死亡”沾不上边。

外行看热闹,但身处洪流之中,我们要比常人更清楚表面背后的危机——首先,深度学习的出现,可以实现用一个简单的算法解决所有不同难题的愿景。从整个AI发展历史来看,确实是一个了不起的进展。但是,技术手段的单一化,也让学科发展受到很大的限制,学科研究进入瓶颈。其次,理论和应用严重脱节,很多传统理论对深度学习的解释,建立在不切实际的假设上,这就让传统理论研究进入一个非常尴尬的境地。传统的理论在解释深度学习方面陷入了极大的困境,无论从知识表征角度,还是从表达能力的角度,深度学习都缺乏可靠的解释。深度学习的巨大成功带给人的是更大的迷茫:没有系统性解释和建模,只有经验,未来何去何从。

我本人在本科阶段研究过可解释图模型。在深度学习刚开始的年代,经过朱老师的启发,加上我自己对深度学习理论的思考,认为有必要建议其一个完整的可解释性体系,指引深度学习的发展,因此就慢慢沿着这个方向走下去了。

02

为什么要对深度神经网络进行解释

基于神经网络的深度学习算法就像一个黑盒模型,其解释性较弱,算法无法对特定任务给出清晰的概括,那么在诸如自动驾驶、医疗和金融等决策本身附带“高风险”的领域,利用深度学习算法进行重大决策时,往往需要知晓算法所给出结果的依据,因此,将深度学习的“黑盒子”透明化,使其具有可解释性,具有重要意义。

图1

解释性发展的现状如图1所示,不同的人从不同角度出发解释神经网络,主要可以分为语义层面和数学层面的解释。目前解释性的课题发展方向五花八门,没有统一框架。语义层面解释神经网络主要是解释神经网络用哪些语义进行预测,以进一步量化神经网络的可靠性、可信度。要从语义层面认知神经网络所建模的知识,就需要基于重要特征的解释性与神经网络进行交流式地学习,最后评价神经网络的解释结果。而建立在数学层面的解释就是指如何建模神经网络的表达能力。现在很多人关注神经网络结构,那么如何在结构与知识表达之间建立关系,如何在知识表达与最终性能之间建立关系。

归根结底我们解释神经网络不是为了让人知道模型为什么能work,而是为了能够Debug神经网络,用少量的样本更精准地修复神经网络的缺陷并提升神经网络性能。所以我们最终希望能在神经网络可解释性方面建立一个统一的体系框架,将各家流派合众为一,进而使用这个体系来指导和设计神经网络,从源头上改变深度学习的发展。

03

博弈交互

沿着可解释性方向,我们发展了博弈交互理论,做出一系列工作。我们基于博弈论层面定义了多变元博弈交互,证明了它们的一些性质,并且进一步完善了博弈交互解释性的理论体系。在神经网络解释方面,可以通过该理论解释神经网络的泛化能力、解释神经网络所建模的语义层次结构、解释神经网络所建模的视觉特征(如形状特征)等等;此外,在表达方面也能够解释神经网络的对抗迁移性、对抗鲁棒性,还有输入视觉图片的美观度。总之,可以在一个体系内解释神经网络的各个方面。

首先,什么是“博弈交互”?简单来说是多个单词或多个像素间的交互。神经网络不是拿单个单词去推测,而是多个单词之间形成配合、形成短语,这个短语影响了输出结果。对视觉分类任务也是,不同像素之间进行配合,去影响最终的分类结果。

我们用一个形象的比喻来帮助理解“博弈交互”的定义:如果把每个单词、每个像素看作一个小人,那么就有三个小人(也就是三个单词)配合起来的总效用。如果总效果和每个单词分别独立作用的效果之和的差等于0,则认为几个单词之间没有交互;如果大于0,则认为几个单词之间互相配合,如果小于0,则几个单词之间是相互对抗的,对抗也是一种交互。

因此, “博弈交互”可以把神经网络表达转化为不同知识点的效用之和。“神经网络表达”是一种由线性表达转化成的模块化表达,每个知识点是特定像素的一组交互作用,对于知识点的定义与使用将从根本上改变神经网络的表达方式。此种表达方式的意义不仅在于告诉人们,神经网络的预测结果是否正确,还可以让人们回溯源头,找到是哪些交互信息使得神经网络做出了错误的判断。

图2

在此基础之上,我们还定义了多阶博弈交互。通过研究我们发现,低阶交互表征少量像素之间简单的纹理信息之间的交互,而高阶交互表征大量像素之间负责的纹理信息交互。基于这种定义,我们量化出表征复杂度与交互信息之间的关系。

04

如何统一层次符号化解释

目前,在神经网络的解释理论中,有一大类可解释性方法是计算输入各个单元的重要性。然而,平面化的解释仅仅显示各个单元的重要性,而没有解释各单元为什么重要的原因。某些输入单元重要性之所以较高,在于这些单元通过与其他单元组合,形成了重要的pattern。因此我们尝试摒弃平面化解释,转而做出一个层次化的交互式的图结构,去解释造成每个单元对输出贡献度不同的根本原因。

基于多变元交互,我们定义了解释的客观性,并提出一种严谨的解释:将网络的输出拆分为各种输入单元组合的交互效用之和。例如输入一只鸟,将其拆分为一个常值偏置和2n个交互之间的和。但是这种解释一共存在2n项,过于冗杂。于是我们发现,少量的pattern是显著的,对网络输出影响较大;而大多数pattern对网络输出影响甚微。因此,我们使显著性pattern变得更稀疏,从而将解释理论简洁化。

进一步,我们可以将传统的“与加”式的表达转化为一个层次化、符号化的“与或”图模型。“与”结点表示输入单元的组合,当这些单元共同存在时,才能构成显著性pattern,从而较大程度影响输出;而“或”结点表示每种显著性pattern对网络输出是一种相加关系。为了简化解释,我们提取出公共的输入单元组合,构成一个更深的AOG。

图3

现存的解释交互性的方法中,有从敏感度、干扰、矩阵分解、平均梯度等方面为出发点的工作。这些方法很少建立在扎实的理论基础之上,并且没有经过相互印证,难以从理论层面上进行比较。最近我们的一篇paper提出了一个基于泰勒展开的框架,将输出结果归纳为不同阶交互的和的形式,在交互体系下统一了14种可解释性方法。

使用博弈交互理论的原因,归根到底还是希望把解释性算法做得更扎实、更牢靠,以得到更可靠的解释结果。为此,我们需要对神经网络算法提出一些要求,从而在统一理论体系下完善解释性理论本身,将所有的“一拍脑袋决定”的工程技术性的方法纳入到一个统一理论体系下进行比较。

05

如何解释视觉表征

我们首先使用多阶博弈交互分析纹理特征,发现低阶交互通常表征通用的局部纹理,而高阶交互通常表征复杂的纹理,纹理分类的复杂度与建模的阶数是直接相关的。之后我们比较了纹理与形状的区别,发现纹理的编码比较灵活,通常是很不鲁棒的,容易受到噪声的影响。而场景信息常常被高阶交互表征,将主体信息与背景信息进行统一编码,为最终的任务表达服务。

除了纹理与形状层面,更高层次的视觉信息是美观度。但是美观度没有完整定义,美观的图像降低了人类的认知成本,让人们一眼就能认知背后是什么样的物体。这实际上是提升了大脑对认知的显著度。当人们解读人工智能建模的显著信号和噪声信号时,可以增强显著信号,降低噪声信号。

如图4所示,这只鸟,原来的色彩分布比较平均,经过调整、提升显著信号后,可以发现鸟与背景部分对比更加强烈了。我们可以从这个角度修改网络的学习目标,进一步提升图像输入的美观程度。

图4

归根到底,什么叫“语义”?什么叫“纹理”?什么叫“形状”?目前学界没有定义。其实博弈交互也可以解释语义表达,比如任何两个像素之间的交互,并不仅仅局限于两个像素之间,而是这两个像素与背景像素相互配合的问题。如果只有少量背景像素与这两个像素配合,往往是简单的视觉特征,这是低阶的交互;如果有大量背景像素与两个像素之间交互配合,这是建模的高阶特征,代表很复杂的形状概念。我们也可以从这个角度去解释神经网络背后针对不同语义的表达、对不同复杂度的表达。

06

如何解释泛化能力

我们不仅要建模语义、解释语义还要解释它的泛化能力。前期工作证明Dropout可以通过降低输入单元之间的交互,来降低博弈交互强度,从而提神网络泛化能力。于是我们提出,绕过Dropout机制,直接在输出层惩罚交互。同时我们发现博弈交互强度与泛化能力相关,基于此关系可以进一步优化神经网络的泛化。

博弈交互理论还可以解释神经网络对抗迁移性,我们发现博弈交互的指标与迁移性之间是不相关的。之前提到“去芜存菁”,在提高对抗迁移性算法上,存在诸多基于经验主义的算法,比如引入momentum,使用梯度平滑,或者改变传播的权重等。这些方法确实能够提高对抗迁移性,但是其作用的本质始终不得而知。我们通过理论,证明这几种方法都在降低交互值,使得人们可以总结出这些经验算法背后的内在机理。基于本质机理指导未来的深度学习,指导对神经网络的解释,是更可靠、更标准的理论。

同样,利用交互进一步解释对抗鲁棒性。最近我们发表在NeurlPS2021上的文章,发现对抗攻击主要聚焦于输入变量的高阶成分中,因此对抗训练往往是通过学习低阶交互,提升神经网络鲁棒性。

图5

上交大张拳石:深度学习可解释性,从百家争鸣到合众归一相关推荐

  1. 深度学习可解释性分析-Grad-CAM

    概念介绍 CAM揭示了卷积神经网络分类模型中图像的空间特征与其类别权重之间的联系,然鹅,CAM只适用于模型中有全局平均池化层并且只有一个全连接层(即输出层)的情形,如ResNet,MobileNet等 ...

  2. 深度学习可解释性问题如何解决?图灵奖得主Bengio有一个解

    作者 | Yoshua Bengio, Tristan Deleu等 译者 | 刘畅,编辑 | Just 出品 | AI科技大本营(ID:rgznai100) 自 2012 年以来,深度学习的发展有目 ...

  3. 深度学习可解释性研究(二): Understanding Black-box Predictions via Influence Functions(详细公式推导)

    该文章从鲁棒性的角度出发,对深度学习模型的可解释性进行分析,这应该是我目前为止读过最难的一篇文章,有很多公式需要推导理解,有很多细节需要慢慢品味,但文章确实是难得一见的好文章,我会尽可能把我自己的理解 ...

  4. 阅读笔记2: 深度学习可解释性学习:不要做事后解释

    选择可解释性高的机器学习模型, 而不是解释决策风险高的黑匣子模型 (原论文名:Stop Explaining Black Box Machine Learning Models for High St ...

  5. 这是一张机器深度学习代码速查表

    这是一张机器&深度学习代码速查表 文章目录 这是一张机器&深度学习代码速查表 基础 神经网络 线性代数 python基础 scipy科学计算 spark 数据保存及可视化 numpy ...

  6. Uber发布史上最简单的深度学习框架Ludwig!

    昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,堪称史上最简单的深度学习框架! Ludwig是一个建立在TensorFl ...

  7. 重磅!Uber发布史上最简单的深度学习框架Ludwig!不懂编程也能玩转人工智能

    点击我爱计算机视觉标星,更快获取CVML新技术 昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,堪称史上最简单的深度学习 ...

  8. Uber发布史上最简单的深度学习框架Ludwig!不懂编程也能玩转人工智能

    昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,堪称史上最简单的深度学习框架! image Ludwig是一个建立在Te ...

  9. 史上最全面的深度学习硬件指南

    转载自: http://it.sohu.com/20160204/n436921549.shtml 英语原文来自: http://timdettmers.com/2015/03/09/deep-lea ...

最新文章

  1. python RE库的基本使用!基本定义详细讲解!来源于MOOCpython,课程链接文章末尾有!
  2. 【动态树】[BZOJ2002] Bounce 弹飞绵羊
  3. 知识图谱学习笔记-非结构化数据处理
  4. GoldenGate for Java adapter介绍二(代码篇)
  5. Java LinkedList addLast()方法与示例
  6. linux的shell脚本if语句,Shell脚本编程之判断语句
  7. Tensorflow Estimator之DNNClassifier
  8. Linux系统管理第七周作业【Linux微职位】
  9. 网站备案中遇到的问题 名词和解释 大全
  10. linux防火墙的开启与关闭
  11. 别跑!JAVA!-----------一篇关于JAVA的博客
  12. Dojo: Quick Start
  13. 2022-02-15:扫地机器人。 房间(用格栅表示)中有一个扫地机器人。 格栅中的每一个格子有空和障碍物两种可能。 扫地机器人提供4个API,可以向前进,向左转或者向右转。每次转弯90度。 当扫地机
  14. 适合发朋友圈的高情商文案
  15. 远程调用中间件RPC
  16. arcgis 圈选获取图层下点位_关于Arcgis这62个常用技巧,你造吗
  17. 整活~使用webAI做一个网页AR吃豆人小游戏
  18. 想拿4w的offer,这些技能不可少!作为程序员的你了解吗?
  19. 慕课网——MySQL优化
  20. Java毕业设计_申通物流车辆调度系统设计与实现

热门文章

  1. python逐行写入csv_python之模块csv之CSV文件的写入(按行写入)
  2. 2013福建高职单招计算机类专业,福建省2013高职单招计算机类试题及答案.doc
  3. c++ 查找文件夹下最新创建的文件_Linux文件查找进阶知识,find命令的用法及解读...
  4. python中math.ceil是什么意思_python中的数字取整(ceil,floor,round)概念和用法
  5. 【c语言】蓝桥杯算法提高 三个整数的排序
  6. IOS 从系统图库中获取 图片 并设置为头像
  7. 教你快速撸一个免费HTTPS证书
  8. 史上最全 Java 多线程面试题及答案
  9. 文件同步工具 lsyncd2.1.6 安装使用问题
  10. Linux EXT2文件系统结构分析(详情见附件)