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

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

640?wx_fmt=png

作者 | Yoshua Bengio, Tristan Deleu等
译者 | 刘畅,编辑 | Just
出品 | AI科技大本营(ID:rgznai100)
自 2012 年以来,深度学习的发展有目共睹,今年 3 月,为此做出巨大贡献的 Yoshua Bengio、Yann Lecun和Geofrey Hinton 一同获得了图灵奖。但现在,深度学习需要被进一步挖掘。

在最近一次采访中,图灵奖得主Bengio再次。

在他看来,除非深度学习能够超越模式识别并了解因果关系的更多信息,否则它将无法实现其全部潜力,也不会带来真正的AI革命。换句话说,深度学习需要开始知道事情发生的因果关系,这将使现有的 AI 系统更加智能,更加高效。

不过,对于深度学习未来发展的具体思路,AI 大佬们也有不同意见,在前几日,纽约大学教授。

不管怎样,Bengio 在研究深度学习可解释性方面已经出发了。今年年初,他其他研究者合作发表了《通过元迁移目标来学习理解因果关系》一文,提出了一种基于学习器适应稀疏分布变化速度的元学习因果结构,还生成了因果关系的综合数据集。

论文链接:
https://arxiv.org/pdf/1901.10912.pdf

640?wx_fmt=png

以下为这篇论文的主要内容要点,AI科技大本营(ID:rgznai100)编译:

本文提出了一种基于学习器适应稀疏分布变化速度的元学习因果结构,这些变化因素如干预,智能体的行为和其他不稳定因素。本文表明,在这种假设下,正确的因果结构选择会使学习器更快适应修改后的分布,因为当对所学知识进行适当模块化时,分布变化仅会集中在一种或几种机制中。这导致为了适应这种变化,需要重新学习梯度和一些自由度较低的参数。并将适应修改后分布的速度作为元学习目标的激励项。
本文阐述了如何将其用于确定两个观察到的变量之间的因果关系。分布的变化不需要对应于某种标准的干预(固定变量),并且学习器不会了解这些干预相关的知识。本文证明了因果结构可以通过连续变量和端到端的学习进行参数化。然后,本文探讨了如何将这些想法用于学习一种编码器,该编码器能将初级观察变量映射到未观察到的因果变量,从而导致更快的分布适应。它学习的是一种表示空间,在这种表示空间中,可以满足独立性以及微小和稀疏变化的假设。
引言

当目前的机器学习方法需要泛化到训练分布之外的场景时,模型的能力似乎很薄弱,而这通常是非常需要的。在与训练数据相同的分布相似的测试集上获得良好的泛化性能是不够的,我们还希望在一种数据集中学到的知识能够很好的泛化到其他相关的分布中。这些分布可能涉及模型之前所见的内容,而它的一些变化则是由智能体引起的。

更笼统地说,我们希望以前学到的知识形成一个丰富的基础,从中可以非常迅速地适应新的但相关的分布,即获得良好的迁移。可能模型必须学习一些新内容,但是由于它已经掌握了大多数其他相关内容(以及它们的组成方式),因此在迁移目标分布上,可以非常快速的完成学习。
没有任何假设,就不可能成功迁移到一个无关的分布上。在本文中,我们关注于以下假设:当以适当的模块化方式表示知识时,改变是稀疏的,即只有一个或几个模块更改了。当分布变化是由于一种或多种因素的作用引起的,这尤其相关,例如因果关系文献中讨论的干预措施,其中单个因果变量被限制在特定值。

总的来说,模型很难一次影响许多潜在的因果变量,尽管本文并不是关于模型学习,但这是我们建议在此处利用的一个特性,用于帮助发现这些变量它们之间的因果关系。
为了激发推断因果结构的需求,需要考虑可以实际执行或可以想象的干预。可以想象一下,由于一项干预措施,可能会改变相关变量的联合分布,即以前从未观察到过。这超出了迁移学习的范围,因此需要因果学习和因果推理。

为此,仅学习观测变量的联合分布是不够的。人们还应该对潜在的高级变量及其因果关系有足够的了解,以能够正确推断干预的效果。例如,A =下雨, 它会导致B =打开雨伞(反之亦然)。改变下雨的边缘概率(例如,因为天气变化)不会改变A和B的之间的关系(即P(B | A)),但会对边缘概率P(B)却产生了影响。相反,智能体对B(打开雨伞)的干预不会对A(下雨)的边缘分布产生影响。通常仅从(A,B)训练对中看不到这种不对称性,直到发生分布变化(例如由于干预引起的)。

