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

后深度学习时代的一大研究热点?论因果关系及其构建思路

作者 | Bernhard Schölkopf

译者 | Kolen

编辑 | Jane

出品 | AI科技大本营(ID:rgznai100)

尽管机器学习在现阶段取得了很大成功,但是相比于动物所能完成的工作,机器学习在动物擅长的关键技术上表现不尽人意,比如问题迁移能力、泛化能力以及思考能力,因为机器学习通常会忽略大量常用的信息。

近年来,由于因果关系可以让模型更稳定和健壮,在机器学习领域得到了越来越多的关注。本文阐述了一些将因果关系和机器学习结合的想法,并勾勒出一个更大的蓝图,希望它不仅可以对讨论因果关系于AI的重要性这一问题有所帮助,还可以介绍一些图形或结构因果关系模型的相关概念。

1、信息处理的机械化

第一次工业革命由蒸汽机和水力引发,第二次由电气化驱动,两者都与如何获取和转换不同形式的能量有关。有人认为我们现正处于一场新的革命,在这场革命中,信息代替了能量。同能源一样,信息也可以经人处理,同时也可能是个守恒的量,而且信息守恒也可能是和能量守恒一样,是对称的结果。当然,信息和能源也并非可完全类比,比如特定的机器学习算法和计算资源,可以复制扩展到数据集,从而其他人可以从数据集中提取相同的信息,而能量只能使用一次。

类似于能源革命,当目前的革命可以分为两个阶段:第一阶段是计算机、高级编程语言和计算机科学的诞生,另一个则是我们目前正在经历的依赖于学习的阶段。它允许从非结构化数据中提取信息,并且可以自动从数据中推断规则,而不是依靠人类来构思和编程这些规则。Judea将经典AI与概率论相结合的方式,这同时也催生了图形化模型,但是该模型很大程度上没有关注因果语义。近年来,机器学习与因果关系之间已经出现了真正的联系,我们认为如果想在AI的主要开放性问题上取得进展,这些因果联系将至关重要。

2、从统计模型到因果模型

由独立同分布(IID)数据驱动的方法  目前机器学习领域的工作大多数是基于独立同分布(IID)的数据集。对于IID数据,是统计学习理论应用的强普适一致性结果,它能够保证学习算法(比如最近邻分类器和SVM)收敛到最低可实现的风险。但是当违背IID假设时,机器学习模型的效果往往很差。目前的实践(解决IID基准问题)以及大多数理论结果(关于IID环境中的泛化)都未能解决跨问题泛化的开放性难题。当我们不再研究观测分布,而是研究某些变量或机制发生变化的分布,这就到了因果关系模型的领域。

Reichenbach提出了共同原因原理:如果两个观测值X和Y在统计上是相依的,那么就存在一个变量Z,它们对因果关系都有影响,并且解释了在Z条件下使它们独立的意义上的所有依赖性。其关键的见解在于,如果没有额外的假设,就无法用观测数据来区分这三种情况。因此因果模型所包含的信息是要多于统计模型的。

实际上,更多可观测的情况会使问题变得更容易解决,因为在这种情况下,因果结构隐含着特殊的条件独立属性。这些可以通过使用将概率图形模型和干预的概念结合起得因果图或结构因果模型的语言来描述。

结构因果模型(SCM)  结构因果模型(SCM)结合了图形建模、结构方程、反事实和介入逻辑。SCM“推理引擎”通常将假设(以图形模型的形式)、数据和查询作为输入。我们可以使用这些工具正式表达因果问题,以图解和代数形式编纂我们现有的知识,然后利用数据来估计答案。此外,当现有知识状态或现有数据不足以回答我们的问题时,这个理论会警告我们,然后建议其他知识或数据来源,让问题变得可回答。

3、因果模型的层次

微分方程是对系统的相当完整的描述,统计模型可以看作是比较肤浅的模型。统计模型通常告诉我们只要实验条件不变,一些变量如何允许预测其他变量。它不允许我们预测干预措施的效果,但是它的优势在于可以从数据中学习。因果模型则位于这两个极端之间,它旨在提供理解并预测干预措施的效果。因果发现和学习试图仅使用弱假设,以数据驱动的方式得出这样的模型。如表1所示最详细的模型(顶部)是机械模型或物理模型,通常用微分方程表示。底部是一个可以从纯粹从数据中学习出的统计模型。因果模型可以看作是介于两者之间的描述,从物理现实主义中抽象出来,同时保留了回答某些干预性或反事实性问题的能力。

