Press "Enter" to skip to content

从时间序列表示到层级化的强化学习

CNN对图像的表示我们熟悉是从细节纹理到轮廓到物体部分到概念的层级表示关系。那幺神经网络对时间序列可以建立什幺样的表示呢?要知道时间序列是比图像更普遍的一种数据类型。我们知道最广泛使用的也是最高级的时间序列是语言。那幺什幺是时间序列的一般表示呢?

 

这篇文章从神经科学的角度从五个层次解析了时间序列的表示问题。

 

The Neural Representation of Sequences: From Transition Probabilities to Algebraic Patterns and Linguistic Trees. Dehaene, Stanislas, et al. “The neural representation of sequences: from transition probabilities to algebraic patterns and linguistic trees.” Neuron  88.1 (2015): 2-19.

 

首先, 对于一个一般的时间序列, 你可以想象以声音为例,当声音进入到耳朵里, 它本来仅仅是一些频率音量不同的振动,它怎幺就变成了音律,变成了语言?这就说明我们的神经系统不是在机械的接受这些时间序列, 而是不停提取和序列有关的信息, 最终合成成为有意义的东西。这个过程, 事实上类似于图像的层级化处理, 也是一个有层次的过程。这种层次, 被分为如下图的5步:

 

 

第一层, 神经网络可以提取和序列中的时间信息,比如不同音符间的间隔,每个音符持续的时间等,以及这些音符是如何转换的。或者说在这个层次,神经网络主要care的维度就是时间,而尽量忽略其它维度。如果用比较数学的语言来说, 神经网络会对时间序列下一步的输入做预测, 这种预测的主要依据是一个从过去的输入到当下的条件概率。

 

生物神经网络的本性,根据时间对未来的刺激做预测, 比如你给它一个周期刺激, 当某个周期相应的刺激没有来,就会发放一个缺失信号表示惊讶。

 

然后, 神经网络可以对序列进行分块, 好比切割成由一列列车厢组成的而火车, 这样, 序列就不再仅仅依赖于时间,分出的块好比一个个物体, 或者item,这就好比CNN对图像进行了边缘分割。具体如何做分块切割呢?通常一个过程里会出现自然的分割节点, 比如你在左顾右看的时候, 视觉信号是输入时间序列, 你看到左边的某个边界或右边的边界,就是时间序列的自然分割点。

 

再后,神经网络可以抽取这些item之间的顺序信息, 而无视每个块的具体时间序列, 如时间长度一类,也就是此时的神经网络可以区分abc和acb的区别,而忽略时间或单个块的区别。

 

如果前面的看起来和智能关系不大, 后面就厉害了, 因为生物神经网络还可以抽取块与块之间的代数模式, 比如cocolith, co-co 连续出现了两次,这就是模式。这种模式本身代表了一种统计规律, 被我们称为regularity 。我们可以看做神经网络可以在复杂的音乐中识别出模式,识别出和弦。

 

 

在这个阶段,神经网络关注不同输入间的某种统计相关性而不是具体输入的类型, 可以称为抓取序列的某种抽象结构知识 (TurnTurnTurnTurn = PushPushPushPush != TurnTurnPushPush)

最后, 被作者称为人类独有的, 是抽取序列里由一定符号规则生成的“语法”,这种规则可以反复使用实现层级结构,也就是树结构。

 

 

对树结构的解析模式:从词语到短语到句子的语法树结构,这是对时间序列的最高级表示

到最后一个级别, 我们可以看到这已经不再是机械的时间序列处理, 而几乎是自然语言处理了。你有没有想到一个重大的问题也就是语言的起源呢?你有没有想到乔姆斯基的通用语法规则呢?

 

除了上面介绍的方法,从时间序列到空间结构, 从时间序列到因果图, 都可以看做是很高级的序列表示生成方式。

 

如果这里看去, 好像没有什幺意思的神经科学文章, 那幺后面我们会看到这样一个思想如何有助于解决一个AI问题。

 

强化学习本质处理的就是时间序列, 由输入观测的时间序列, 我们要得到一组动作的时间序列, 最终得到我们要的奖励。每个动作都需要通过学习到的策略得到。这是经典的强化学习方法, 但是这种一个个动作学习的方法未免过于繁琐,而且需要遍历的动作总数犹如组合爆炸(想一想即使每个回合只有四个基本动作, 一百回合就是4的100次方种组合)。一篇新的文章给我们一个完全不同的思维角度。

 

 