这是本文的动机,在本文中,人们可以从不一定是已知的干预措施分布中学习,而不仅仅是获取一个联合分布,还可以发现一些潜在的因果结构。机器学习方法通常会利用某种形式的关于数据分布的假设。在本文中,我们不仅要考虑数据分布的假设,还要考虑其变化方式(例如,从训练分布转到迁移分布时,可能是由于某些智能体的行为造成的)。

我们建议基于这样的假设:当表示有关分布的知识时,其中的变化很小。之所以出现这种情况,是因为一个或几个基本事实机制的假设(但很难直接验证),会因为某种干预形式而改变。
我们如何利用这个假设?如果我们拥有正确的知识表示,那么从一个训练好的模型开始,我们应该能快速适应迁移的分布。之所以出现这种情况,是因为我们假设数据的生成过程是独立获得的,而且从训练分布到转移分布,几乎不需要改变真正的机制和参数。因此,捕获相应知识分解的模型仅需要进行一些更新和一些样例,即可适应迁移分布。

因此,基于正确知识表示空间的微小变化的假设,我们可以定义一个衡量适应速度的元学习目标,以便优化知识的表示,分解和结构化方式。这是本文提出的核心思想
请注意,当存在更多的非平稳性(即分布变化很多)时,可以获得更强的信号,就像在元学习中一样,通过更多的元示例获得更好的结果。通过这种方式,我们可以将通常被认为是机器学习中令人讨厌的东西(由于非平稳性,不受控制的干预等导致的分布变化)转化为训练信号,从而找到一种将知识分解为要素和知识的好方法。
在本文中,我们将通过对合成生成的数据进行特定的实验来探索上述想法,以便对其进行验证并证明存在利用它们的简单算法。但是,对我们来说很明显,将需要更多的工作来评估提出方法的多样性。设置以及具有不同的具体参数设置,训练目标,环境等。

我们从最简单的设置开始,并评估上述方法是否可用于了解因果关系的方向。然后,我们研究获得训练信号的关键问题,该训练信号关于如何将原始观测数据转换为表示空间,在该表示空间中,潜在变量可以通过具有稀疏分布变化的稀疏因果图来建模,并显示正确的编码器确实可以更好地实现我们期望的元学习目标的价值。
何为因?何为果?
作者在本节中考虑确定变量A是否导致变量B或反之的问题。学习器(模型)会从一对相关分布中观察训练样本(a,b),按照惯例,我们将其称为训练分布和迁移分布。请注意,仅基于来自单个(训练)分布的样本,通常A→B模型(A导致B)和B→A模型(反之亦然,请参见下面的公式(1))另请参见附录A中的理论论证和模拟结果。
为了突出提出的元学习目标的功能,我们考虑了很多可用于训练分布但不能用于迁移分布的样例。实际上,正如我们将在下面讨论的那样,如果我们可以访问更多短时迁移的样例,则推断出正确因果方向的训练信号会更强烈。

640?wx_fmt=png

学习带两个离散变量的因果关系图

我们需要比较两个假设(A→B与B→A)的性能,即两个模型在训练分布上进行训练后在迁移分布上的适应速度。我们将在此参数上假设简单的随机梯度下降,但是当然可以使用其他过程。在不失一般性的前提下,令A→B为正确的因果模型。为了使条件更强,可以考虑两个分布之间的变化等于原因A的真实P(A)值的随机变化(因为这会对效果B产生影响,并揭示因果关系方向)。我们不假定学习器(模型)知道进行了何种干预,这与更常见的因果发现和受控实验方法不同。我们仅假设发生了某些变化,然后尝试利用它来揭示结构性的因果信息。

适应迁移分布的实验

本文目前进行的实验是将正确因果模型的学习曲线与迁移模型上的因果模型的学习曲线进行了比较。对于来自不同但相关的迁移分布的数据,仅需几个梯度步骤,我们的元学习算法就可以获取至关重要的一些信息(信号)。为了展示这种适应的效果,仅使用迁移分布中的少量数据,本文对离散随机变量的模型进行了实验。如上图1。

