来源:混沌巡洋舰
人工智能的一个核心问题,是用已有的算法解决新的目标。对于人类来说,最常用的方法是得到和目标最相近的子目标, 子目标的子目标(比如饿了就要找吃的,找吃的就要去菜市场买菜),直到和当下的状态连接起来, 我们可以把这个过程叫做任务的拆解。人的人生就是这样一个把最终目标和前面的目标相连接的过程。
当任务的拆解完成, 我们无非需要组合已有学到的技术,来形成一个完整的任务解决方案。这种能力是从我们婴儿阶段在玩耍中就会逐步学习到的。但是对于当下的机器学习, 这个任务拆解能力是完全不具备的,机器可以用强化学习的方式学习动作趋近目标,但是这和任务拆解还距离甚远。
这个挑战主要体现在几点, 第一目标(goal)的定义并不明确, 目标并不能完全等价于强化学习的奖励 – 某种外界设定的数值。而是内在的需求(如生存)与外部条件结合的结合,这个神经过程目标依然是未知的。与强化学习的reward相比, 这个生物的目标是随着时间改变的, 不同的目标可能在你的大脑里进行竞争, 这都比简单的数值reward复杂很多。其次,有了目标之后,如何得到子目标进行任务拆解和简化的神经过程不完全知道。对于人类和其它动物,它可能是基于直觉的, 可能你在潜意识里就已经拆分了一个复杂目标(例如大猩猩拿起小树枝来吊蚂蚁吃),也可能基于有目的的推理(如你如何一步步的求解魔方问题) 。
那么如何让机器学习这种从一个目标,当生成一个任务完成的子目标组成的流程图的能力呢?这是人类通向通用智能的一个核心难点之一。打开这个任务的钥匙也多种多样, 它体现着人类因果, 逻辑推理等绝技。
我们来看一些不同的角度:
1, 强化学习
强化学习学习的是从行为到最终结果的关系, 因此它非常关注如何根据一个总的目标,把任务分解成功若干子目标。这类强化学习方法的一个基本解决称为hierachical RL-多层级强化学习, 这个算法把强化学习分成很多个不同的子目标,子目标又有下级的子目标, 这样就一级一级的达到最基本的已经学过的动作。
比如上图中的迷宫,迷宫里分为很多不同的分区(a), 图中基本的结构 – 如障碍物是类似的。如果没有层级强化学习的概念,那么这就是一个经典的MDP导航过程, 东南西北是四个不同的可能动作。但是在这样的迷宫里来尝试学习这种任务其实是工作浩繁的,但是如果我们仔细观察, 这个迷宫里的分成很多非常类似的小段,在这些小段里智能体的行为基本是重复不变的(比如直线向前)。
因此一个更好的方法是把这样任务中相似的过程变成一个个如字母表中的字母一样的基本单元, 如后退,沿墙走,选择,停止。有了这些基本的技能字母,我们需要的action就不再是东南西北, 而是在那几个基本的技能之间做选择。这些技能就如同封建王朝里的一个个封臣, 通过一个最终的目串起来, 完成它们就可以完成整个任务。当然这里每个技能单元的完成你也可以看成子目标, 学习串起它们的过程就是学习由一个个子目标构成整个任务的过程。
另一类学习任务拆解的强化方法来自模仿学习,也就是给你看一段视频,你给它拆成不同的状态和动作单元。
事实上一个非常有效的概念称为conjugate task graph,这个工作同样是通过观看一段视频来提取其背后的任务结构(NTG-Neural Task Graph), 一个由Macro Action作为节点组成的图结构。每个macro action类似于刚刚在HRL中介绍的组合动作, 之所之所以把action而不是state 作为graph的节点,是因为往往macro action 具备更好的不变性, 而state反而是更多变的, 因此把state作为边恰好得到一个超图结构,这样的方法有效的解决了组合爆炸的问题,增加了学习效率。
litterature:
Reinforcement Learning with Hierarchies of Machines
Neural Task Graphs: Generalizing to Unseen Tasks from a Single Video Demonstration
Hierarchical Reinforcement Learning Based on Subgoal Discovery and Subpolicy Specialization
但是无论是哪一种强化学习方法,它可能都是和真实大脑里的过程有所差距。大脑是如何完成这一类对记忆过程的理解呢?这里的关键算法在于我们神奇的情景记忆-episodic memory能力。
2. 脑启发算法,episodic memory
如果从脑科学角度看对任务拆解的基础,那么这个问题的核心一定是对事件的表征。事件(包含时间地点人物干什么) 代表了对时间的一个离散化, 把连续的时间分解成一个个对我们的生成目的有意义的片段, 比如开会吃饭这种。任何事件又可以分解成一系列子事件,比如从你的屋子里出去走到室外去买菜,这个过程就可以包含走出去,上汽车,买菜这些更基本的事件。
这些子事件其实往往对应子任务或子目标。那么事件是如何被学习的呢?人脑中一个事件学习的基础是episodic memory(情景记忆),在情景记忆里, 我们经历的各种感知信息要被压缩成一个个符号,通过一个时间戳组合成一个group挂载在海马体里,这就是基本事件的由来,我们通过这种拆解和组合,就记住了一个过程。我们很容易发现这个过程的核心在于如何划分时间轴,哪些时间段会被定义为开会,另一些被定义为吃饭?这个问题和predictive coding和场景切换都有关系。
复杂任务下经常包含不只一个场景, 两个不同典型场景(幕)的切换通常对应 predictive memory model中预测误差的突变(surprise)来界定(比如你走出一个场景,你大脑中的连续预测必然被打破),可以将这个突变点称为关键帧或关键点,代表一个场景到另一个,一个子任务到另一个子任务的切换,两个关键点间通常定位为一个完整的事件。得到不同的完整事件后的关键问题在于一天中的事件实在太多了 ,难道每个事件都要一个个存储吗?答案是否定的,通常情况下, 不同的事件会被比较,有的比较类似的事件可以被去掉不必要的细节, 压缩成同样的形态(典型事件),比如事件A。事件A可以盖上不同的时间戳得到A在不同时刻的表达。这个原理可以解释类似于Déjà vu(似曾相识)这样的心理现象, 你见到一个新的场景,被激活的其实是过去的某个典型事件, 它就如同一张记录了地点人物特征这些关键信息的卡片,需要被新的信息改写覆盖。因此虽然这个新事件你没有经历过, 但是你感到似曾相识, 因为被激活的旧的事件在剔除了细节后和新的事件就变得比较相似。
有了事件的表征, 我们的大脑其实在新的目标到来时候,会根据当下的场景自动的匹配出曾经发生的事件, 事件之后的事件,这个我么可以称为叙事结构或历史的东西。通过历史,我们就可以生成新的子目标和任务流程图。简单的说,当下是过去的组合,阳光之下并无新事。
litterature:
1 A predictive processing model of episodic memory and time perception
2 Episodic Reinforcement Learning with Associa
逻辑推理的方法:
3, 更高级的形式, 引入人类的逻辑和因果
如果我们有了上述能力,那么我们就有了通过来自记忆的直觉形成任务拆解流程的能力。但是事实上人类更高效的解题方法则是通过逻辑和推理,因为逻辑和推理代表了不同过程或关系累加得到一个总的过程或效果的思维,或者说基于因果的理解。如果掌握了它,就可以借助公理化的系统,在未知的任务里使用已有的公理,并且推理的结果不受过去经历统计分布的局限。例如你可能从没有搭建过桥,但是通过物理知识你可以做出一个过程的拆解,先做地基,然后用钢筋连接,在去铺设路面等。
那么如何把这种能力交付给机器呢?首先,在这个层面,事件必须已经符号化,比如是语言可以描述的。这一步我们可以走捷径,我们甚至不一定需要机器理解所有的理论背后的真实场景,而是可以直接引入人类的知识,并且学习建立在其上的推理流程。比如利用知识图谱学习与之组合使用的逻辑。
其次我们要清楚逻辑本身是什么:逻辑一般分为inductive reasoning(归纳), deductive reasoning(演绎)和abductive reasoning(溯因推理), 其核心是利用一系列的一般规则对当下的特例进行推理的过程(表现形式是一个符号组成的序列)。其强大之处在于这个推理的链条可以很长,而且传递过程是确定的。那么它和任务拆解有什么关系呢?逻辑链条其实就是把一个目标拆分成了很多子目标。如果把子目标看成一个字符串或自然语言的序列,这个序列代表一系列的动作组合, 也就是一个计算机程序。
人类对这些过程的组合可以使用算法和程序,这是人类逻辑的很高级形式, 也就是理解一个抽象的对输入进行改变的过程, 通过迭代的使用一些规则得到最终的目的,这是任务拆解的较高级形式,也就是使用算法来支配子任务, 是否能够让机器也学习这种工作模式呢? 这就是以神经图灵机为代表的的一系列神经程序学习的作用。
我们来看看能够学习和使用逻辑的机器学习框架:
神经编程学习机器:
Neural Stored Program machine:这是从神经图灵机演化出的框架 它的特点是把程序记忆和数据记忆分开存储, 程序记忆是存储一系列逻辑规则, 它可以根据数据的形态被读取,也可以学习。一个完整的任务可以被拆分成几个不同的子任务完成, 这本身就体现了逻辑的流程。
另外一个学习和利用逻辑的方法是利用在人类已有的知识库里寻找规律, 那么一个非常可靠的起点就是知识图谱。
如果给定一组 关系比如A和B是朋友, A爱好游泳, B爱好滑冰, 推测A和B 可能还有什么爱好, 那么这就是构建了一个关系的序列 朋友(A, B), 爱好(A,游泳), 爱好(B,滑冰), 这三个关系的序列可以推倒A hobby 滑冰 & 游泳。
这个关系到关系的效果累加可以由RNN学习使用,因为RNN可以很好的解决一个序列路径依赖的概率问题。
在知识图谱上学习这样的逻辑关系, 到底和任务拆解什么样的关系呢?我假设,当一个流程可以被抽象成符号的时候,那么这个流程内不同环节的因果关系,就可能通过抽象的逻辑表达出来, 并且通过序列到序列的建模学习到。
代表文章
符号化方法的本质是用单词,尤其是动词表达子过程, 一个总的目标可以分解成不同子过程 的组合。可以用有向图的形式表达一个流程(代表把任务分解为子任务的流程),如下图:
4, 神经程序学习
类似神经图灵机的机制或neural stored program mahine,可以有效的学习类似程序的过程,可以作为一个从数据中提取任务流程图的重要方法。
litterature:
Neural Stored-program Memory
Differentiable Harvard Machine Architecture with Neural Network Controller
Learning Algorithmic Solutions to Symbolic Planning Tasks with a Neural Computer Architecture
几种不同方法的结合:
不停的对周围环境的变化进行预测,对无法预测的惊讶形成新事件的编码, 并和既有经历进行组合是类脑计算的核心思路,也是儿童学习任务拆解的基础。但是人在接受教育后也可以直接利用逻辑对不同的关系进行组合来形成这样的逻辑流程。
因此,任务拆解的过程最好可以形成一个闭环机制, 从observation观测中记录偶然性的事件经历, 但是在大量的经历中学习稳定的事件结构, 并被吸收到知识图谱的符号化表征中, 而逻辑则把这些被记录的不同的符号结构进行泛化,使得这些事件结构成为推理中可以复用的meta structure。同时被学到的结构可以在inference里被灵活使用, 从KG上的逻辑推理,激活下层任务的模块,进行任务的执行过程。
本质上这是绕过了强化学习底层的试错逻辑,通过更抽象层面的逻辑来解决了这个任务拆解的过程。
对这个问题感兴趣的同学可以加作者TieXu0609, 共同探索任务拆解的本质,潜在大厂实习机会。
未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。
如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”