换个思路实现人工智能: 在视觉环境中用因果归纳完成目标导向的任务(上)

Luna
Written by Luna on

能让机器拥有智慧的,可能既不是机器学习,也不是深度学习。

        

    今天我们来说一说这篇文章:

    什么是因果,《The Book of Why》中举了两个例子,公鸡打鸣,太阳升起,那么公鸡打鸣是太阳升起的因吗?显然不是,如果公鸡打鸣,太阳升起,但有一天你按住了公鸡的嘴,让它打不了鸣,那天太阳居然没有升起,则公鸡打鸣才可能是太阳升起的因。另一个例子,现在有一种疾病,服用药物D的人比不服用药物D的人存活时间要长,那么你可以判断服用药物D是患病的人存活时间较长的因吗?显然也不可以,因为很有可能不是因为服用了药物D,而是因为买得起药物D的人能获得更好的医疗资源来延长寿命。因此,如果要确认药物D是不是这个因,则需要对照实验。《The Book of Why》这本书更认为,发现因果的能力即智能,而我们现在构建的深度学习,机器学习,只能提取事物之间的相关性,并没有发现因果的能力。

    能改变果的元素才是因,这个元素可以不单一。人类天生就有从与世界的互动中提取因果的能力,这也是一项基本生存技能。那么怎么赋予机器这种能力呢?

        

    今天的这个系统则尝试赋予智能系统因果归纳和推理的能力,以便在视觉环境内完成目标导向的任务。

    想象一下,有天,你买了一个机器人回家做家务,它第一次来到陌生的你的家,如果你事先没有和它说家的情况,它就需要自己理清开关和灯之间的关系,这之后你才能给它下达开关灯的命令。它自己触碰开关,理清开关和灯之间的关系的这个过程叫做因果归纳。在它理清之后,你下达命令,它根据之前归纳的因果关系,推理触碰哪个开关,则称之为因果推理。怎么让你的机器人拥有这项基本的因果归纳和推理的能力呢? 

一、问题定义

    首先,定义问题,用(S, A, p, G, r, γ)定义一个基于目标的马可夫决策过程(Goal-Conditioned Markov Decision Process)[可以先了解一下马可夫决策过程再看这篇],其中S是状态域,A是动作域,p: S × A → S 是状态域随采取动作的变化(transition dynamics),G是目标域,r : S × A × G → R 是收益方程,每行动一次,根据结果,有的即时收益。γ是discount factor。这个问题的解是可以使过程获得最大收益的策略πG: S × G → A。收益的计算方式如下:

    t是时间或者步骤编号。

    在这里我们不止有一个MDP,而是有K个有着不同的p: S × A → S的MDP,用M = {M(1), M(2), . . . , M(K)}表示。M(k) 则是(S, A, p(k), G, r, γ)。p(k) 定义了动作和状态之间的因果关系。遵循不同的p(k)则在同样的状态下做同样的动作,会转换到不同的状态。

<div align=center></div>   

如上图所示,因果归纳有两个步骤,第一步,我们执行交互策略πI来收集一系列转变τ = {(s1 , a1 ), (s2 , a2 ), . . .},这一系列转变会被用来训练因果归纳模型(causal induction model) F,生成潜在因果模型(latent causal model)C^ = F (τ )模型。第二步,环境不变,用第一步得到的C^来得到πG,这样系统就可以用新的策略来交互。我们将所有的MDP的集合M分成两个不相交的子集,分别是Mtrain和Mtest,在训练过程中,我们用Mtrain来学习因果归纳模型F和基于目标的策略πG,在测试过程中,我们会评估模型F是否能够通过观察交互数据来为新的MDP解出最佳策略πG。

二、迭代因果归纳网络(ITERATIVE CAUSAL INDUCTION NETWORK)

    这个网络的目标是理清因和果的对应关系,即理清行动会对环境造成的影响。

    刚开始的时候,在我们的因果结构C^里,是没有因果之间的连接的,也就是所有关系的初始权值是0。如下图所示,在这个场景里,有四种因果结构,一对一,一对多,多对一,总闸模式,因是开关,果是灯,而初始的时候,开关和灯的关联是没有的,也就是下图中的带箭头的黑线是没有的。

    接着,我们会有一个时间序列,在这个时间序列里,我们会尝试不同的操作(action)。如下图所示,t=1的时候,会有一个场景图,在执行了a1这个动作后,场景图产生了变化,转变成了t=2下面的场景图。每个场景图会通过一个编码器(Observation Encoder)转换成一个编码s,两个场景编码之间的差则为R1,表示场景因动作而产生的变化。R1和a1随后会经过一个过渡编码器(Transition Encoder)融合场景变化和动作信息,再经过一个边解码器(Edge Decoder)转换成因果之间的对应关系∆C^。

所以新的因果结构更新为: 

<div align=center>,</div>

<div align=center>。</div> 

值得注意的是,最后的C^并不是C^H,C^H再经过一层转换才最终得到C^。可以看出边解码器(Edge Decoder)的输入可以是经过转换后的R和a,也可以是经过转换后的C^H。如下图所示,边解码器输出soft attention vector α (1 × N ),其中N是可以有的动作的数量,而∆e是边权重(edge weights)。α是用来权衡应该指向的点或者形成的边。公式中φ是过渡编码器(Transition Encoder)。

三、学习基于目标的策略(LEARNING GOAL-CONDITIONED POLICIES)

    首先,策略要完成的事情是,给定初始状态图s0,目标状态图g,和因果结构C^,在一定步骤T内,使状态从s0变为g。

    如图所示,目标图片和初始状态图片首先会经过一个编码器(Observation Encoder),再经过一个全连接网络输出attention vector α,作用在N × N的因果结构C^上,输出一个大小为N的向量,表示选定的边。这个向量和图片编码后的向量再经过全连接层,最后输出需要实施的动作。

φi指全连接网络。

  1. 第一次写论文的笔记,发现很多单词翻译起来实在疲惫,翻译不好,不尽义,因此很多词躲懒没翻,以后可能会越来越懒哦。
  2. 公众号不能插入公式,所以有些符号会稍微变形。
  3. 这篇论文恰好有释出源代码,所以训练,实验部分会结合代码分析做个下篇
  4. 最近因为看了几页《The Book of Why》,对因果方向的研究稍感兴趣了些,查了一下相关研究,19年似乎就这么一篇,门庭如此冷落,大家要踩踩啊。

参考论文:

Suraj Nair, Yuke Zhu, Silvio Savarese, Li Fei-Fei, Stanford University, CAUSAL INDUCTION FROM VISUAL OBSERVATIONS FOR GOAL DIRECTED TASKS, 2019

Comments

comments powered by Disqus