当前位置: 首页 > 编程日记 > 正文

上海交大张拳石:神经网络的可解释性,从经验主义到数学建模

640?wx_fmt=jpeg


作者 | 张拳石

来源 | 转载自知乎Qs.Zhang张拳石


本来想把题目取为“从炼丹到化学”,但是这样的题目太言过其实,远不是近期可以做到的,学术研究需要严谨。但是,寻找适当的数学工具去建模深度神经网络表达能力和训练能力,将基于经验主义的调参式深度学习,逐渐过渡为基于一些评测指标定量指导的深度学习, 是新一代人工智能需要面对的课题,也是在当前深度学习浑浑噩噩的大背景中的一些新的希望。


这篇短文旨在介绍团队近期的ICML工作——”Towards a Deep and Unified Understanding of Deep Neural Models in NLP”(这篇先介绍NLP领域,以后有时间再介绍类似思想解释CV网络的论文)。这是我与微软亚洲研究院合作的一篇论文。其中,微软研究院的王希廷研究员在NLP方向有丰富经验,王老师和关超宇同学在这个课题上做出了非常巨大的贡献,这里再三感谢。


大家说神经网络是“黑箱”,其含义至少有以下两个方面:一、神经网络特征或决策逻辑在语义层面难以理解;二、缺少数学工具去诊断与评测网络的特征表达能力(比如,去解释深度模型所建模的知识量、其泛化能力和收敛速度),进而解释目前不同神经网络模型的信息处理特点。


过去我的研究一直关注第一个方面,而这篇ICML论文同时关注以上两个方面——针对不同自然语言应用的神经网络,寻找恰当的数学工具去建模其中层特征所建模的信息量,并可视化其中层特征的信息分布,进而解释不同模型的性能差异。


其实,我一直希望去建模神经网络的特征表达能力,但是又一直迟迟不愿意下手去做。究其原因,无非是找不到一套优美的数学建模方法。深度学习研究及其应用很多已经被人诟病为“经验主义”与“拍脑袋”,我不能让其解释性算法也沦为经验主义式的拍脑袋——不然解释性工作还有什么意义。

研究的难点在于对神经网络表达能力的评测指标需要具备“普适性”和“一贯性”。首先,这里“普适性”是指解释性指标需要定义在某种通用的数学概念之上,保证与既有数学体系有尽可能多的连接,而与此同时,解释性指标需要建立在尽可能少的条件假设之上,指标的计算算法尽可能独立于神经网络结构和目标任务的选择。


其次,这里的“一贯性”指评测指标需要客观的反应特征表达能力,并实现广泛的比较,比如


  1. 诊断与比较同一神经网络中不同层之间语义信息的继承与遗忘;

  2. 诊断与比较针对同一任务的不同神经网络的任意层之间的语义信息分

  3. 比较针对不同任务的不同神经网络的信息处理特点。


具体来说,在某个NLP应用中,当输入某句话x=[x1,x2,…,xn]到目标神经网络时,我们可以把神经网络的信息处理过程,看成对输入单词信息的逐层遗忘的过程。即,网络特征每经过一层传递,就会损失一些信息,而神经网络的作用就是尽可能多的遗忘与目标任务无关的信息,而保留与目标任务相关的信息。于是,相对于目标任务的信噪比会逐层上升,保证了目标任务的分类性能。


我们提出一套算法,测量每一中层特征f中所包含的输入句子的信息量,即H(X|F=f)。当假设各单词信息相互独立时,我们可以把句子层面的信息量分解为各个单词的信息量H(X|F=f) = H(X1=x1|F=f) + H(X2=x2|F=f) + … + H(Xn=xn|F=f). 这评测指标在形式上是不是与信息瓶颈理论相关?但其实两者还是有明显的区别的。信息瓶颈理论关注全部样本上的输入特征与中层特征的互信息,而我们仅针对某一特定输入,细粒度地研究每个单词的信息遗忘程度。