强化学习通常用如上框图实现, 即agent会根据环境给与的reward调整action的一个反馈系统, 最终实现利益最大化, 难点在于agent的行为通常改变环境,而环境影响行为策略。

 

Christodoulou, Petros, et al. “Reinforcement Learning with Structured Hierarchical Grammar Representations of Actions.” arXiv preprint arXiv:1910.02876 (2019).

 

这篇文章的核心思想是, 如果把动作看做一组时间序列,我们可以对动作的集合本身建立一套语法规则, 得到一组macro-action,也就是由若干动作组成的动作的宏,它们可以作为新的基本单位被学习。这样,我们变可以把动作 打包来学习。这样一个个基本动作就可以构造出一个层级嵌套的结构 ,大大减少需要学习的动作组合数。这种方法在20个atari game里19取得了 性能的进步。

 

想一想这和人类的基本学习习惯是类似的。你去学习做饭,不会去学习如何用一个个基本的运动手臂的动作构成倒盐,加油,烧水的一连串动作,菜谱只会告诉你热锅之后先煎西红柿后放入鸡蛋即可,也就是说我们默认了即使做菜的种类很多,有几种基本行为是类似的,那些基本行为又由更基本的动作构成,但是我们不需要提起那些更基本的动作,就可以告诉你怎幺做菜。这里提到的方法是类似的, 而唯一不同的是每个基本行为是要学习的, 我们需要知道如何从更基本的动作构建基本的行为。  事实上这个方法是实现层级强化学习的一种方式。

 

 

勃艮第牛肉的制作过程为例看层级化的强化学习。每个动作由更基本的动作组成,又成为更复杂的动作的基础。

 

那幺如何去学习这些动作的宏-基本行为呢?我们可以看到, 此处对动作时间序列的处理, 刚刚所说的一般时间序列表示,本质是一样的, 都是通过先打包,再整和包和包之间的语法规则,得到动作的层级结构 。如果神经网络可以对时间序列实现如上表示。那幺它就可以通过观测自己的动作,得到如何组合这些动作得到其语法结构。

 

算法的具体实现如下:

 

agent需要在探索游戏并记录自己在游戏中的历史,与一般的强化学习流程不同,这里的一些经历是没有加入噪声的,这些经历被单独放入到一个叫Sequitur的程序里进行action的语法生成, 在这个过程里, 一些经常重复的行为片段比如ababab,会被替代为ccc , c =ab, 这个新生成的c, 被称为marco-action,生成符号的标准是新符号可以减少描述整个序列需要的字符数(符号的本质?)如此我们进行一级级的迭代,就得到action的整个语法树,这里的方法像不像是刚刚讲过的从序列中生成代数结构和树结构的方法?

 

 

 

通过回放机制方便生成新的宏

然而我们也可以从这里联系到技术的起源。有一本书叫技术的本质, 它提出技术是一种进化的生命体, 它可以看做是由更基本的单元技术组成,这些不同的单元技术构成技术的模块,组成更复杂的技术。这或许帮助我们理解为什幺近代最先进的技术出现在欧洲而不是中国。欧洲尤其是地中海地区,地理位置上很容易汇聚从中东,非洲,小亚细亚和欧洲本地的技术,从而交汇组合不同的技术元素,组成更大的技术的“宏”,促进更新技术的发展。

 

由此我们想到如果把技术本身看成某种强化学习可以学习的动作集合, 那幺技术不就对应这种层级化的强化学习吗? 较高级的技术由较低级的技术模块组合而成, 这些较低级的技术模块本身因为经常被重复使用就被打包起来 。

 

从这一点看, 我们或者可以联想如何可以通过强化学习帮助我们生成新的技术。

 

 

 

 

整个这篇文章说明了,时间序列的抽象表示是如何帮助我们解决一个非常困难的强化问题的。本质上 越是能够从具象的输入信息里抽象出结构性知识,就越能从降低维数灾难, 也越能够让学习变得简单容易 (从更小的集合里寻找最优解),得到的解也越容易具有鲁棒性(策略建立在一般结构之上而不是细节上)。因此从这点上看, 抽象的意义是巨大的。那些最聪明的大脑,往往也是最擅长从细节里寻找一般性结构的。

 

更多阅读

 

多巴胺引领下的分布式强化学习

 

站在AI与神经科学交叉点上的强化学习

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注