文字整理 |孙晓帅
本文得到CCF-CV专委会授权发布,公众号「CCF计算机视觉专委会」原标题:RACV2019观点集锦 | CV模型的可解释性
以深度学习为代表的人工智能技术的迅速发展推动了计算机视觉诸多领域的革命,在人脸识别、自动驾驶、医疗影像分析等诸多问题上实现了突破性的进展。但是目前深度学习模型内部的工作机理很难被用户理解,通常被当作一个黑盒子使用,造成在很多情况下用户无法信赖模型的决策结果,也是模型设计、改进和大规模应用过程中所面临的关键挑战之一。
如何在模型的性能和可解释性之间寻求平衡,实现对以深度学习为代表的复杂模型工作机理的解释,进一步发展新一代的人工智能理论与方法,成为当前人工智能领域的研究热点之一。
为进一步促进交流与思考,我们在RACV2019中组织了“CV模型的可解释性”专题,各位专家从深度模型构建、可解释性度量、人机交互、产业落地以及其它典型应用等多方面展开了深入的探讨。
主题组织者:苏航、纪荣嵘,陈熙霖
讨论时间:2019年9月28日
发言嘉宾:王井东、林倞、何旭明、苏航、王瑞平
参与讨论嘉宾[发言顺序]:纪荣嵘、张拳石、山世光、刘日升、林宙辰、林倞、郑伟诗、王井东、谢晓华、鲁继文、王涛等
文字整理:孙晓帅
文字校审:山世光
我们将研讨内容按专题实录整理,尽最大可能以原汁原味的形式还原观点争鸣现场,希望有助于激发头脑风暴,产生一系列启发性的观点和思想,推动计算机视觉领域持续发展。
一、主讲嘉宾发言实录
1. 王井东
关于可解释性,我并没有具体做过相关工作,不过我关注这个领域已经很久了。
刚才陈老师讲什么是可解释性,我也简单的去做了一些思考和调研,总结起来有两种可解释性:一个是对已有的模型去解释,另一个是设计可解释性模型。我开始以为只是第二个:设计可解释模型。为什么会有可解释性这个问题,其实大家想人类去做事情的时候,都可以解释,对吧?在machine learning领域,基本上我们就把数据扔给了机器模型去做学习,这个时候其实我们是希望去了解机器学习的机理,以及这些模型是怎么运行的。
我们现有的什么样的模型可解释呢?其实很多,比如线性分类器可以解释,决策树可以解释。再比如说用于分类的支持向量机、margin、kernel这些都是可以解释的。
那么今天为什么我们要讲可解释性?其实有以下几个因素,不见得就完全对,这是我的思考。
我看到的更多的是从工业界的角度来讲,人们在使用机器学习或者是人工智能的产品的时候,可能会有疑问:这个产品够不够安全等问题。这些工业的需求其实非常重要,因为从卖产品的角度来讲,如果说不能够让别人相信我们的产品,那是卖不出去的,对吧?但对我们做研究来讲,我们会希望发现一些现有模型,特别是神经网络,它的一些内在的机理,希望能够像解释自然现象一样去解释这些东西。
今天上午大家提到AI是一种类似化学的东西,说现在的AI开发就像炼丹一样,但是这个地方我稍微有点不一样的看法。为什么呢?因为化学反应是个自然界的一个现象,拿两个东西,放在同一个地方它们会发生反应,但是这个反应并不是人设计的。而今天我们的神经网络是人为设计的,它不见得能像化学一样可解释。
大概2014年的时候,纽约大学的一个工作提出要understanding CNN,它可视化了神经网络。然后有很多人提出了各种问题,比如CNN的神经元里面究竟有哪些更重要?那些不重要的是不是就可以扔掉了?还有一个问题是:从网络输出能不能推出原来的输入图像是什么样子的?还有一些人说你这个模型太复杂了,我能不能用一个可解释的模型来近似复杂模型?
我个人的看法,其实我更希望看到的,不是去解释某一个具体的算法,这其实不是目的,我们希望能够通过这样的探索,设计一些更合理的算法。那么在计算机视觉领域里面,为什么是现在提可解释性?其实可解释性这件事情,在机器学习领域内已经做了很多年了。大家真正开始关注这个问题是近几年的事情,尤其在计算机视觉里面,就是最近的事情。为什么突然间大家要关注这个问题?
以前在计算机视觉领域,我们发文章的时候,大家就会问insight,这是我们一直关心的一个东西,可解释性。换句话讲,其实我们一直以来都强调CV的工作需要可解释,但以前为什么大家不觉得这是个问题?举个例子,以前我们都是人工设计特征之类的,本来是有道理的,另外,比如决策树本身就是可解释的,所以说以前大家根本不需要去解释这些事情。如果说你做东西就投了一个文章,但是解释不清楚,基本上你这个文章就要被干掉了,所以说以前不会出现这样解不解释的问题。
大家都知道2012年以后,深度神经网络取得了非常大的成功,但是视觉领域接受深度学习还是挺慢的。当时很多人质疑这是个黑盒子,这玩意搞不懂怎么回事,对吧?但是大家现在都用深度学习解决计算机视觉问题。其实很多人,我相信在座的可能也有不少人都是半推半就的接受了深度学习。
咱们计算机视觉研究工作者不忘初心,希望能够解释一下深度神经网络究竟是怎么回事。其实我刚才提到了,层次化网络模型前面还是学到一些低层次feature,比如说类似Edge类的,然后后面就学到一个高层次的,对吧?实际上这个我们认为是有意义的。还比如说从convolution层看,可能找到一个非常有意思的东西,甚至说把某些神经元,让它的响应最大化,看看对应的图像patch是什么样子,这还是挺有意思的。那么也可以从中间层往回推,推到源头看看是什么样子的。大家看我前面列举的这些有意义的研究结论,其实主要就是我们想要的,因为我们以前做计算机视觉,一般说一定要先做low level的,慢慢后面转成中间层的,然后希望学到后来对应到真正的高层语义,那其实不见得真的是这样。我刚才说的意思就是说,这些解释(我们认为合理或不合理的解释)实际上是迎合或者模拟我们以前对视觉问题的理解,其实不见得是对的。
我的意思就是我们通过这个可解释性来做什么?
第一个我先简单说一下,解释性实际上是个演化或者进化的过程。什么意思呢?比如说深度学习在计算机视觉领域非常火,一个很重要的原因就是RCNN在目标检测上取得很大的成功,实际上(大家今天看起来)方法上没有什么特别的东西,只是利用了在ImageNet上训练好的deep learning来提取feature,后来大家发现原来transfer learning也可以这么去搞。其实真正搞machine Learning的人不见得认为这是transfer learning。今天来讲,其实大家不见得相信这个transfer learning(把ImageNet上学到的很好的东西迁移到别的地方去)的观点,其实更多的可能是在优化的层次上帮助优化,甚至有时候会发现在ImageNet上train的很好的一个模型,跟在ImageNet上train的不好的模型,以他们为起点出发,优化别的任务的时候,后者可能会取得更好的结果,所以说这个解释可能是变化的,以前是这么理解,今天可能理解就不一样。
第二个,在解释的时候还是要慎重。为什么这么讲?其实这个问题大家都可以理解。举个例子为什么神经网络很强?直观上大家可以讲很多原因,比如以前是人工设计的一些参数,现在通过网络回传这样的学习方法得到。还有说,为什么是多层次的?因为我们知道图像分类之所以难,因为它在原空间里面很难线性可分,所以说需要通过多层操作能够提供一些非线性,通过升维确实能做到线性可分的。在理论上也有些解释,比如函数拟合?其实今天到现在大家还不认可这个东西已经解决了,或者从理论的角度还没有一个很好的解释,为什么?至少没有像SVM那样,有一个很强大的理论框架。或许我们更需要一个新的理论框架去解释今天我们用的CNN这些东西。
我们作为做计算机视觉的人,不见得就是把最难的问题或者最根本的问题真的要完全解决。但是也许在某些情况下,把某些东西暂时当成公理。我还有一个观点,就是说我们今天去解释很多东西,其实可能是危险的。比如早前我讲CNN网络结构里面,说一定要包括max pooling这些东西,当时也有很多理论解释,其实不见得是对的。现在很多网络没用max pooling,处理结果照样好,甚至会更好。
解释不是目的,实际上我们是希望通过解释发现新的方法,这很重要。其实我们今天视觉里面大多数的结构设计还是有一定道理的,出发点还是可以讲出来的。所以我的评价准则,还是希望有新的方法出现,有新的突破。
还有一点,我觉得很重要的一件事情,也许没有引起我们足够的重视。我们还是希望发现一些我们自己没有预料到的东西。不能说完全停止去解释,但至少我们要把更多功夫花在设计新的网络结构上面。其实所谓的可理解性还是挺难的,因为我们对世界的理解还是有限的。有一个简单的招数,我们可以模拟人是怎么解决这个问题的,显式的、透明的去设计这样的网络,看它能否学得很好,并且是否能够验证出来,而不是像真正的black box一样让网络自己去摸索。后者这种方式可能能学到东西,但是我们的数据又不足够。所以问题在于,怎么正确的做对这件事是很困难的。
谢谢大家。
2. 林倞
我从我的角度来谈一下可解释性,既从学术上来谈,也从产业落地的角度提出一些看法。我认为可解释性是个非常重要的问题。虽然有很多热门的论文,但可能还没有太多人把可解释性单独拿出来当一个课题来做。可解释性对于CV或者AI其他领域,都是一个核心瓶颈。
基本上跟井东老师的观点一致,我认为可解释性最终的目标就是获取信赖。大部分的用户并不是想知道网络里面有什么东西,以及这个模型背后的原因,因为用户并不管你是用SVM,还是用决策树,还是用神经网络的。那么现在产业落地中很多瓶颈,像无人车量产的延迟,还包括机器人、医疗等等,我认为其实本质上就是用户还不太信赖(这些产品)。就像刚才山老师说的,人脸识别有个别明显是非常错误的情况,AI给出相反的结果,不知道怎么回事,这样的问题出现了几次,用户就无法信赖你的AI。
最近我在工业界创业,跟朱松纯老师一起创办一个企业,主要在做AI教育机器人,我们看一下第一款产品。那么这个AI所体现出来的能力,跟今天我们谈的很多主题相关,包括它的主动性,包括多模态,甚至已经超出了CV的范畴,除了CV做的OCR,以及最基本的一些表情识别以外,其它全部是自然语言理解、对话管理以及背后的认知推理。我们的系统现在可以做到解一元一次方程、一元二次方程,包括一些应用题、智力测试题,甚至还可以通过交互的方式来给用户(学生)解释题目的计算求解过程。这背后并没有依赖大数据,而是通过对知识点和价值函数对题目生成、求解过程进行建模,也考虑了对用户(学生)的思维过程进行模拟,所以可以实现个性化(千人千面)的题目讲解过程。我想这个例子也充分说明了可解释性的重要性,AI系统需要真正理解问题背后的逻辑和原理,并且给出解释。
从宏观来看,我认为人类在日常生活中广泛应用的知识或者能力有三种:
第一种属于生物机能,视觉、听觉等感官,大部分情况下这类能力以及背后的机理不太好描述,只能模拟,但是可以实现快速反应处理,不太需要推理和分析,例如一些特定的模式(人脸、语音)的识别能力。这种能力一般认为是生物学进化过程中长时间训练出来的。
第二种就是应用专业性知识的能力,例如各种规则、条例、属性特点,使用知识图谱以及类似的大规模数据库可以较为方便的存储这类知识。在应用这类能力的时候,都伴随着清晰的解释性,包括因果性和关联性。
第三种很容易被忽略,就是通用型常识,例如人类群体或个体的价值观、针对特定问题的偏好,例如一些物理(空间、几何)常识以及社会学常识。这类知识在应用的过程中有时也难以精准描述和建模,目前比较热门的认知智能的研究不少都与常识建模和应用有关。
在CV刚刚起步时,很多的研究集中在第一类问题,例如做模式识别。随着研究的深入,第二类和第三类问题越来越受到关注,而这两类问题中,推理及解释是绕不过去的。2017年的NeurIPS大会中举办了一个讨论,当时LeCun教授认为在CV或者AI中解释性根本没那么重要,用户只关心效果,为什么关心背后的原理呢?在我看来,如果他讨论的是我提到的第一类问题,很多时候深究可解释性确实没有太多必要。例如用CV来做一个检测任务,给更高层的应用提供一个支撑,需要快速处理,在100毫秒内给出结果,这个时候确实也不太好解释。但是,当我们面对第二、第三类问题,很多时候我们要琢磨、推理,甚至分析和演绎,可解释性就非常有必要,这其实并没有超出正常CV研究的范畴。
我举个例子,比如说目前常见的fine-grained recognition(细粒度识别),它肯定是需要专业知识,比如说要识别这个鸟是百灵鸟,还是布谷鸟,它的背后是有知识的,鸟的头部,鸟的翅膀,还有一些形状、颜色等等,而且在图像识别完之后,还希望它给解释出来原因,不然别人他没法信服。另一个例子就是VQA。从最早的时候我们把VQA建模成一个黑盒子分类问题,到今天开始越来越多去谈它背后的一些常识、知识库等等,不仅要回答问题,还需要解释答案背后的原因。比如在这个例子中,问一个小孩扔出的飞盘是什么时候发明的,背后就有一个knowledge tracing的过程,通过知识库和推理去找答案。
其实一些经典的CV问题,也会通过知识推理的方式来改进性能,比如说物体检测。现在不少做物体检测的工作中也引入知识图谱以及与其关联的图神经网络。这类工作的核心思想就是把可解释性的推理与神经网络相结合,用于改善判别分类效果,减轻学习中过拟合的情况,这其中知识推理也可以看作是一种正则化能力,我认为这是一个趋势,无论是从学术研究还是产业落地来看。还有一个很典型的例子,就是今年的CVPR Best Student Paper,这个工作通过对场景的理解(包括三维几何的常识建模)来驱动在三维环境下的主动导航。
回到基础性的CV模型,其实我们并没有跳出三个基础性的框架:判别式、描述式、生成式。目前大部分研究做的是判别式模型,这是由主流的benchmark所决定的,CNN就是一个非常强大的判别式模型,虽然它不求表达可理解,但是很有效,以至于目前大部分的CV方法都尝试把问题定义成判别或者回归问题,然后通过大规模训练来求解。另外两个模型最近受到的关注较少。生成式的模型其实就是之前不少老师谈到的层次化分解模型。我们需不需要对视觉的处理进行层次化,需不需要去做层次化建模?我认为这是非常需要的,而且这直接决定了未来的模型是不是具有可解释性,能不能构建一个统一的表达。目前在CV领域,GAN的相关工作很多,但是讨论生成式模型的论文其实很少。大部分的工作中的generator的输入z是一个连续的噪声信号,并且没有任何约束,导致GAN无法利用这个z,并将z的具体维度与数据的语义特征对应起来,并不是一个interpretable(可解释)的 representation。
最后,针对可解释性的技术实现途径说一下我自己的观点。我觉得要做可解释性,肯定不能受限于传统的技术范式,即大数据驱动的判别式模型,要去考虑知识、因果、价值,就是前面提到的第二类和第三类问题。其实我们公司做的产品,就已经采用了这样的思路和方法,所以我们的技术路线是“小数据、大任务”,通过常识和价值来驱动任务建模和学习,弱化对数据的依赖,同时具备很强的解释性。这条路确实不太容易,由于缺乏benchmark,也不太容易发表论文,不过我认为这是通往智能的必经之路,我们也陆续有面向智能化教育的产品浮出水面。此外,我们也要构建可解释的模型,更多地去挖掘生成式和描述性模型的优势和价值,这类模型往往需要求解一个联合概率分布,而不是以判别分类为目标的条件/边缘概况分布,这就有了可解释性的理论依据。而且,目前的研究基本上是定义在特征层面上的感知模型,如何引入认知层面的模型,例如定义和表达意图(intention)、情感(emotion)等,这就更加有意思了。最后,我们还需要改善和推动benchmark的变革,例如开发各类模拟器,支持推演和假设分析,这样就可以做因果挖掘、常识学习等任务。还可以引入各类综合性量化指标,而不是简单考虑准确率和计算效率等。举一个例子,美国的重大项目指南中也提到,考察一个CV系统的有效性,需要强调解释性,从what goes where 到why and how,并且要测量用户对AI系统的trustiness (比传统的图灵测试更高了一步)。
以上就是我的观点,非常感谢。
3. 何旭明
首先感谢陈老师和苏老师的邀请。先前我还没有做过太多的关于可解释性的工作,最近对这个问题很感兴趣,在探索的过程中分享一下我的一些个人看法。
首先我们考虑一个非常古老的视觉问题:从星图预测天体的轨迹。可以说几千年来我们的目标是构造一个可解释模型去解释天体的运动。从天文学的发展历程,我们可以获得一定的启发:在上古时期的神话时代,人类是靠神学来解释星辰是如何运动的;接着从古希腊到中世纪是以托勒密地心说为代表的理论来解释,然后到文艺复兴的日心说,牛顿力学揭示椭圆轨道的物理理论,最后再到广义相对论。
从这个过程我们可以看到,首先可解释性是一个相对的一个概念,任何的解释都是基于现有的知识体系而无法超越这个体系的局限。第二,解释性的主要目标是可预测性。前面的例子里,建立模型是为了预测天体下一步会怎么运行。第三,随着数据的积累,可解释模型是不断更新和演化的,从一开始比较直观的模型进化成一个较为抽象的模型。最后,可解释的模型要融入更广泛的体系,它不是孤立的存在。
我认为可解释的核心目标是实现某种意义上的泛化性,就是可扩展性。举例说当我们基于广义相对论理解了星体的运行以后,我们具有更为广泛的预测和创新实践能力,比如说向木星发射卫星。以上从历史经验来说明可解释性的问题。
从机器智能的角度,需要可解释性的最根本的原因是可观测的数据都是有局限性的。从天文学的例子可以看到, 可观测的数据不能够完全描述宇宙中出现的所有现象。因此这是数据驱动的方法的一个根本问题。基于人类知识的可解释性提供了一定程度上的正则化,使得模型能够不断的自我纠错,然后实现一定的鲁棒性。
从人类智能的角度,无论是建立什么的模型,最终还会有决策的过程。可解释性可以保证决策的透明和可确认,然后同时可以对理解的算法局限进行改进,使它更加符合真实的现实世界。另外就是可解释可以建立一个机器算法和人类知识进行交流的接口,使得我们和机器协同工作,而非对立的各自发挥优势。
关于可解释研究的挑战,除了刚才各位老师讲的几个问题,我认为有以下几点。第一个是如何应用可解释到特定的实际问题,比如说从显微镜的图像里建立细胞的模型,这是一个生物影像的问题。我们发现生物学家很希望我们用深度学习的方法时都有一些可解释性。但特定领域的问题所需要的知识非常不同于日常生活场景,因为它们的层次是不一样的。第二,算法的决策过程可以从多个层面去解释,比如说是推理的逻辑链路,还是训练算法或数据集的不同对结果的影响?像刚才王井东老师说的,现有知识表达是有局限性的,因此算法学习的一些模式,是否能够映射到现有人类的语言,或者是基于可视化这种途径去解释,是不太确定的。第三,关于可解释性度量的问题,是否存在一个统一的度量方式?比如建立以信息论为基础的数学模型来度量,或者是在特定的应用场景下进行。
基于上述思考,我们提出三个关于可解释性的研究问题。第一,我们需要建立什么样的可解释模型?是先建立黑箱模型然后解释,还是从一开始就建立可解释的、透明的模型。第二,和刚才林倞老师说的一样,建立可解释模型,要推进视觉研究、知识表达和语言的结合。但其中的主要问题是其中涉及的knowledge graph没有看上去那么简单。因此,我们需要面对如何去挖掘复杂的知识和语言中的相关信息的问题,这是一个非常具有挑战性的任务。最后一个问题是关于可解释的表达形式的选择:一种是human-in-the-loop,我们希望建立与人类知识之间的关联。另外一种从算法的角度说,只要发现的规律是self-consistent,那么算法可以有自己的knowledge base,只要能够generalize,能够解决实际问题就可以了。
以上就是我的观点,非常感谢。
4. 苏航
非常感谢今天能有这样一个机会,和大家共同探讨可解释学习,这是我个人非常感兴趣的方向。我今天主要想就以下三个问题谈一下我个人的看法,供大家参考。第一个是为什么要做可解释,第二个是什么是可解释,第三是怎么实现可解释。
首先是为什么做可解释。刚才林老师也谈到了,NeurIPS2017上组织过一次辩论,就是关于可解释对机器学习的必要性,当时深度学习的三巨头之一LeCun教授的观点非常明确,在性能和可解释之间多数人都会把性能作为优先的选项。但是,ICML 2018的Best Paper颁给了可解释的研究,然后最近IJCAI,AAAI也都组织过相关的研讨会,说明可解释学习已经引起了学术界的广泛关注。
我谈一下我个人为什么认为可解释还是很重要的,首先可解释性对于那些模型错误可能导致严重后果的任务而言是非常重要的。比如对于医疗、金融、自动驾驶等领域,如果模型不可解释,会给模型的部署和应用带来极大的挑战。第二,可解释是人机协同的非常重要的前提,因为未来很多任务实际上需要我们人和机器协作来完成,这样我们就需要来理解机器。我们可以想象一个极端的场景,如果是一个完全的机器世界,我们真的需要解释吗?第三,可解释给AI的发展提供了一个新的维度。现在计算机视觉领域很多任务非常关注性能或者叫精度这一个维度的指标,可解释实际上给我们提供了一个全新的角度。这样,我们除了关心精度之外,能不能把可解释当作另外一个维度,甚至可以有更多的维度,这样的话其实我们可以构成一个指标体系,在新的指标体系下,它能够启发我们去研究新的模型,比如说我们如何在保证精度的前提下,同时提高可解释性。最后,我们通过理解模型内部的机理,可以更好地的融合领域知识来启发我们设计新的模型。我个人感觉,我们实际上可以把可解释性作为计算机视觉未来发展的一个契机,可以通过设计更加挑战性的任务指标来推动视觉模型的发展。
接下来说一下可解释模型是什么?这里我引用了DARPA的目标,希望能够从学习方法、模型结构、可视化等方面提高模型的可解释性。我个人的理解是可解释有几个不同的维度。第一,其实我们可以把它叫做结果可解释,这一点刚才很多老师都谈到过,对于用户来说,比如说医疗AI模型,用户可能并不关心诊断的具体过程是什么,用户只关心智能系统能给出其决策的同时能够给出相应的依据,这可能是对用户来讲更加关心的事情。 第二,是过程可解释,就是说我们希望这种模型内部对整个过程做解释,了解模型内部的工作流程,这对我们研究者更加有帮助,或者是对我们模型的设计者更加有帮助。第三个维度,我感觉是从可靠互操作性这样一个维度,面向未来的人机协同,那么这个维度也非常重要。
然后,我想谈一下如何实现可解释。人工智能模型为什么难以解释?非常本质的原因是大多数的AI模型,都是在特征空间中来做事情。而特征空间是机器创造出来的,所以我们觉得不可解释。人能够理解什么?数据我们是能理解的,然后高层语义我们是能够理解的。所以说要想推动模型可解释,我个人感觉无非是两条路:要么把特征空间和数据相联系,要么是把特征空间和高层语义相联系。
第一条路目前主要通过可视分析、关联分析这样一些方法对模型进行一些解读,我们也在这方面做过一些尝试。第二类是设计自身具有可解释性的模型,也就是说我们通过一些新的训练方法,或者新的模型结构,让模型能够实现自身的可解释。例如,我们能不能设计类似机器语言的模型,通过构造一些可解释的基元,以及基元之间的关系,然后基于这些基元构造相应的人工智能模型。这些模型建立在一个共同基础之上,它们就是可以解释的。我们同样可以利用这种方法对可解释进行客观度量,这也非常重要。但是,这其中的难点非常多,例如常识怎么来表征以及语言框架怎么来构建。
最后我想谈一下可解释的应用。我们目前利用可解释的模型,在网络压缩、对抗样本的防御上都取得了很好的性能。实践证明,可解释的模型对于我们很多领域的研究都会起到促进作用。
最后,我想总结一下,我感觉人工智能发展带来可解释等新的问题,因为原来简单模型并不存在可解释问题,但是可解释也可以启发新的模型,但整体来讲应该是路漫漫其修远兮。谢谢大家。
5. 王瑞平
很荣幸能够在这里跟大家分享我关于可解释性在计算机视觉里面的一些浅见,我并没有专门做这一块,我们课题组这两年主要在做视觉里面的物体识别、场景理解等等,我们不只关心简单的性能提升,尤其更多关注识别与理解背后的机理。如同刚才苏航老师讲的,我们希望将来在评价一个任务做得好不好时,增加一个维度,不只是模型的量化指标值有多高,还应该包含模型的可解释性程度这样一些因素。那么什么是可解释性?这段时间为了准备这次报告,看了很多相关的资料,我个人认为“解释”,就是希望去理解我们的技术和方法背后运行的机理。
(1)什么是“可解释性”?
我们是否一定需要可解释?不具有可解释性的算法或模型,能不能用?以飞机的出现为例,一百多年前莱特兄弟发明飞机的时候,当时并没有完全建立现代的科学体系,但是造出来的飞机它能飞,造出来之后人们也敢坐,那么它背后的机理是否跟鸟的飞行是一样的?显然不完全一样,飞机的翅膀就没有扇动。回过来看人工智能,我们学习一个模型出来,只要能将人脸识别、或者物体识别做得足够准,是不是精度达到99%就可以了?我们是不是不用管它到底是怎么工作的?我的观点是知其然,也要知其所以然。
关于“可解释性”的定义,UCSD的一位年轻博士Zack Chase Lipton,目前在CMU做助理教授,他在ICML16一个报告中给出了很直观的表述。机器学习模型的可解释性可以理解成人类对其运行过程的可仿真性(“We should think of interpretability as human simulatability”)。怎么讲一个机器模型是可仿真的?想象一下,将机器模型的输入数据和相应的模型参数同样地作为人脑的输入,如果人脑能够在有限的时间内通过一步一步的计算,给出相应的预测,我们可以说这个模型是可被仿真的,从而是具有可解释性的。我非常认同Zack的观点。
反过来,什么不是可解释性的目的呢?来自Google Brain的一位学者Been Kim给出了她的观点,她认为研究可解释性,并不意味着需要让所有的模型都可解释,而是取决于使用者所要解决的任务和目标。比如说AlphaGo,它学习下棋的方式完全不同于人类,但它把所有人都打败了,它可能并不具有可解释性。可解释性不意味着去试图理解模型中的每一个single bit,不是去刨根问底、去理解到最底层的每个字节、每个比特。同时,可解释性也不意味着它与复杂模型的设计是抵触的。再一个,可解释性并不仅仅为了给使用者带来可信赖的、公平的模型,在此之上还有更多的需求。
这几年关于机器学习可解释性的讨论很多,我们在深度学习之前为什么不讲可解释性,因为以前的模型都比较可解释,比较简单,比如说线性分类器,另一个原因是任务也比较简单。如果将模型的可解释性vs.精度作为两个维度画一个坐标系的话,可以做一下不同模型可解释程度的对比。像深度神经网络,可解释性比较差但性能很高,像决策树,可解释性很强,但精度就很低。这两个维度是一个矛盾体吗?我觉得不是这样,将来完全有可能设计出既有强可解释性,又有高精度的模型。
(2)为什么需要可解释?
刚才讲的,我们需要在性能之上更多的去思考结果背后的道理,不只是调参或者是去调用工具包。大概90年代以来的机器学习模型,所谓“统计机器学习”,更多的是数据驱动的方式,我们希望从数据里面得到知识,模型只是这些知识的一种外在体现或者载体。但是这个模型可不可靠,模型里面捕捉到的是不是我们真的想要的那些知识呢?模型本身只是一个非常间接的体现。
主流模型在ImageNet数据集上Top 1的精度已经到80%多了,它可靠么?它得到的是区分这1000类物体的本质么?不全是。这方面张拳石老师做了很多很有启发的工作,那么我们知道完全依赖数据的话是有问题的,数据永远只是人们在真实世界里面观察的采样,它采到的远不是知识的全部。比如说一个典型的在ImageNet数据上训练得到的模型,只要看到黑人的图片,就会把它分类成篮球。因为数据库里面关于篮球这个类别的训练数据里面,很多都是黑人运动员。类似的,这个模型只要看到黄色的亚洲人就分类成了乒乓球,即使图片中根本没有球,只有一个人,它却识别出了乒乓球。这个问题其实是数据集采集方面的bias所造成的。
回到模型之间的对比,我们看到右图中的数据都是自然图像,深度学习模型在原始的图片上测试,这几个模型比人类的得分都高,人类只有99%,其它几个机器学习模型都到了100%。拿走彩色图像,我们去看灰度图,人和这些模型都还挺高的。但是我们看一些简笔画,人还能保持87%将近90%的精度,机器的模型已经下降的非常多。那么这可能还涉及到domain adaptation问题,即迁移学习,包括纹理方面的差异。因此我们希望识别模型更多的去学到分类背后的机理,而不是数据集中“与类别无关”的各种非本质的偏差。很多关键场景里面都有这样的需求,特别是智能驾驶、医疗这些场景,对可解释性都有非常强的需求。此外,可解释性也会给我们带来一些正面的反馈,帮助我们改进模型性能。正如Been Kim报告中的观点,区别于传统的机器学习模型,引入可解释性后可以帮助引入人类的经验,能够去调整模型和数据的设计,进一步改进分类器的性能。
此外,机器学习过程中学到的规则,也可以辅助人类向机器进行学习。比如前面讲到AlphaGo里面机器走出的那些棋路,有些套路是人永远不会走的,不会按照这样的规则来去下棋,那么这些套路对于人类去理解机器模型有更多的帮助。可解释性难在哪里?因为其中涉及到生物网络里面非常复杂的非线性映射,像刚才苏航老师讲的,做了很多探索,但是似乎并没有带来太大的性能提升,在当前以性能作为首要度量指标的这种评价体系里面,可解释性所带来的影响“似乎”也没有那么大。
(3)有哪些途径/技术?
如何来构造一个可解释的模型?我们设计一些模块,从数据层面,在建立模型之前,有些可视化的手段来分析数据里面的一些域模态等等,能够指导设计模型。建立了模型之后,通过构造一些程序化的模块,可以去指导诊断方法的运行结果。视觉任务中具体的可解释性途径/技术有哪些呢?目前的方法主要包括可解释CNN、network dissection、物体分类里面的激活向量TCAV等,这些是用于感知任务方面。在认知任务里面,包括注意力热图、像VQA数据库用来评价视觉问答的过程,设计一些可分解的模块,以此来评价一个复杂的推理任务里面每一个子任务做的怎么样,并不只是看最终的答案输出结果。
最后讲一点我们小组最近的尝试。我们做物体识别,除了看识别精度之外,更多的去找到物体类别之间的一些本质关联,包括层级类别的一些构成规则,包括视觉属性来指导我们做更符合人类预期的、更合理的一些识别模型。在认知任务里面,结合场景图的理解,结合相关知识库的构建,构建场景图与知识图联合的问答数据库与诊断模型,希望得到更加符合常理的从感知到认知的任务模型。
好,我的分享就到这里,谢谢大家。
二、讨论嘉宾发言实录
陈熙霖
可解释是用来沟通从感知到认知的,或者讲是为了完成一个更复杂的任务而必须的。也就是说,如果我们仅仅停留在感知层面,解释这件事情也许不那么重要。小飞虫对青蛙而言不需要解释,它只要看见动的小物体就扑上来吃,就当虫子就好了,不需要解释为什么是虫子。但是我们人类复杂的任务需要解释。接下来,我想把这个调动气氛(扇风)的时间交给荣嵘,讨论多热烈(火烧多大)就取决于荣嵘了。
纪荣嵘
陈老师给我的任务太重了。我们刚才商量了一下,决定还是想让大家一起活动一下。我现在提两个问题,我希望大家举手。不论你是正面跟负面,你都要举手,可以弃权。第一个问题,是不是计算机视觉的任务是需要解释的?回答是或者否。如果回答是的话,待会大家分享一下你觉得最重要的哪个任务,你希望看到研究人员把它解释出来。好不好?所以第一个任务是计算机视觉的任务是否需要解释。
纪荣嵘
我想咱们已经区分出了正方和反方,对吧?那接下来的话我想把时间、把话筒交给我们的嘉宾们,我们按照正方一个,反方一个,这样轮流表达观点,一人一分钟,好不好?
张拳石
我跟大家分享自己的一些思考。具体到神经网络,我个人的理解是,我们需要定量的评测网络的表达能力。现在很多方法都是定性的,给出一个人看出来正确的结果,而不是说严格定量,比如我要研究给出一个数值,你的特征里面有多少是能被解释的,有多少是不能被解释的,能被解释的特征,分别代表什么语义?是否是严格的?第二,它的语义是否清晰严格?这两个是非常重要的一个概念。如果我们有了一个清晰的语义,有严格的定量,那我们就可以用这些语义对神经网络进行诊断,这是第一方面。
第二方面,人脑里的信号实际上是很模糊、混沌的,但是我们交流过程中,我们说的每一句话都是有严格语义的,人自动地把人大脑里的信号变成一个有原则语义的系统,我在好奇这是一个什么样的机制,能不能把同样的机制对应到深度神经网络里面,就是说有没有一个自动的机制使得神经网络自己对自己的知识进行总结,这样才能相互交流,因为我们现在的深度学习只能用一千个、一万个样本去训练,我们能不能像教小孩一样,在语义层面上,告诉他,一个杯子有一个盖子,有个把儿,这是未来的一个发展方向。
纪荣嵘
接下来,我们让反方来表达一下观点。
山世光
我为什么站在反面?我不是为了辩论才选了反面,我是真的挺反对这件事情。我觉得很可能是我们人类很愚蠢,不能理解机器了。我们刚才很多讲者讲得非常非常好,但是基本上是把可解释性定义成“人可理解”,其实你们还加了一个假设,即:“现在的人”可以理解,现在的人可理解的事情很多可能都是错的,或者是说很多的解释或许在未来会更正确,所以这本身就是给自己加了一个非常强的假设。比如说,刚才林倞老师讲的GAN的可解释性的问题,你去问MIT的Torralba或周博磊博士,他们可能就不这么讲,他们在ICLR 2017上有一篇文章,把模型里面某个特定的neuron弄没了,生成的画面里面窗户就没了,等等,他们做了很多这样的工作。其实我们慢慢地对深度学习的理解越来越深刻了,刚开始时大家也没觉得它可以理解,我们现在对它的理解不断地在深化。就像刚刚瑞平举的例子,飞机刚开始造出来的时候我们觉得它不可理解,还不是当时那批人太愚蠢,不能理解?我觉得我们现在就是那批特别愚蠢的人,也不知道怎么搞出了这样一个模型,它效果就是好,我们就是不能理解,很可能就是我们现在的人可以理解的模型和方法在很大概率上不会正确地去表达,反而是说我们不能理解的东西有很多事情能够更好地去分析,这是我的一个观点,大家看看后面其他的观点继续去展开。
刘日升
我是正方,举个例子,比如有人发了一篇paper,我觉得它性能挺好,我想复现一下,但是他没有给我细节和代码,我就需要可解释这件事情,对于个人来说,这件事就是有意义的。所以我感觉,其实在深度学习这个领域,大家特别关心可解释性,原因在于如果方法有效,我们关心这些方法的可解释性,目的是希望更好的理解它work的真正原因和原理,进而可以用这个工具来解决更多的相关问题。所以我的感觉是说,在视觉里面,可解释性是很重要的,重要在我们解释清楚模型的工作原理之后,可以加上目的明确的去改进它,使得方法变得更好。
另一方面,虽然很多深度学习方法是一个黑盒子,但是它其实能拟合出来一些我们不太容易建模的复杂规律,这些规律可能就是没有办法找到一个明确的数学上或物理上的公式来刻画它,所以我们用像CNN这样一个可学习的模块去拟合这些规律就是合理的。接下来再往前走,可能我们真正需要构建的方法应该是一些灰色的盒子,也就是说 模型中需要有些地方我们是能解释清楚的,如对问题本质规律的描述,有些地方我们可能会解释不清楚,比如由于环境或者数据造成的不确定性或者未知的误差和噪声等,但是解释不清楚的部分我们也需要有一些工具去刻画它。当然,对于这些解释不清楚的规律,随着科学发展到达一定阶段之后,可能我们又出现了一些真正不是那么愚蠢的人,就可以把这个规律解释清楚了,那我们的研究就可以上升到了一个新的阶段了。对,我大概是这样感觉。
林宙辰
我唱黑脸做反方哈!刚才提到说AI要赢得信任,我觉得另一个根本的原因是现在的模型还不work,如果有个方法,它总是能work的话,我觉得大家可能不会再care它是否能被解释。我举个例子,今天早上,胡老师报告的时候,那个麦克风始终不停地嗡嗡响。如果它work的话,在这个地方就不会出现麦克风故障这个事情,所以刚才大家就都使劲想麦克风为什么会嗡嗡响,由此提了很多理论出来是吧?所以我觉得关键原因还是在于现在这些模型还不Work。以前大家没有关注可解释性这个问题,或者说这个问题不那么严重,是因为原来的方法根本就不work,所以大家也不关心这个事情。现在深度学习出来之后,它有时候work得很好,有时候又不怎么work,所以大家就产生疑惑了,它为什么有时候不work,为什么有时候会work得很好?所以两个极端情况下都会产生可解释性问题。
另一方面,我认为目前这个科学发展阶段,可解释性可能很难得到解决,大家可以去explore,但是有可能就停留在像刚才何旭明讲的,其实他那个PPT我就特别喜欢,就是一开始那个神学解释上面,我也觉得你们大概率也会停留在那个阶段上面。是的,你们是可以提出一个理论来解释一大堆东西,但是因为没有坚实的数学方面的支持,很可能只是一套形而上学的东西,好像能够自圆其说,但事实上并不能真正解决问题。所以刚才苏航抱怨说“为什么我的文章发表不了啊”,就是因为你没有真正地解决问题,我如果根据你的解释理论,performance立马提升5%,我觉得best paper直接就给你了,根本不用愁文章发不了嘛,是吧?
纪荣嵘
林老师说的听懂了,就是说这个现在的这个解释,我看很多人都是神棍对吧?类似于中世纪的神棍。
林宙辰
那可是你说的哈!但是可能过了100年,可解释性理论会上升到类似于相对论的阶段,但未来十年,成功的希望还是很小的。
林倞
我来扮演一下正方。我觉得我的观点很清楚,就是说看问题导向,有的需要解释,有的不需要解释,结果我发现世光和宙辰都偷换了概念,所以我就忍不住跳出来。就比如说宙辰讲的这个例子吧,你说这个话筒的好不好,如果我是发明话筒的人呢?我们是CV的研究者啊,我们不是CV的使用者。对于用户来说他当然不关心你这个CV模型好不好,只要你不会出错或者完全出错就OK了,对吧?
林宙辰
那得看可解释性问题是用户提出来的,还是你们研究者提出来的。
林倞
那我们是为用户提供方解决方案嘛,我们设计这个的话,肯定要考虑它怎么样会有回音的问题,不然你怎么卖出去呢?对不对?这是第一个。第二个,解释性做不好不代表我们不需要,荣嵘的问题是说我们需不需要,你们说是我们目前做不到或者是做不好,所以我们目前很愚蠢,可能解释的不对,甚至说停留在神论的层次,但是就算是神论的层次,它也是会驱动这个工作的发展,没有说是直接就会跳到这个数学的严谨的层面,我觉得这是一个过程,而且很多的研究在逐渐开始往这里去发展,我们应该看到,因为你自己也是数学出身,来研究CV的嘛。
林宙辰
现在又轮到反方了,我同意可解释性是应该研究的问题,但是我相信,随着这个时间的推移,你们这个可解释性的解释对象也会发生变化,现在是神经网络啊、深度网络啊,然后使劲地研究,可能过了十年之后,新的热点方法出来了,你们又去解释那些东西,这个神经网络本身还没解释清楚呢,你们又转移到别的阵地上去了。
郑伟诗
从某些方面来看,神经网络确实也不完全是一个黑盒,因为实际上我们能够写出它的公式,我们能够求导,所以它并不完全是black(黑的)。目前大量的神经网络更多是一个回归函数。但实际上它是非常复杂的,不是一个二次回归的函数,所以我们现在有时觉得很难解释它,其中一个很重要的方面是说它是很难控制的,很难控制它的优化过程。其实我们在二阶函数求导的时候,在做优化的时候,我们也存在这样的问题。针对这么一个高阶的函数求导的时候,实际上现在有很多machine learning基础的研究,也还在做这样的一个优化过程,因为他们也很难控制什么时候找到最优点,所以我觉得就这个CNN来说的话,它的公式是能写出来,它并不存在说我们看不到里面的结构是什么,而是我们没办法很好和精准控制它的优化过程,所以导致一会儿它很好,一会它不好。假如说我们找这个途径,从数学上能控制这种非凸函数优化过程,或许我们对于可解释问题会有新的想法。
纪荣嵘
我发现伟诗发言之后,现场气氛马上变成温和,刚才好像不是这样的。
那么接下来呢,我们进入第二个问题。在座各位,如果真的说有个老师愿意跟你们一起做可解释性的工作的话,你特别希望哪些网络或者哪个应用需要被解释,或者它有可能被解释。比如说我们都知道VGG和ResNet都是人工设计的,对吧?包括何凯明和其它一些相关的作者,这网络设计本身都已经有他自己的设计原则。那现在用NAS做出来的这个网络效果也非常好,这些网络我们都不知道它的结构到底怎么回事,所以我们会比较感兴趣哪些网络适合被解释,或者哪些应用适合被解释。比如说自动驾驶把人撞死了怎么办?到时候我们找谁去背锅?如果网络能背锅那是最好,对吧?背不了锅怎么办?这个问题可能不是正方、反方的这种对立的,希望各位老师能发发言,尤其是刚才没有发言的老师。
王井东
你其实刚才讲了两个问题,对吧?关于第二问题,其实刚才我也讲了,其实今天大公司里面都需要去做这件事情,你不去做这样的事情,人家不买你的产品,这是从商业的角度去考虑的。其实他们是真正心理上怎么想也不见得是,所以还是要做的。这个是从开发人员的角度去说可解释性的问题。从我们研究人员的角度来讲,我觉得可解释是需要做的。怎么去做这件事情我们要慎重,我在PPT里面讲得比较快,想要讲的信息比较多。就是你刚才讲,针对哪类的网络这件事情是很危险的。我为什么说不同意拳石说化学跟这个类比的问题,化学是自然存在的,你根本不能否定它,它一定是对的,对吧?只不过我们不知道,但是你要去解释这个网络这件事情很危险,你的网络对不对你不知道,只是目前结果好,你花大功夫去解释它。这个很危险的,但是不代表不去解释,解释的角度,不是说这个东西多么了不起,而是说你在这个基础上发现什么,这是我的一个点。解释是需要的,怎么解释,解释什么真的很重要。
张拳石
我虽然是正方,但我很同意刚才林老师的观点,现在解释方法很多都是一个研究员拍完脑袋,然后找一个方法去定性地解释一个现象。但我觉得,第二个问题是问哪一个应用或哪个神经网络需要被解释,我觉得最重要的不是具体应用或者具体哪一个神经网络,而是我们要回归到一个最基本的建模,就是说我们要提出一些定量化的标准,为此我们需要在数学底层去定义很多新的概念,比如说每一层的信息量、知识量,我们需要找到新的数学工具,从数学底层去构建一些东西,重新去定义一些新的概念,这样才能很solid地解决解释性问题。因为现在大家拍拍脑袋想一个新的想法,这样的结论是否能站得住脚,或者是否是一个solid的结论,这并不能成为深度学习未来发展的基础。就是说我们可能需要从底层对不同类型的神经网络,对不同的操作定义新的标准,然后去明确度量标准,这样才能慢慢去建立深度学习内部信息传递的一个理论。
纪荣嵘
这样,我穿插一个小故事,我来之前,我想怎么样说可解释性,我就想到了这个例子。大概在十年之前,我的师弟,就是这个专题的秘书孙晓帅,当年去黑龙江江边做项目,这是一个中俄边境巡查的项目,这项目干啥事呢?如果我们中国渔民的渔船,在江上跑到俄罗斯那边去捕鱼,俄罗斯就要把他抓起来,这就是国际争端。所以当年哈工大姚鸿勋老师,就是我导师,她接了个项目,做了个监控摄像头去照着江面上,希望中国渔民万一出去捕鱼时跑到了俄罗斯那边之前,咱们中国的水警先把人拦回来。我没有记错的话,当时我们用了一个云台,平台上有特别简单的模型,类似SVM,所以这个模型做完之后,我们测的数据,我们精确地知道它什么时候work,早上work,下午2点到4点不work,4点到6点又work了,为什么?所以这是一个很好的例子,我知道这个模型什么时候work,什么时候不work,我可以控制整个系统在什么时候可以起作用。但是很遗憾,我们现在面临这样一个时代,自动驾驶汽车撞死人的,我们都不知道为什么它会出错,所以我觉得这是一个很有意思的问题。
其实这暴露了我自己的观点,我是支持可解释性的,但是呢,我现在非常非常的犹豫,我个人预测未来2到3年之内,可能以NAS为主的这种自动模型搜索的方法会dominate大多数计算机视觉模型,到那个时候网络都不是人设计的,所以那时候怎么办?我们在这种AutoML跟NAS为主的这种自动设计的网络情况下,怎么样保证它的表示是有意义的,所以这点上我很想听大家的意见。
陈熙霖
如果我们期望所有的事情都是自动设计的网络。当我们真的要完成一个比现在能解决的问题再稍微复杂一点的任务,这时所需要的数据量比现在要增加多少倍?我相信当然可以通过网络来解决,就是再复杂的任务,大概都可以找一个网络结构,但是为了训练好这个网络,所需要的数据量将会暴涨。之所以今天我们还够用网络解决一些问题,是因为我们的数据量和计算能力都满足需求。可以设想如果过去我们做一个逼近直线的任务,现在的神经网络可以做逼近一个拐弯的任务,但是要拐两个弯的任务,我们所需要的数据量就已经可能需要增加一个数量级了,再以后如果需要拐三个弯、四个弯,这种直接扩大网络容量、增加训练数据的办法是不是还可以实现?
纪荣嵘
我接下来这个问题其实有点抽象,但是我觉得我经常用直白语言给他解释清楚,有没有可能可解释性可以带来我们现在的deep learning训练的过程,或者模型设计过程的优化,比如说陈老师说的,如果我知道这个网络哪些方面好,哪些方面不好,我对应的在不好的地方多费了一些数据,好的地方我们不再费数据了,这样可能使它变得更好。所以我希望大家能自由地发表观点,特别是刚才没有讲话的几位老师。
王井东
我先说一下,其实我不太同意你说AutoML和NAS这样的一个观点,这为什么呢?首先NAS其实对性能提高也没那么多,甚至不如说我把这数据做对了,而NAS还要花那么长的时间去train,还更大,这是第一件事情。第二件事情,因为我做了一些网络结构设计的工作,其实一直会被问这些问题,因为NAS的基础还是在于人类,你要有能力给个很好的搜索空间,基本上稍微做做,不需要怎么搜索,也可以做得很好。第三个就是NAS实际上还是帮助人做一些决策,就是我不知道这地方该不该连,连多了会怎么样,对吧?所以结果还像刚才瑞平说的,往压缩这方面走,其实我觉得NAS也许并不是像你说的那么的重要。这是我的一个看法。
谢晓华
我想表达下自己观点。我们刚才讨论了好几个问题,似乎忽略了一点,就是可解释性究竟要解释到哪种程度。包括纪老师您刚才讲的,你们知道你们的系统是什么时候work什么时候不work,但是从数学上你知道其原因吗?此外,在你的系统work的那个时间段,能保证其百分之百准确吗?我想这个肯定不能。所以有时候我们要讨论需要解释到哪种程度。另外一个相关的因素是系统运作的实际环境。以纪老师您提及的自动驾驶为例,我跟做自动驾驶的人也探讨过这个问题。以前他们在设计很多模型的时候,是把整个道路看成一个封闭的系统,车子的行驶轨迹也遵从稳定的模型假设,这时候系统的可解释性是很强的,很多事情我们都可以分析得很好,都知道一辆车在什么时候有多大概率会撞死人。但是在现实中,我们生活世界和交通是一个完全开放的系统,这就使得交通控制变得无解。所以说我们在讨论智能系统的可解释性的时候,需要讨论我们究竟要解释到哪种程度,且在哪种环境下工作。把这些定义好了,再去讨论可解释性可能更有价值一些,这是我的观点。
山世光
我想说一下,我很喜欢苏航老师对于可解释的三个不同的维度,那这三个维度,其实引出的另外一个问题就是:如何去对可解释性进行度量?比如说有十个模型,你怎么去比较哪个模型更可解释,另外一个模型更不可解释,或者说给这个模型的可解释性打10分,给那个模型打80分。我们到现在也没有一个measurement来去度量这类研究,我们该如何去量化的评价。刚才苏航老师说投稿总被毙,那从审稿人的角度来讲,可能就真的是因为他心里面对于什么叫可解释,可解释的程度,可能都有不同的理解。同一个模型,有些人觉得已经非常可解释了,甚至可能有些人说从数学上我能理解了,这就已经很可解释了。就很可能会出现了一些,某些人觉得可解释了,另外一些人却觉得还是不可解释这样一种状况,所以就会导致这样一个measurement的混乱,measurement的混乱就导致了审稿结果的随机,因为有些人觉得你已经做得很好,另外一些人却觉得你还是停留在原地踏步的这种状态。所以我觉得要想去把可解释发展成一个坚实的研究方向,那可能需要在这方面先完善好。
具体而言,可以把问题分分类,定义这类问题的可解释是这样子的,那类问题的可解释是那样的,甚至我觉得有些任务可能我们是不是真的没必要去做解释。我们所的卜东波老师有一个观点,大概是说dirty的任务、直觉性的任务可以交给这类黑盒子模型,也不要可解释,就直觉嘛,我们人类的直觉很多时候也不解释。当然这个观点也不一定对,但某些东西也许不需要有很强的可解释性。总之,我的观点就是对可解释要有一个可以度量的一个measurement,并定义好不同的问题类型。
鲁继文
我接着山老师的话说一下,刚才我是反方,因为我觉得现在计算机视觉任务很多时候做的是直觉式AI任务。这种直觉式任务很多时候我们用一个英语单词来讲就是heuristic。可解释这种东西,很多时候很多问题还没有定义好要解释什么?怎么去解释?如果我们真的把这个需要解释的问题完全明确了,那可能这个问题就解决了。大多数时候我们是做了一些努力,这些努力可能是在往可解释性这条路上走,很多时候不一定是能够被大家认可的
如果是真正做一些比较偏推理的视觉任务,我认为这类研究工作的可解释性是非常必要的。那问题在于现在谈到的可解释性这件事情,很多时候我们还不知道到底需要解释什么,解释什么东西,这个明确了之后我们才能更好地去解决怎么解释的问题,起码目前我认为仅仅研究深度特征的可解释性不一定是一条正确的路。
陈熙霖
我有一个comment,一开始荣嵘问大家选反方还是正方的时候,我选择站在反方,我站在反方的原因是因为提出的问题是:是不是视觉任务就一定要解释。我认为是分两种情形:一类是狭义的视觉任务,看到什么,认识什么,我认为不需要解释。但对另一种情形——只要是做到复杂的推理和认知的任务,就一定要可解释。举个例子,一个医生对一张医学影像做出诊断,那么医生看到的是现象,得到的是正常/异常的结论,什么样的现象能支持这个结论?这时候如果没有解释是不行的。我这里说的解释,更多的不是说对网络行为的解释,而是说对一个复杂任务结论的解释。所以这是两个层面上的问题。
如果试图解释一个网络结构,尤其像当今的CNN这类网络,从信号处理的角度看不就是个滤波器吗?过去是人为设计的滤波器,我们很清楚频率响应范围。现在的滤波器是通过数据学来的,针对训练的数据集得到的频带组合。回过头来看今天的CNN为什么遇到换个场景就不灵的问题?其实是偷换了概念。当我们把一个对象丢给一个网络去识别的时候,我们要把它归一化到某个大小,其实这里面包含了一个假设:这是摄影师拍的照片,所以他对于他关心的对象的视角是一定范围内的。在归一化的时候,其实是有这个尺度的因素。尺度直接是和频率有关系的。所以如果一个全局的和一个局部的对象在用一个未经尺度变换考虑的网络进行识别的时候,就会发现存在这个行那个不行的问题,如果不行,就把里面的对象截出来归一化。这就是尺度游戏。
大家还会疑问如何解释如pooling的操作?对pooling的解释,就是因为bandwidth不够,所以只能选最重要的部分,比如选最大值,其实这和过去做极大极小抑制在某种意义上是一个道理。
相比前面说的解释深度神经网络的行为,更需要的是对图像理解系统的解释,当我们要做一个类似VQA这样的任务时,模型给了你一些答案,为什么会有这样的答案。例如针对这图给出的一个答案说这个图像里面有一个人骑着马。如果再问人在哪里?它可能却不能指出来。我们需要的是人骑着马,人在哪里,马在哪里,他们之中有没有这种“骑”的关系。所以我关心的可解释是对更加复杂的视觉任务的解释。
林宙辰
我是反方,在传统的计算机视觉里,大家好像觉得没有可解释性的问题,其实对我来说,我觉得很多地方我就不理解,为什么就没有人给我解释一下。比如说LBP,这个特征搞了一大堆梯度方向再弄个直方图,那么这些操作究竟对应了什么,我觉得我就不能理解这些东西。
山世光
我来解释一下,这个可以非常好的解释出来,LBP就是一些微模式,每个微模式就是一个单词,统计LBP的直方图就是bag-of-word单词打包,就是在以某种形式实现一个非常简单的单词之间关系的语法。
林宙辰
好,那如果说神经网络也有这么一个解释法,我们大家是不是就能接受你刚才这个解释?
山世光
这就是为什么我说深度学习是有解释的,至少深度卷积神经网络是有解释的,我非常认同陈老师刚才说的观点,CNN其实也就是学到了一层层的局部微模式,而且高层组合低层的微模式形成越来越复杂的微模式,实现从低级语义到高层语义的层级抽象。
林宙辰
不对,神经网络不能解释,是因为它是好多个一阶差分的复合,复合到一定程度就不知道怎么回事了。
陈熙霖
不光是一阶差分了,现在学到的kernel是数据依赖的,这样大家就开始发慌了,不知道为什么学成这样。就像今天大家讨论VGG能不能有这个旋转不变性的时候,如果你给它一堆data,比如一模一样图像,就是把它做旋转,就给到网络中去训练,而且你告诉网络是一样的label,它最后就变成旋转不变的了。换句话说,像LBP这种方法,是我们设计了一个固定模式的机器,而CNN模型是靠后天学习的孩子,中国有句老话叫“跟好学好,跟叫花子学讨”。所以如果给它的是“学讨的数据”,网络最后就可能“学讨”去了。这就是今天我们希望解释性的原因。
山世光
从某个意义上来讲,CNN其实已经可解释了,但你要再想想,比如按照刚才陈老师所说的,你要从另外一个角度来说,它又不可解释,对吧?
林宙辰
我认为可解释性也依赖于人的认知的进步,比如说我经常跟我的学生讨论,我们现在的语汇跟100年前相比扩大了不知道多少倍了,所以很多事情在我们现在的这个词汇下面我们可以解释得很好。但是在100年前,因为我们没有引出、提出新的概念出来,所以如果要简洁地解释光电这些现象的话基本不可能。所以,我觉得可解释性也有可能随着时间的推移和科技的进步,慢慢就消失了,就不再是个问题了。如果要把可解释性作为公理的话,前提是你的performance得是非常稳定的,不能说一会好用一会儿不好用。
山世光
今天我们讨论可解释这个话题,我当初在提议这个题目的时候,心里其实想着一个很重要的点就是因果推理。如果不超越当前基于统计相关性的这套策略去做机器学习或者智能,还是局限于当前的相关性推理,一定会出现有狗就很大概率有草地,有黑人就有篮球等情况,这就是统计相关性给我们带来的推理结果。要超越相关,需不需要建立因果关系?我不知道大家怎么看,我自己在看朱迪亚·珀尔的书和理论。感觉他是非常极端的,当然极端可能只是他的一种话术,非常极端的去否定当前统计的这套东西,引起大家的重视。然后他认为一定要加一个do操作,do操作意味着不能像现在这样,从拿到的数据开始,而应该事先根据因果,把因果关系确定好了再去收集数据,收集数据之后,然后你再去做模型。当然这个是我非常粗浅的认识。这个东西,到底对不对?感觉老先生也挺孤独的,好像全球范围也没太多人跟踪他。我们要不要支持他?也去大力提倡因果关系推理的研究?
陈熙霖
我可能比较偏执,只信关联不信因果。我为什么讲只信关联不信因果呢?我们都说吸烟导致癌症,谁知道吸烟是烟里面的什么因素导致的癌症?就比如说A导致B和C,我们只可观察到B和C,而且每次都是B先发生C后发生,然后我们说B导致了C,但其实那个A你就不知道,这是我们讲因果的最常见的情形。就相当于我们先看到闪电后听见打雷,然后做出闪电造成打雷的断言一样,但其实闪电和打雷本身是放电后的两个modality,是一件事,那么谁是因?谁是果?所以我只承认关联,就是当我们关联到非常确定的时候,于是我们就有了所谓的知识,我们就按这个知识“骗”我们自己,然后组织起来“骗”后代,直到后代有人发现更加接近真相的因果(其实可能还是关联),然后去修正我们既有的知识。
鲁继文
我非常赞同陈老师的观点。那既然提到因果的话,我们现在所谓的因果学习应该是由因到果对吧?反过来,我们现在做的事情其实是由果溯因,先有这个果,然后去找这个因,更多时候找到的这个因与果对应不上。现在深度学习实际上就是数据和模型,我们现在搞一堆数据,然后从数据里面训练出一个深度模型,但是这个模型是不是对问题的一个很好的建模呢?这个我们不知道。目前因果推理的三个层次在尝试着解决关联与因果之间的关系,但是我认为可能不能从本质上解决问题,应该有不一样的因果推理框架。
王涛
刚才陈老师说的观点,他认可事务的关联性,然而我觉得关联只是一个表象,最根本的在起作用其实还是“原因”。表面的偶然、相关只是因为我们不知道看不见的原因,一切的事物的发生其实都是内在原因和外在环境条件下而缘起的。比如种了一颗种子,在适宜的环境下生长,最后这个种子必然会发芽长出一种植物而不是其他的什么物种。
大家也讨论了“为什么要可解释性”?我觉得可解释性就是要找到原因和条件。针对复杂的系统,我们不知道它具体怎么起作用的,但是我们可以把它大致过程解释出来,并发现它里面模块的结构性信息。这样我们就可以复用这些模块,调整它的系统结构与参数产生新的功用。就是刚才瑞平提到的利用可解释来提高性能或者改变功能。
另外一个重要方面是安全。比如说新出现的技术5G或者自动驾驶、疫苗,如果我们不知道它的原理,不能解释它为什么好,为什么可靠安全,大多数情况下很难敢冒险甚至广泛的应用。现在人脸检测,如果我们不了解他的数据采集和识别原理,我们在过安检的时候,会担心它对我们身体是不是有伤害,对我们的隐私是不是安全。所以我认为可解释性最主要的作用是功能和安全。
最后,大家讨论的公理问题。公理其实就是说大家觉得它一定成立,不用再解释了,或者在一定程度上不需要再深入探究原因了。比如说两点之间直线最近,朝目标直着走最近。烧开的水,一摸它就烫手,手不能碰开水。但是这些事情其实也是有条件的。比如直线最近,但是在宇宙中还有虫洞,通过虫洞钻过去就到了另外的空间。所以说任何事情都是有原因、有条件的,一个复杂系统需要进一步剖析,然后得出可解释性的结论来灵活、安全的使用。
林倞
关于因果我想说下不同的观点,我还是比较支持去搞因果的。我觉得陈老师刚才说这个“只信关联不信因果”,并没有办法自圆其说。假设说这个因果并不是真的是因果,很可能这个因果是假的,但并不代表我们不应该去做因果,就好像这个地心说和日心说,最早提出来的时候也解释了很多问题,然后我们发现一个现象不能解释,然后不断地去揭示新的规律,所以我认为正是因为追寻从关联到因果,才会有模型的不断进步,这跟解释性是一回事。不能说我们觉得现在人不够聪明,或者是数学能力不够好,大家自然而然的就不去做了。另一方面,朱迪亚·珀尔的文章和书我都有看,我自己最近也有些关于因果的文章老被拒,我知道这个因果理论它讲三种关系,第一种其实就是关联,他认为因果是包含关联的。然后第二个是what if,第三个是counterfactual,反事实分析,比如说我今天迟到,我昨晚要是不睡懒觉,我今天不会迟到,他有这些推断跟推演。
所以我认为这个其实很符合人的大脑的一些智能活动规律,也是一个社会发展自然的规律,我觉得我们不应该反对他。
山世光
所以我确实认为,虽然是从现在来看的话,统计可能会在很多任务上有效。但是因果其实还是背后比较本质的原理性的东西。特别是要用到生命科学或者是医疗领域的话,因果就更加重要了。
陈熙霖
但是现在医学里所找到的基本上都是关联,不是因果。
山世光
这背后的原因可能正是他们现在用的工具都是基于统计的。所以说医学这个领域,他们特别需要我们做机器学习的人、做人工智能的人,给他们提供能够有这种因果支撑的算法工具。从这点来讲,我其实是非常支持可解释性研究的。
林宙辰
我来补充一下,可解释性如果要取得真正突破性的进展,我坚信要有新的概念出来,就像电磁场这个东西,你提出了场这个概念之后,后边的推导、理解就摧枯拉朽了。所以说我们不能一直停留在神学的概念上面。我也经常跟学生说,有些奇怪的pattern出来,我可能是解释不了,那你就把它当成一个基元好了,就相当于刚才井东说的,这个pattern会经常出现,那么我就直接把它定义成新的概念就好了,然后你就可以进行一些适当的推演。
ACL 2020原定于2020年7月5日至10日在美国华盛顿西雅图举行,因新冠肺炎疫情改为线上会议。为促进学术交流,方便国内师生提早了解自然语言处理(NLP)前沿研究,AI 科技评论将推出「ACL 实验室系列论文解读」内容,同时欢迎更多实验室参与分享,敬请期待!
举报/反馈