其实,我们可以从两个不同的角度,计算出两组不同的熵H(X|F=f)。(1)如果我们只关注真实自然语言的低维流形,那么p(X=x|F=f)的计算比较容易,可以将p建模为一个decoder,即用中层特征f去重建输入句子x。(2)在这篇文章中,我们其实选取了第二个角度:我们不关注真实语言的分布,而考虑整个特征空间的分布,即x可以取值为噪声。在计算p(X=x,F=f) = p(X=x) p(F=f|X=x)时,我们需要考虑“哪些噪声输入也可以生成同样的特征f”。举个toy example,当输入句子是"How are you?"时,明显“are”是废话,可以从“How XXX you?”中猜得。这时,如果仅从真实句子分布出发,考虑句子重建,那些话佐料(“are” “is” “an”)将被很好的重建。而真实研究选取了第二个角度,即我们关注的是哪些单词被神经网络遗忘了,发现原来“How XYZ you?”也可以生成与“How are you?”一样的特征。


这时,H(X|F=f)所体现的是,在中层特征f的计算过程中,哪些单词的信息在层间传递的过程中逐渐被神经网络所忽略——将这些单词的信息替换为噪声,也不会影响其中层特征。这种情况下,信息量H(X|F=f)不是直接就可以求出来的,如何计算信息量也是这个课题的难点。具体求解的公式推导可以看论文,知乎上只放文字,不谈公式。


首先,从“普适性”的角度来看,中层特征中输入句子的信息量(输入句子的信息的遗忘程度)是信息论中基本定义,它只关注中层特征背后的“知识量”,而不受网络模型参数大小、中层特征值的大小、中层卷积核顺序影响。其次,从“一贯性”的角度来看,“信息量”可以客观反映层间信息快递能力,实现稳定的跨层比较。如下图所示,基于梯度的评测标准,无法为不同中间层给出一贯的稳定的评测。



640?wx_fmt=jpeg



下图比较了不同可视化方法在分析“reverse sequence”神经网络中层特征关注点的区别。我们基于输入单词信息量的方法,可以更加平滑自然的显示神经网络内部信息处理逻辑。


640?wx_fmt=jpeg


下图分析比较了不同可视化方法在诊断“情感语义分类”应用的神经网络中层特征关注点的区别。我们基于输入单词信息量的方法,可以更加平滑自然的显示神经网络内部信息处理逻辑。



640?wx_fmt=jpeg




基于神经网络中层信息量指标,分析不同神经网络模型的处理能力。我们分析比较了四种在NLP中常用的深度学习模型,即BERT, Transformer, LSTM, 和CNN。在各NLP任务中, BERT模型往往表现最好,Transformer模型次之。


如下图所示,我们发现相比于LSTM和CNN,基于预训练参数的BERT模型和Transformer模型往往可以更加精确地找到与任务相关的目标单词,而CNN和LSTM往往使用大范围的邻接单词去做预测。


640?wx_fmt=png


进一步,如下图所示,BERT模型在预测过程中往往使用具有实际意义的单词作为分类依据,而其他模型把更多的注意力放在了and the is 等缺少实际意义的单词上。



640?wx_fmt=jpeg



如下图所示,BERT模型在L3-L4层就已经遗忘了EOS单词,往往在第5到12层逐渐遗忘其他与情感语义分析无关的单词。相比于其他模型,BERT模型在单词选择上更有针对性。



640?wx_fmt=jpeg



我们的方法可以进一步细粒度地分析,各个单词的信息遗忘。BERT模型对各种细粒度信息保留的效果最好。

640?wx_fmt=jpeg


十多年前刚刚接触AI时总感觉最难的是独立找课题,后来发现追着热点还是很容易拍脑袋想出一堆新题目,再后来发现真正想做的课题越来越少,虽然AI领域中学者们的投稿量一直指数增长。