表1:模型的简单分类法

4、独立的因果机制

每当我们感知到一个物体时,我们的大脑都会做出这样的假设:该物体及其所包含的信息到达我们的大脑的机制是独立的。然而我们可以从特殊角度看待这个物体从而来推翻上述假设:就Beuchet椅子而言(如下图),我们认为椅子的三维结构实际上并不存在。当我们考虑系统中的干预措施时也是如此,为了使模型能够正确预测添加干预后的效果,模型必须具有鲁棒性。

图1:Beuchet椅子,由两个单独的对象组成,当从特殊的视角观看时,它们看起来像椅子,这违反了对象和感知过程之间的独立性。

这种分布的变化总是由这些机制中的至少一个的变化引起。根据独立性原则,我们假设较小的变化倾向于以稀疏或局部的方式表现出来,即它们通常不应同时影响所有因素。相反,如果我们考虑到一个非因果因素,由于我们改变了系统的统计依赖性,那么这些条件将同时受到影响。

机制依赖程度实际上,在因果图中,即使所有机制都是独立的,许多随机变量也将是相关的。

算法独立性比特串的Kolmogorov复杂度(或算法信息)本质上是图灵机上最短压缩的长度,因此是对其信息内容的度量。机制的独立性可以定义为消失的相互算法信息,也就是说,如果知道一个条件的(最短压缩)不能帮助我们实现另一个条件的较短压缩,则认为这两个条件是独立的。

5、因果发现

实际上,在没有函数类假设的情况下进行有限样本一般化是不可能的,因此可以通过对函数类进行假设来解决一些很难的因果关系问题。它们还可以帮助解决基于条件独立性测试的因果发现方法的其他缺点。条件独立性测试在很大程度上依赖于核函数类来表示和再现核Hilbert空间中的概率分布。到目前为止,有许多方法可以比统计更好地检测因果关系,其中一些方法是建立Kolmogorov复杂度模型的基础上,也有些人直接将双变量分布分为因果关系和反因果关系用于学习。

6、半同胞回归(Half-Sibling Regression)与系外行星探测

利用由加性噪声模型和ICM假设启发的因果模型,我们设计了一种方法,使得可以从一大组其它恒星中预测出一个感兴趣的恒星,这些恒星的测量结果不包含恒星的天体物理信号的信息,并且为了消除仪器的影响而删除了这种预测。我们将这种方法称为“半同胞”回归,因为目标和预测因子共享一个父项。

同时,我们用系外行星过境模型和有效的搜索光曲线的方法对其进行了扩充,从而发现了36个行星候选物,其中21个随后被确认为真正的系外行星。四年后,天文学家在系外行星K2-18b的大气层中发现了水的痕迹,这是在可居住区域首次发现系外行星的痕迹,即允许液态水存在。

7、不变性、鲁棒性和半监督学习

许多机器学习分类器并未使用因果特征作为输入,它们使用效果特征来预测原因。我们认为因果方向对某些机器学习问题是至关重要的,对协变量转移的鲁棒性是可预期的,并且它对半监督学习做出了非平凡的预测。

半监督学习(SSL):我们认为SSL不适用于解决因果学习问题,但是在其他方面是可行的,特别是对于非因果学习问题。还值得注意的是该领域的一些理论结果使用了因果关系图中众所周知的假设:联合训练定理对未标记数据的可学习性作了说明,并依赖于给定标签的预测因子是条件独立的假设,如果预测因子仅由标签引起,即一个非因果设置。这与以上我们观点完全吻合。

对抗性弱点:假设因果关系也会影响分类器是否容易受到对抗性攻击。这些攻击显然违反了机器学习基础的IID假设。在对抗环境中,修改后的测试集与训练集并非来自相同的分布,因此它们会干预模型优化。对抗现象还表明,当前分类器表现出的鲁棒性与人类表现出的鲁棒性不同。最近的研究工作表明:可以通过对因果产生方向进行建模来解决反因果分类问题,从而防御对抗攻击。

多任务学习:假设我们要构建一个可以在多个环境中解决多个任务的系统,这样的模型可以采用学习的方式:假设有多个数据集,它们是从相似但不相同的SCM采样的,如果SCM共享大多数组件,那么我们可以通过对SCM中的函数进行编码来压缩多个数据集,并且正确的结构应该是最紧凑的方向,因为它是跨数据集共享许多功能的方向,因此只需要编码一次。