640?wx_fmt=png
一个简单的参数计数能有助于我们理解图1中的观察结果。首先,考虑在适应迁移分布的阶段,指定不同模块参数的预期梯度,并对应于学习的元示例。作者提出了三个见解
见解1  对于在训练阶段已正确学习的模块参数,迁移分布相对于模块参数的预期梯度为零,并且具有正确的因果关系集合,对应于正确的因果图,如果(c)相应的正确条件分布没有从训练分布变为迁移分布。
640?wx_fmt=png
640?wx_fmt=png
见解2 上述公式(2)中迁移数据的负对数似然率的梯度。其结构参数由下式给出
640?wx_fmt=png
其中D2是迁移数据,而640?wx_fmt=png是假设A->B的后验概率。此外,这可以等效地写为
640?wx_fmt=png
其中640?wx_fmt=png是迁移数据D2上两个假设对数似然之间的差异。
见解3  640?wx_fmt=png随机梯度下降(适当降低学习率)趋向于
640?wx_fmt=png

作者通过附录及实验证实了上述三个见解,具体可以参见论文。
总结展望
作者使用非常简单的双变量设置,确定了学习器可以用适应观察数据分布稀疏变化的速率来选择或优化因果结构并解耦因果变量。基于这样的假设:在具有正确因果结构的情况下,这些分布变化是局部且稀疏的。本文通过理论结果和实验验证了这些想法。
这项工作只是基于修改分布速率优化因果结构的第一步。在实验方面,除了本文研究的设定外,还应考虑许多其他条件设定,包括各种参数设置,更丰富和更大的因果图,各种优化程序等。此外,由于我们在这一点上仅使用了具有单一自由度的最简单的编码器进行了实验,在探索如何学习更优的学习表达时,还需要更多的工作。扩充这些想法,便能应用于提升学习器处理非平稳性的分布,从而提高学习器的鲁棒性。