回国以后,身份从博后变成了老师,带的学生增加了不少,工作量也翻倍了,所以一直没有时间写文章与大家分享一些新的工作,如果有时间还会与大家分享更多的研究,包括这篇文章后续的众多算法。信息量在CV方向应用的论文,以及基于这些技术衍生出的课题,我稍后有空再写。


作者介绍:


张拳石,上海交通大学副教授。2009年获北京大学机器智能学士学位,并于2011年和2014年获得日本东京大学空间信息科学中心理科硕士和博士学位。2014年至2018年,他是加州大学洛杉矶分校的博士后研究员,师从朱松纯教授。他的研究兴趣涵盖计算机视觉和机器学习。目前,他正在领导一个可解释AI小组,相关主题包括可解释神经网络、预训练神经网络解释,以及无监督/弱监督学习。


原文链接:https://zhuanlan.zhihu.com/p/67831834


(*本文为 AI科技大本营转载文章,转载请联系原作者)


精彩推荐


参与投稿加入作者群,成为全宇宙最优秀的技术人~


640?wx_fmt=png


大会开幕倒计时5天!


2019以太坊技术及应用大会特邀以太坊创始人V神与众多海内外知名技术专家齐聚北京,聚焦区块链技术,把握时代机遇,深耕行业应用,共话以太坊2.0新生态。即刻扫码,享优惠票价。


640?wx_fmt=png


推荐阅读

  • 6月技术福利限时免费领

  • 2019年技术盘点容器篇(一):听UCloud谈风生水起的K8S | 程序员硬核评测

  • 异类框架BigDL,TensorFlow的潜在杀器!

  • 吐血总结!100个Python面试问题集锦(上)

  • 5G 时代,微软又走对了一步棋!

  • LinkedIn最新报告: 区块链成职位需求增长最快领域, 这些地区对区块链人才渴求度最高……

  • 写代码不严谨,我就不配当程序员?

  • 碾压Bert?“屠榜”的XLnet对NLP任务意味着什么

  • 如何向妹子解释:为啥 5G 来了需要换 SIM卡!


640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

相关文章:

计算机网络模型到底是七层?五层?四层?

1.Introduction 本篇文章的初衷是在做Android网络开发时经常接触各种协议,比如HTTP、XMPP、HLS、RTSP、TCP等协议,对网络的模型和层次有个直观的了解可以做到心中有数。OSI参考模型是七层,TCP/IP模型是四层,计算机网络&#xff08…

【推荐】使用Ultrapico Expresso学习正则表达式

推荐理由Ultrapico Expresso是我工作中经常使用的一个非常强大的正则表达式构建、测试以及代码生成工具。它能够对你构建的正则表达式进行解析、验证,并输出解析结果,提供性能测试工具,支持C#、VB等代码生成,最重要的是&#xff0…

OpenCV中常用到的轮廓处理函数汇总