强化学习:可以考虑将统计学习转向因果学习与强化学习(RL)的结合。事实证明,高维度的数据可通过寻找不变性来帮助确定因果关系特征,从而更普遍地有助于寻找因果关系,这可以使RL在其模型中找到强大的模块,这些模块很可能会推广到状态空间的其他部分。因为基于策略的RL可以有效地直接估计概率,因此它比机器学习的主流方法更适合因果关系研究。

8、因果表征学习

传统的因果发现和推理假设单位是由因果图连接的随机变量,因果表示学习尝试从数据中学习这些变量,其不要求算法操作的符号具有先验性。因果结构模型可以由微观模型产生(微观结构方程模型、常微分方程和时间聚集时间序列)。为了将结构因果模型与表示学习相结合,可以将SCM嵌入到较大的机器学习模型中,该模型的输入和输出可能是高维的和非结构化的,但其内部工作至少部分地由SCM支配。

学习可转移的机制:对于每个任务/领域,我们只有有限的数据,因此需要找到合并/重用数据的方法。一种较好的实现方法是采用一种可以反映世界上相应的事物的模块化结构。可以通过寻找独立的因果机制来学习这类模型,而竞争训练也可以在模式识别任务方面发挥作用。学习包含独立机制的因果模型有助于跨领域模块转移。

学习纠缠的表示:前文讨论的ICM其实表明了SCM噪声项的独立性,进而证明了解纠缠表示的可行性以及条件关系P(Si |Pai)在相关问题上是独立可操作且基本不变的性质。假设我们试图使用独立机制从数据中重建这种解缠结的表示形式, 从中我们可以构造因果变量S1, … , Sn(n<< d)以及建模Si之间的因果关系的机制,如下公式。

学习介入世界模型和推理:现在的表示学习是在不考虑变量的因果关系的情况下进行的,并不关心其分析或重构的变量的介入性。因果关系将把表示学习提升到新的高度,将从基于统计依赖结构的模型转向支持干预,计划和推理的模型,实现能够在一个想象的空间思考。最终,这可以使得机器具有反思自己的行动并设想替代方案的能力。

链接:

https://arxiv.org/pdf/1911.10500.pdf

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

精彩公开课

推荐阅读

  • 2020大数据十大趋势发布!华为、阿里、滴滴、百度、京东、讯飞等顶尖专家齐聚BDTC

  • 蚂蚁金服提新概率图模型GLN,正确率提升8.2%,具备可解释性 | NeurIPS 2019

  • 远场语音识别错误率降低30%,百度提基于复数CNN网络的新技术

  • 微软张若非:搜索引擎和广告系统,那些你所不知的AI落地技术

    基于人脸关键点修复人脸,腾讯等提出优于SOTA的LaFIn生成网络

  • 从YARN迁移到k8s,滴滴机器学习平台二次开发是这样做的

  • 劳荣枝潜逃23年落网,多亏了它

  • 实例分析+ 实践步骤,手把手教你编写以太坊、EOS智能合约!

  • 2020年,区块链开发者还有哪些期待?

  • 云计算管理工具:根植热土

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

相关文章:

Java观察者模式

当对象间存在一对多关系时&#xff0c;则使用观察者模式&#xff08;Observer Pattern&#xff09;。比如&#xff0c;当一个对象被修改时&#xff0c;则会自动通知它的依赖对象。观察者模式属于行为型模式。 意图&#xff1a;定义对象间的一种一对多的依赖关系&#xff0c;当一…

Python3中None用法

1.None是一个空值&#xff0c;空值是Python里的一个特殊值&#xff0c;用None表示。可以将None赋值给任何变量。 var None; print(var) # None if var is None:print("var has a value of None") # print else:print("var:", var) 2.None有自己的数据类型…

try finally 中的return