(*本文为 AI科技大本营编译文章,转载请微信联系 1092722531


精彩推荐



2019 中国大数据技术大会(BDTC)再度来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。5 折票倒计时 7 天!

640?wx_fmt=png

推荐阅读

640?wx_fmt=png

你点的每个“在看”,我都认真当成了AI

相关文章:

zepto打造一款移动端划屏插件

效果图 样式1 样式2 调用 正常情况下应该是后台生成的html代码&#xff0c;但还是写了一套操作tab页的方法 调用简便如下&#xff1a; <link rel"stylesheet" href"kslider.css" type"text/css"/> <script type"text/javascript&q…

swift使用xib绘制UIView

目标&#xff1a;用xib绘制一个UIView&#xff0c;在某个ViewController中调用。 三个文件&#xff1a;ViewController.swift DemoView.swift DemoView.xib 首先&#xff0c;可以专心将DemoView.xib画出来&#xff0c;别忘记DemoView.xib中UIView的一处设置 然后&#x…

吴恩达老师深度学习视频课笔记:深度卷积网络

Why look at case studies?&#xff1a;过去几年&#xff0c;计算机视觉研究中的大量研究都集中在如何把卷积层、池化层以及全连接层这些基本构件组合起来形成有效的卷积神经网络。找感觉最好的方法之一就是去看一些案例&#xff0c;就像很多人通过看别人的代码来学习编程一样…

测试工程师的好日子来啦?Testin发布AI测试产品,提升易用性和自动化效率

2019年10月26日&#xff0c;以"AI未来"为主题的第二届NCTS中国云测试行业峰会在北京国际会议中心正式开幕。在本次大会上&#xff0c;Testin 总裁徐琨正式发布测试业务Testin云测的全新AI产品iTestin。作为 Testin 人工智能战略中的重要一环&#xff0c;iTestin 融合…

Discuz DB层跨库映射关系表名前缀BUG修复后产生的新bug

新的逻辑引入了新的bug&#xff0c;会导致在跨多库连接时&#xff0c;产生表名前缀映射混乱&#xff0c;需要再做逻辑上的修复。 function table_name($tablename) {if(!empty($this->map) && !empty($this->map[$tablename])) {$id $this->map[$tablename];…

swift语言的Block

[cpp] view plaincopy// // blockDemo.swift // swiftDemo // // Created by apple on 14-6-29. // Copyright (c) 2014年 fengsh. All rights reserved. // import Foundation //无参无返回值 typealias funcBlock () -> () //或者 () -> …

吴恩达老师深度学习视频课笔记:目标检测

目标定位&#xff1a;如下图,图像分类任务就是算法遍历图像&#xff0c;判断其中的对象是不是car。图像定位分类(classification with localization)不仅要用算法判断图像中的是不是car&#xff0c;还要在图像中标记出car的位置。图像分类的思路可以帮助学习分类定位&#xff0…

国际顶级学界业界大咖云集,9 场技术论坛布道,2019 嵌入式智能国际大会强势来袭!...

2019 嵌入式智能国际大会即将来袭&#xff01;购票官网&#xff1a;https://dwz.cn/z1jHouwE2019年12月6日-8日&#xff0c;2019嵌入式智能国际大会将在深圳华侨城洲际大酒店举行。本次大会由哈尔滨工业大学&#xff08;深圳&#xff09;、清华大学国际研究生院、CSDN、嵌入式视…

Linux简介总结

1. Linux 就是Unix, 但是Unix 并不一定是Linux.2. 三种软件模式&#xff1a;商业软件&#xff0c;共享软件&#xff0c;自由软件。3. 为什么使用Linux? 它是一个自由软件。第一&#xff1a;可免费提供给任何用户使用。第二&#xff1a;它的源代码公开和可自…

Swift中编写单例的正确方式

本文由CocoaChina译者leon(社区ID)翻译自krakendev 原文&#xff1a;THE RIGHT WAY TO WRITE A SINGLETON 转载请保持所有内容和链接的完整性。 在之前的帖子里聊过状态管理有多痛苦&#xff0c;有时这是不可避免的。一个状态管理的例子大家都很熟悉&#xff0c;那就是单例。使…

C语言中的弱符号与强符号介绍

弱符号(Weak symbol)是链接器(ld)在生成ELF(Executable and Linkable Format,缩写为ELF&#xff0c;可执行和可链接格式&#xff0c;是一种用于可执行文件、目标文件、共享库和核心转储的标准文件格式。ELF文件有两种索引&#xff1a;程序标头中记载了运行时所需的段&#xff0…

Simple Transformer:用BERT、RoBERTa、XLNet、XLM和DistilBERT进行多类文本分类

作者 | Thilina Rajapakse译者 | Raku编辑 | 夕颜出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导读】本文将介绍一个简单易操作的Transformers库——Simple Transformers库。它是AI创业公司Hugging Face在Transformers库的基础上构建的。Hugging Face Transfor…

StarUML中时序图添加小人

转载于 http://blog.csdn.net/longyuhome/article/details/9011629 在看时序图的例子的时候&#xff0c;发现有些的时序图上有小人的图标&#xff0c;可是一些UML工具却没有找到小人的图标&#xff0c;这让我很闹心&#xff0c;一直没解决&#xff0c;今天终于将该问题给解…

Swift学习: 从Objective-C到Swift

作者&#xff1a;方秋枋&#xff08;GitHub&#xff09; 这篇文章是自己学习Swift的笔记与深化。希望这篇文章能够帮助已经有Objective-C经验的开发者更快地学习Swift。同时也品味到Swift的精妙之处。 结论放在开头:我认为Swift比Objective-C更优雅,更安全同时也更现代,更性感…

C/C++中static关键字用法汇总

1. 函数内static局部变量&#xff1a;变量在程序初始化时被分配&#xff0c;直到程序退出前才被释放&#xff0c;也就是static是按照程序的生命周期来分配释放变量的&#xff0c;而不是变量自己的生命周期。多次调用&#xff0c;仅需一次初始化。2. cpp内的static全局变量&…

CornerNet: 成对关键点物体检测 | CSDN博文精选

作者 | 贾小树来源 | CSDN博客文章目录1、论文总述2、使用锚定框的两个缺点3、角点检测比边界框中心或 proposals效果好的两个原因4、corner pooling5、用于Grouping Corners的 embedding vector的工作原理6、正负样本的分配方式&#xff08;改进的focal loss&#xff09;7、角…

PHP创建日志记录(已封装)

1 <?php2 3 class Logs{4 private $_filepath; //文件路径5 private $_filename; //文件名6 private $_filehandle; //文件引擎7 8 9 public function Logs($dir null,$filename null){ 10 11 $this->_filepath empty($dir) ? : $d…

如何用Swift实现一个好玩的弹性动画

本文由CocoaChina译者浅夏旧时光翻译自Raywenderlich 原文&#xff1a;How To Create an Elastic Animation with Swift 每个像样的iOS应用程序一定会有自定义元素、自定义UI以及自定义动画等等很多自定义的东西。 假如你想让你的应用脱颖而出&#xff0c;你必须花费一些时间为…

深入探讨Python的import机制:实现远程导入模块 | CSDN博文精选

来源 | Python编程时光&#xff08;ID:Python-Time&#xff09;所谓的模块导入&#xff0c;是指在一个模块中使用另一个模块的代码的操作&#xff0c;它有利于代码的复用。也许你看到这个标题&#xff0c;会说我怎么会发这么基础的文章&#xff1f;与此相反。恰恰我觉得这篇文章…

吴恩达老师深度学习视频课笔记:人脸识别

什么是人脸识别&#xff1a;人脸验证和人脸识别的区别&#xff0c;如下图&#xff1a;One-shot learning&#xff1a;人脸识别所面临的挑战就是需要解决一次学习(one-shot learning)问题。这意味着在绝大多数人脸识别应用中你需要通过单单一张图像或者单单一个人脸图像就能去识…

用小白鼠喝毒药

题设&#xff1a;有N瓶水&#xff0c;其中有一瓶水有剧毒&#xff0c;如果小白鼠喝了会在24小时的时候死亡。 问&#xff1a;用多少只小白鼠能够检测出哪瓶水有剧毒&#xff1f; 要求&#xff1a;用的小白鼠数量少并且用时要短&#xff0c;并给出合理的过程与结论。 我的解题思…

怎样在swift中创建CocoaPods

本文由yake_099&#xff08;博客&#xff09;翻译自raywenderlich&#xff0c;作者&#xff1a;Joshua Greene 原文&#xff1a;How to Create CocoaPods with Swift 你可能对一些比较著名的开源的CocoaPods框架比较熟悉&#xff0c;比如Alamofire、MBProgressHUD。但是有时你…

吴恩达老师深度学习视频课笔记:神经风格迁移(neural style transfer)

什么是神经风格迁移(neural style transfer)&#xff1a;如下图&#xff0c;Content为原始拍摄的图像&#xff0c;Style为一种风格图像。如果用Style来重新创造Content照片&#xff0c;神经风格迁移可以帮你生成Generated图像。深度卷积网络在学什么&#xff1a;如下图&#xf…

“Jupyter的杀手”:Netflix发布新开发工具Polynote

作者 | Michael Li 译者 | Rosie 编辑 | Jane 出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导读】10 月 29 日&#xff0c;Netflix 公开了他们内部开发的 Polynote。现如今&#xff0c;大型高科技公司公开其内部的工具或服务&#xff0c;然后受到业界…

System Center 2012 r2优点

System Center 2012System Center2012 是一个全面的管理平台&#xff0c;可帮助你轻松、高效地管理数据中心、客户端设备和混合云 IT 环境。为您提供了针对私有云、托管云和公有云基础结构和应用程序服务的通用管理工具集。可按照您的需求&#xff0c;为生产基础架构、可预期应…

Swift 闭包表达式

闭包是功能性自包含模块,可以在代码中被传递和使用。 Swift 中的闭包与 C 和 Objective-C 中的 blocks 以及其他一些编程语言中的 lambdas 比较相似。 闭包的形式主要有三种&#xff1a; 1. 全局函数是一个有名字但不会捕获任何值的闭包 2. 嵌套函数是一个有名字并可以捕获其封…

GNU AWK中BEGIN/END使用举例

以下是使用gnu awk将test.cpp文件拆分成两个文件a.cpp和b.cpp&#xff0c;其中b.cpp仅存放test.cpp中的数据&#xff0c;其它内容存放在a.cpp文件中。test.cpp内容如下&#xff1a; #include <stdio.h> #include <iostream> #include <string>int main() {//…

目标检测的渐进域自适应,优于最新SOTA方法

作者 | Han-Kai Hsu、Chun-Han Yao、Yi-Hsuan Tsai、Wei-Chih Hung、Hung-Yu Tseng、Maneesh Singh、Ming-Hsuan Yang译者 | 刘畅编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导读】目标检测的最新深度学习方法依赖于大量的边界框标注信息…

讨论下IDS的绕过

自从知道dedecms自带了80sec的内置Mysqlids后&#xff0c;一直以来也没有想到绕过的办法。或者是自己mysql的根底太差了吧。于是分析dedecms源码时&#xff0c;只找模板执行&#xff0c;本地包含&#xff0c;上传等&#xff0c;完全没有想到注入存在的可能性了。 可以看看某牛的…

GCC编译选项参数介绍

gcc和g分别是gnu的c和c编译器&#xff0c;下面是整理的常用编译选项参数&#xff1a; #(1). -x: 设定文件所使用的语言&#xff0c;使文件后缀名无效&#xff0c;如下&#xff0c;执行完后生成test.o gcc -c -x c test.jpg #(2). -c: 只编译生成目标文件即*.o,只编译不链接生成…