转自:http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_cv.cn.htm ApproxChains 用多边形曲线逼近 Freeman 链 CvSeq* cvApproxChains( CvSeq* src_seq, CvMemStorage* storage,int methodCV_CHAIN_APPROX_SIMPLE,double parameter0, int mi…

《Linux内核原理与分析》第二周作业

反汇编一个简单的C程序 1、实验要求 使用: gcc –S –o test.s test.c -m32 命令编译成汇编代码,对汇编代码进行分析总结。其中test.c的具体内容如下: int g(int x) {return x 3; }int f(int x) {return g(x); }int main(void) {return f(8)…

首次!腾讯全面公开整体开源路线图

6月25日,由Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会在上海举办,腾讯开源联盟主席、腾讯开源管理办公室委员、Apache Member堵俊平首次公开了腾讯整体的开源战略路线图。 堵俊平表示:“腾讯开源提倡‘开放、共享、合力…

201771010111李瑞红《面向对象的程序设计》第八周实验总结

实验八接口的定义与使用 实验时间 2018-10 理论部分 6.1 接口:用interface声明,是抽象方法和常量值定义的集 合。从本质上讲,接口是一种特殊的抽象类。 在Java程序设计语言中,接口不是类,而是对类 的一组需求描述,由常…

崛起的Python,真的影响了76万人?

随着AI的兴起,Python彻底火了。据Stack Overflow调研报告:Python的月活用户已超越了Java、成为第一,全民Python已为“大势所趋”。那么,程序员有必要学Python吗?如何高效掌握Python?程序员为啥要学Python&a…

OpenCV查找轮廓

转自:http://westice.javaeye.com/blog/721225 主要函数是 cvFindContours(tour_buf,storage,&contour,sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); tour_buf 是需要查找轮廓…

非阻塞socket的连接

引用自:http://blog.csdn.net/cccallen/article/details/6619994 连接套接字,阻塞的套接字超时时间很长无法接受,而是用非阻塞套接字时使用的方案也有多种。后者是个比较好的方法 方案1:不断重试,直到连接上或者超时&a…

OpenCV下车牌定位算法实现代码

转自:http://blog.csdn.net/heihei723/archive/2006/05/14/728046.aspx#FeedBack 车牌定位算法在车牌识别技术中占有很重要地位,一个车牌识别系统的识别率往往取决于车牌定位的成功率及准确度。 车牌定位有很多种算法,从最简单的来&#xff0…

2018-2019-1 20165310 20165315 20165226 实验一 开发环境的熟悉

2018-2019-1 20165226 20165310 20165315 实验一 开发环境的熟悉 目录 一、实验目的 二、实验步骤 三、实验过程中遇到的问题及解决 四、实验感想 一、实验目的 熟悉Linux开发环境并学会Linux开发环境的配置和使用,熟悉arm箱的使用,熟悉以下知识点&#…

上海居民被垃圾分类逼疯!这款垃圾自动分类器也许能帮上忙

作者 | 视说君来源 | 授权转载自视说AI(ID:techtalkai)让垃圾自动分类近期垃圾分类成为了一个热门话题,原来直接一次性扔掉的垃圾,现在都需要分门别类进行投放。从今年7月1日起,新的《上海市生活垃圾管理条例》正式开始…

虽被BERT碾压,但还是有必要谈谈BERT时代与后时代的NLP

作者 | 吴金龙,爱因互动技术合伙人,算法负责人来源 | 授权转载自AINLP(ID:nlpjob)2018年是NLP的收获大年,模型预训练技术终于被批量成功应用于多项NLP任务。之前搞NLP的人一直羡慕搞CV的人,在ImageNet上训练…

C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组

转自:http://hi.baidu.com/ctralt/blog/item/cde79fec87f841302697911c.html fstream提供了三个类,用来实现c对文件的操作。(文件的创建、读、写)。ifstream -- 从已有的文件读 ofstream -- 向文件写内容 fstream - 打开文件供读写…

Exchange 2007迁移2010时的公用文件夹多个公用树错误

近期在项目中,客户Exchange 从2007迁移到2010,Microsoft Exchange从2007开始就逐渐弱化了公用文件夹,outlook 2007和2010都不需要使用到公用文件夹了。但客户现状存在90%的outlook 2003客户端,因此需要使用到公用文件夹。在Exchan…

约瑟夫环问题的两种解法(详解)

约瑟夫环问题的两种解法(详解) 题目: Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓。于是决定了自杀方式,41个人排成一个圆圈,由第1个…

Linux下多播的配置【十全十美】

单播地址标识单个IP接口,广播地址标识某个子网的所有IP接口。多播地址表示某一组IP接口,单播和广播是寻址方案中的两个极端(要么单个要么全部),多播则意在两者之间提供一种折中方案。多播是用于建立分布式系统的重要工具,例如&…

CvSeq相关函数

转自:http://hi.baidu.com/pengjun/blog/item/a72fc8ea030e79d4d439c906.html 函数原型说明CvSeq* cvCreateSeq(int seq_flags,int header_size,int elem_size,CvMemStorage* storage)功能:创建一序列 参数:seq_flags为序列的符号标志。如果序…

10月份机房技术指标

下载syslinux,dhcp,http,tftp-serveryum -y install syslinux dhcp httpd tftp-serveryum -y install system-config-kickstart挂载sr0是镜像用system-config-kickstart工具来生成一个自动的安装的配置文件ip填自己的ip地址。目录填挂载光盘的…

5G时代,微软又走对了一步棋!

2019年4月,CSDN采访微软(中国)首席技术官韦青,期间谈到5G。他认为,5G绝对是一个划时代的革命性突破,但是这个突破不止于现在所说的“5G”通讯技术,它为未来以“万物互联”为基础的智能社会开创了…

6426C Lab3 部署证书和管理注册

共有4个练习:练习1:配置证书模板练习2:配置自动注册练习3:管理证书 Revocation练习4:配置Key Recovery练习1:任务1:复制、安装和手动注册一个证书1. 转到HQDC1.contoso.com服务器,添…

CreateStructuringElementEx

转自:http://baike.baidu.com/view/4819443.htm CreateStructuringElementEx 创建结构元素 IplConvKernel* cvCreateStructuringElementEx( int cols, int rows, int anchor_x, int anchor_y, int shape, int* valuesNULL ); cols 结构元素的列数目 rows 结构…

阿里AI再摘一冠,大幅提高视觉对话世界纪录

近日, 在第二届视觉对话挑战赛Visual Dialogue Challenge中,阿里AI击败了微软、首尔大学等十支参赛队伍,获得冠军。 (阿里AI在视觉对话竞赛中得冠)视觉对话竞赛由美国佐治亚理工大学、Facebook人工智能实验室&#xff…

OSChina 周一乱弹 —— 嫂子我帮你们照顾放心吧

2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 clouddyy :#每日一歌# 《绿光 - 孙燕姿》 《绿光》 - 孙燕姿 手机党少年们想听歌,请使劲儿戳&#xff0…

十一月工作小记--上线前的冲刺

加班不是目的,重要的是找到加班的意义。尽管程序猿们有很多个不愿意,他们却依然要面对加班的现实。加班就是程序猿们生活中的一张牌,既然不能决定这张牌是什么,那就想想如何去打好这张牌吧。本月,我们的生活依然是那么…

Java跌落神坛,Python继续夺冠....凭啥?

编程语言流行指数(PYPL)排行榜近日公布了2019年6月份榜单。相比 5 月编程语言榜单,Python 不仅超过了 C,成功占据第三名位置,还以 2.77% 的涨幅成为增速最快的编程语言,与此同时,拥有 8.53% 份额的 Python 达到了 TIOB…

opencv实现二值图像细化的算法

转自:http://blog.csdn.net/byxdaz/archive/2010/06/02/5642669.aspx 细化算法通常和骨骼化、骨架化算法是相同的意思,也就是thin算法或者skeleton算法。虽然很多图像处理的教材上不是这么写的,具体原因可以看这篇论文,Louisa Lam…

@芥末的糖----------《管理系统后台架构逻辑》

mongo逻辑 //1.创建mongoose对象链接数据库,并暴露 var mongoose require(mongoose) mongoose.connect(mongodb://localhost:27017/lagou, {useNewUrlParser: true })var db mongoose.connection db.on(error, console.error.bind(console, connection error:)) d…

PHP函数之无极分类

无极分类属于现在比较难攻克的一关,现在就把代码贴出来,有需要的朋友可以根据实际需要扩展一下。 //假设分类关系为“ 地球”(id为1,父id为0),“国家”(id为2,父id为1)&a…

我发现了一个非常酷的软件,用自然语言编程!

作者 | 刘欣,前IBM架构师,用15年的技术工作经验去总结提炼,以故事讲解技术本质,让大家看过以后有一种“原来如此”的感觉。来源 | 码农翻身(公众号id:coderising)周六晚上10点半, 张…