2019独角兽企业重金招聘Python工程师标准>>> public class Test { public static int test1() { int x 1; try { return x; } finally { x; } } public static int test2() { int x 1; try { return x; } finally { return x; } } public st…

我用Python破解了同事的加密压缩包

作者 | 朱小五来源 | 凹凸玩数据&#xff08;ID: alltodata&#xff09;又是一杯奶茶。事情的经过是这样的&#xff1a;又是奶茶&#xff0c;行吧行吧。快点开工&#xff0c;争取李大伟回来之前搞定。李大伟说是6位数字密码那么我们可以利用python生成全部的六位数字密码#生成从…

Ubuntu上通过android toolchain交叉编译Valgrind操作步骤

关于Valgrind的介绍可以参考&#xff1a;https://blog.csdn.net/fengbingchun/article/details/50196189. 这里介绍下在Ubuntu 16.04上通过android toolchain如android-ndk-r14b交叉编译Valgrind源码的操作步骤&#xff1a; 1. 从 https://valgrind.org/ 下载最新的版本3.17.0&…

Java状态模式

在状态模式&#xff08;State Pattern&#xff09;中&#xff0c;类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中&#xff0c;我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。 意图&#xff1a;允许对象在内部…

Red Hat 5.8 CentOS 6.5 共用 输入法

pick up from http://jingyan.baidu.com/article/20b68a885a3607796cec622c.html

Python3中with用法

Python中的with语句用于用上下文管理器(context manager)定义的方法包装块的执行&#xff0c;它允许将常见的try…except…finally使用模式封装起来以方便重用。 在Python中&#xff0c;在处理非托管资源(unmanaged resources)(如文件流)时使用with关键字。它允许确保你在使用资…

作为计算机专业的你,这些点你命中了哪些?

是不是学计算机的在别人眼里就得会修电脑&#xff1f;是不是编代码的程序员在别人眼里就得喜欢穿格子衫&#xff1f;是不是从事互联网行业的人在别人眼里就喜欢背双肩包出行&#xff1f;1我学计算机就得会修电脑&#xff1f;前两天我在加班的时候&#xff0c;电话突然响起&…

Java空对象模式

在空对象模式&#xff08;Null Object Pattern&#xff09;中&#xff0c;一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值&#xff0c;而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。 在空对象模式中&#xff0c;我们…

JSON入门基础知识

2019独角兽企业重金招聘Python工程师标准>>> JSON入门基础 1、JSON定义 JSON&#xff1a;JavaScript 对象表示法&#xff08;JavaScript Object Notation&#xff09;。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快&#xff0c;更易…

Python3中raise用法

Python中raise语句支持强制触发指定的异常。 raise语法&#xff1a; raise [EXPRESSION [from EXPRESSION]] 如果raise后未跟表达式(expression)&#xff0c;则raise重新引发当前作用域中活动的最后一个异常。如果当前范围内没有异常处于活动状态&#xff0c;则会引发RuntimeE…

精选实践 | 爱奇艺实用数据库选型树:不同场景如何快速选择数据库?

作者 | 郭磊涛 爱奇艺数据库和中间件负责人 TiDB User Group Ambassador来源 | 授权转载自AskTUG本文系 TUG 线下活动 “不同业务场景下的数据库技术选型思路” 分享实录。我是爱奇艺的数据库和中间件负责人郭磊涛&#xff0c;今天主要向大家分享数据库选型方面的思路&#xff…

iOS处理高并发量的数据请求和数据集合的对应关系

一、处理高并发请求的核心代码如下&#xff1a; // 创建信号量dispatch_semaphore_t semaphore dispatch_semaphore_create(0);// 创建全局并行dispatch_queue_t queue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_group_t group dispatch_gro…

Top 10 Mistakes Java Developers Make(转)

文章列出了Java开发者最常犯的是个错误。 1.将数组转换为ArrayList 为了将数组转换为ArrayList&#xff0c;开发者经常会这样做&#xff1a; ?1List<String> list Arrays.asList(arr);Arrays.asList()会返回一个ArrayList&#xff0c;但这个ArrayList是Arrays的私有静态…

Python3中迭代器介绍

Python中一个可迭代对象(iterable object)是一个实现了__iter__方法的对象&#xff0c;它应该返回一个迭代器对象(iterator object)。迭代器是一个实现__next__方法的对象&#xff0c;它应该返回它的可迭代对象的下一个元素&#xff0c;并在没有可用元素时触发StopIteration异常…

30+博士、100+硕士整理的超全深度强化学习资源清单

作者 | Deep-RL来源 | 深度强化学习实验室&#xff08;ID&#xff1a;Deep-RL&#xff09;今天为大家推荐一个开源、开发的 Github 好项目《A Guide for Deep Reinforcement Learning》。这个项目联合了Deep Reinforcement Learning领域的30位博士&#xff0c;100位硕士共同完成…

Java访问者模式

在访问者模式&#xff08;Visitor Pattern&#xff09;中&#xff0c;我们使用了一个访问者类&#xff0c;它改变了元素类的执行算法。通过这种方式&#xff0c;元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式&#xff0c;元素对象已接受…

GNU/Linux平台上正则表达式的简单使用

友情提醒&#xff1a;本博文涉及的内容中涉及到的系统实践操作在Centos6.5上实现,GNU/Linux简称为linux&#xff0c;GNU/grep简称为grep&#xff0c;GNU/sed简称为sed&#xff0c;GNU/gawk简称为awk。-------------------------------------------------楔子------------------…

Linux下addr2line命令用法

Linux下addr2line命令用于将程序指令地址转换为所对应的函数名、以及函数所在的源文件名和行号。当含有调试信息(-g)的执行程序出现crash时(core dumped)&#xff0c;可使用addr2line命令快速定位出错的位置。 如果无法确定文件名或函数名&#xff0c;addr2line将在它们的位置打…

JavaMVC 模式

MVC 模式代表 Model-View-Controller&#xff08;模型-视图-控制器&#xff09; 模式。这种模式用于应用程序的分层开发。 Model&#xff08;模型&#xff09; - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑&#xff0c;在数据变化时更新控制器。View&#xff0…

从概念到技术,打通「中台」的任督二脉,别再说不知道中台是什么

2019 年&#xff0c;「中台」这个词火了&#xff01;随着阿里等头部互联网企业搭建和推动中台业务&#xff0c;让越来越多的企业关注中台&#xff0c;纷纷提出「中台战略」&#xff0c;帮助企业自身加速实现数字化转型。不少企业还在观望「中台」&#xff1a;1、我的企业里需要…

php中序列化与反序列化

http://www.cnblogs.com/A-Song/archive/2011/12/13/2285619.html 转自&#xff1a;http://qing.weibo.com/tag/unserialize 把复杂的数据类型压缩到一个字符串中 serialize() 把变量和它们的值编码成文本形式unserialize() 恢复原先变量eg:$stooges array(Moe,Larry,Curly);$…

Python3中生成器介绍

生成器(generator)&#xff1a;一个返回生成器迭代器的函数。它看起来像一个普通函数&#xff0c;除了它包含用于生成一系列可在for循环中使用的值的yield表达式或者可以使用next函数一次检索一个值。 在Python中&#xff0c;使用了yield的函数被称为生成器。跟普通函数不同的是…

数学学渣必备!拍照上传,分步求解,微软解题神器拯救你

整理 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;在学好数学这条路上&#xff0c;很多同志前赴后继「死伤无数」&#xff0c;即便大家不断的寻求「场外救援」&#xff0c;可最终都逃不过一个字&#xff1a;难&#xff01;两个字&#xff1a;真难…

Java业务代表模式

业务代表模式&#xff08;Business Delegate Pattern&#xff09;用于对表示层和业务层解耦。它基本上是用来减少通信或对表示层代码中的业务层代码的远程查询功能。在业务层中我们有以下实体。 客户端&#xff08;Client&#xff09; - 表示层代码可以是 JSP、servlet 或 UI j…

在wamp环境下面安装Zend Optimizer的方法

我是用WAMP来做PHP的服务器&#xff0c;进行本机测试和开发PHP项目。 wamp环境是刚刚安装的。由于这个项目的代码是zend加密的&#xff0c;运行时候都是乱码&#xff0c;需要安装一个Zend Optimizer配置。 首先下载一个Zend Optimizer软件。 1、进入安装界面后&#xff0c;按NE…

libuvc介绍及简单使用

libuvc是一个用于USB视频设备的跨平台库&#xff0c;构建在libusb之上&#xff0c;编译libuvc时需要依赖libusb。libuvc的License为BSD&#xff0c;最新发布版本为0.0.6&#xff0c;源码地址: https://github.com/libuvc/libuvc libuvc支持在非windows系统上直接编译&#xff0…

AI又被彩虹吹!​网易被预言为“下一个百度”?

人工智能到底有多火&#xff1f;近日国内首份《BAT人工智能领域人才发展报告》新鲜出炉&#xff0c;此次报告是针对国内人工智能领域的人才争夺情况进行了梳理。并把研究对象锁定在BAT三大巨头的身上。来源&#xff1a;《BAT人工智能领域人才发展报告》其中得出最为核心的结论&…

Java组合实体模式

组合实体模式&#xff08;Composite Entity Pattern&#xff09;用在 EJB 持久化机制中。一个组合实体是一个 EJB 实体 bean&#xff0c;代表了对象的图解。当更新一个组合实体时&#xff0c;内部依赖对象 beans 会自动更新&#xff0c;因为它们是由 EJB 实体 bean 管理的。以下…