问题

请问分层强化学习到底是什么?

回答
好的,我们来详细地聊聊分层强化学习(Hierarchical Reinforcement Learning, HRL)。

分层强化学习(HRL)是什么?

分层强化学习(HRL)是强化学习(RL)的一个分支,它的核心思想是将一个复杂的决策问题分解成一系列更小的、更易于管理的子问题(或称为“任务”、“技能”),并以分层结构来解决这些子问题。你可以把它想象成我们人类在学习和执行复杂任务时,通常会遵循一种由粗到细、由高到低的策略。

例如,你想学习“做一顿饭”。这个任务本身非常复杂,包含了许多步骤:准备食材、洗菜、切菜、烹饪(炒、煮、蒸)、调味、装盘等等。你不会一下子就学会所有细节,而是会先学会一些基本的技能,比如“洗菜”、“切菜”。然后,你可以将这些技能组合起来完成一个更宏观的任务,比如“炒青菜”。最后,你可以将“炒青菜”、“煮米饭”等更宏观的任务组合起来,完成最终的“做一顿饭”的目标。

HRL就是将这种思想引入到强化学习的智能体中。

为什么需要分层强化学习?

传统的强化学习在解决大规模、长时序(longhorizon)和高维状态空间的问题时,常常会遇到以下几个挑战:

1. 样本效率低下 (Low Sample Efficiency): 在复杂环境中,智能体需要大量的探索和尝试才能学习到有效的策略。当任务非常长时,可能需要非常漫长的序列才能获得奖励,这使得学习过程极其缓慢。
2. 稀疏奖励 (Sparse Rewards): 在许多真实世界的问题中,只有在完成整个任务或某个关键阶段时才能获得奖励。中间过程的奖励信号非常稀少,导致智能体难以学习到正确的行为。
3. 探索效率低下 (Inefficient Exploration): 在巨大的状态动作空间中,有效的探索是至关重要的。如果没有结构化的指导,智能体可能会在低效的路径上花费大量时间。
4. 策略的泛化能力差 (Poor Generalization): 训练好的策略通常只在特定的环境或任务变体上表现良好,很难泛化到新的、但相关的任务上。

HRL通过引入层次结构,可以有效地缓解这些问题。

分层强化学习的核心思想与构成要素

HRL的核心思想在于将决策过程分解到不同的抽象层次。通常,一个HRL系统包含以下几个关键要素:

1. 宏观策略(MetaController / HighLevel Policy):
目标: 负责选择子任务或设定目标(Goals)。
状态空间: 通常是抽象的、高层次的状态信息,可能包含当前任务的状态、环境的关键信息等。
动作空间: 不是直接输出低级动作,而是输出一个“子任务指令”或“目标状态”。例如,在机器人导航任务中,宏观策略可能会选择“去厨房”、“去客厅”。
时间尺度: 宏观策略的决策周期比低级策略长得多。它设定的是一个相对较长期的目标。

2. 微观策略(Controller / LowLevel Policy):
目标: 负责执行宏观策略设定的子任务或达到宏观策略设定的目标。
状态空间: 通常是详细的、低层次的环境状态信息。
动作空间: 输出的是环境的原始低级动作(Primitive Actions)。例如,机器人导航中的“向前移动1米”、“向左转90度”。
时间尺度: 微观策略的决策周期非常短,它执行的是一系列快速的低级动作。

3. 子任务/选项/技能 (Subtasks / Options / Skills):
这是HRL的核心概念。它们可以被看作是预定义的、有意义的行为单元,可以被组合起来完成更复杂的任务。
每个子任务通常有一个明确的起始条件 (Initiation Set) 和一个终止条件 (Termination Condition)。
子任务内部有一个子策略来控制执行过程。
选项 (Options) 是HRL中一种非常经典的表示方式,它是一个三重奏:`<策略,起始条件,终止条件>`。

4. 状态抽象与目标设置 (State Abstraction & Goal Setting):
宏观策略需要从低级状态中提取有用的信息来形成其高层次的观察。
宏观策略设定的目标,会作为微观策略的奖励信号或终止条件的一部分。

HRL的几种典型框架和方法

为了实现HRL,研究人员提出了多种不同的框架和方法。这里介绍几种比较有代表性的:

1. 选项框架 (Options Framework)

这是HRL中最经典和最有影响力的框架之一。它将宏观策略的动作扩展为“选项”。

选项的定义: 一个选项 $o$ 是一个三重奏 $(I_o, eta_o, pi_o)$,其中:
$I_o$: 起始集 (Initiation Set),表示在该状态下可以开始执行选项 $o$。
$eta_o$: 终止概率函数 (Metacontroller Policy),表示在当前状态下,选项 $o$ 能够继续执行下去的概率(或者说,在某个时间步之后终止的概率)。
$pi_o$: 选项的内部策略 (Policy),在选项执行期间,根据内部状态和环境状态选择低级动作。

工作流程:
1. 宏观策略(Metacontroller)在当前高层状态 $s_{meta}$ 下,选择一个选项 $o$ 来执行。
2. 一旦选定选项 $o$,微观策略 $pi_o$ 开始在内部执行,直到根据 $eta_o$ 条件满足终止。
3. 在选项执行期间,智能体与环境交互,执行低级动作 $a_{low}$。
4. 每执行一个低级动作,都会累积一个内在奖励(Intrinsic Reward),这个奖励通常与是否达到选项的“目标”相关,或者只是简单的“积极”信号(例如,每执行一步奖励+1,或者如果达成子目标奖励更高)。
5. 选项执行结束后,宏观策略获得一个终结奖励(Terminal Reward),然后根据新的高层状态选择下一个选项。

关键创新: 选项框架将“何时做什么”的问题分解为“何时开始一个选项”和“在选项内执行到何时结束”。它引入了内部奖励和外部奖励的概念。

2. MAXQ框架

MAXQ框架是一种将动态规划与分层结构相结合的方法。它将一个大任务分解成一个任务树,每个节点代表一个子任务。

定义: 每个子任务 $M$ 可以被表示为一个由“基元动作”和“子任务”组成的集合。
基元动作: 直接与环境交互的动作。
子任务: 可以进一步分解的子问题。
分解:
对于一个子任务 $M$,它的价值函数 $V(M, s)$ 可以表示为:
$V(M, s) = max_{a in M} left( R(s, a) + gamma sum_{s'} P(s'|s, a) V(M, s') ight)$ (如果 $a$ 是基元动作)
$V(M, s) = max_{o in ext{subtasks of } M} left( sum_{s'} P(s'|s, o) V(o, s') ight)$ (如果 $a$ 是一个子任务 $o$)
这里的 $V(o, s')$ 是子任务 $o$ 在状态 $s'$ 下的价值函数,它会调用一个更低层级的子任务或基元动作。

工作流程: MAXQ通过“自顶向下”的价值函数计算过程来学习策略。宏观任务的价值函数依赖于其子任务的价值函数,子任务的价值函数又依赖于更低层级的子任务或基元动作的价值函数。最终的基元动作会根据其对子任务价值的贡献来选择。

关键创新: MAXQ提供了一种将动态规划的思想应用于分层任务的有效方式,通过价值函数的分解来实现学习。

3. 目标驱动(GoalConditioned RL)

虽然不完全是分层结构,但目标驱动的方法常常是HRL的基础或一部分。其核心思想是训练一个策略,该策略能够根据给定的目标来采取行动。

定义: 策略 $pi(a | s, g)$ 输出在状态 $s$ 下,为了达到目标 $g$ 而应该采取的动作 $a$。
应用:
宏观策略可以被看作是在一个抽象的状态空间中生成目标 $g$。
微观策略则是一个目标驱动的策略,负责根据宏观策略设定的目标 $g$ 来选择低级动作。

4. 抽象状态与抽象动作(Abstract States & Abstract Actions)

一些HRL方法会显式地学习或者构建状态的抽象表示和动作的抽象表示。

状态抽象: 将原始的高维状态空间映射到一个更小的、更具信息的抽象状态空间。例如,在机器人导航中,可以将周围环境的传感器读数抽象为“前方有障碍物”、“左侧有路径”。
动作抽象: 类似于选项框架,将一系列低级动作组合成一个高级动作。

HRL的优势总结

解决长时序问题: 通过分解,智能体可以学习到在每个阶段需要做什么,而不是在一个非常长的轨迹中学习一个全局最优策略。
提高样本效率: 已经学会的低级技能可以被重复利用,减少了从头学习的需要。
改善探索: 宏观策略可以在抽象空间中进行更有效的探索,指导低级策略进行有意义的行动。
易于理解和调试: 分层结构使得策略的各个部分更容易被理解和调试。
促进迁移学习: 学到的技能(选项、子任务)可以被组合起来解决新的、未见过但相关的任务。

HRL的挑战

尽管HRL具有诸多优势,但它也面临一些挑战:

子任务的定义: 如何自动地发现或学习有用的子任务是一个重要的研究方向。手工定义子任务限制了其通用性。
目标空间的定义: 宏观策略需要学习在哪个“目标空间”中进行决策。
学习的协调: 如何有效地协调宏观策略和微观策略的学习是一个难点。
奖励的定义: 如何设计合适的内在奖励和外在奖励来指导学习。
计算复杂度: 学习多个策略和复杂的结构可能带来更高的计算复杂度。

举例说明

让我们以一个简单的机器人导航任务为例,来更具体地说明HRL的工作方式:

任务: 机器人需要在房间 A 到房间 B 之间导航,其中房间 B 有一个目标物体。

传统 RL 的挑战:

机器人需要在一个大型的房间网络中探索,可能需要很长时间才能找到目标物体并获得奖励。
奖励可能只在到达目标房间并拿到物体时才出现,中间的移动过程没有奖励信号。

HRL 方法 (以选项框架为例):

1. 定义宏观策略 (MetaController):
状态: 机器人当前所在的房间(抽象状态)。
动作 (选项):
选项1: "去厨房"
选项2: "去客厅"
选项3: "去目标房间B"
选项4: "拾取物体"

2. 定义微观策略 (Controllers):
每个选项都对应一个微观策略,负责在当前低级状态下执行一系列低级动作。
选项1 "去厨房" 的微观策略:
内部策略: 根据传感器信息,输出低级动作如“前进”、“左转”、“右转”,直到到达厨房门口(终止条件)。
终止条件: 当机器人处于厨房门口的状态时终止。
内在奖励: 每次移动到离厨房更近一步,可以给一个积极的内在奖励。

3. 工作流程:
宏观策略 发现它在房间 A,目标是拿到物体。它首先选择 “去目标房间B” 这个选项。
微观策略 (“去目标房间B”) 开始执行。它可能需要先找到通往房间 B 的门。假设它首先选择“去客厅”的子选项。
微观策略 (“去客厅”) 开始执行,输出低级动作“前进”、“左转”等,直到到达客厅门口。
到达客厅门口后,“去客厅”选项终止。宏观策略收到一个信号,知道它已经“到达客厅”。
宏观策略根据当前状态(已到客厅)和剩余任务,可能选择“去目标房间B”的下一个阶段,或者直接选择“去目标房间B”的另一个路径。
最终,当机器人到达房间 B 门口时,“去目标房间B” 选项终止。
宏观策略现在发现它在房间 B,目标是拾取物体,于是选择 “拾取物体” 选项。
微观策略 (“拾取物体”) 执行拾取动作,直到物体被拾取。
整个任务完成,宏观策略获得最终的外部奖励。

通过这种方式,宏观策略只需要在有限的房间状态和有限的选项集合中做出决策,而微观策略则专注于如何在各个局部环境中有效地执行。这种分解大大简化了学习过程。

总结

分层强化学习是一种强大的技术,通过引入层次结构来解决复杂的强化学习问题。它将一个宏观任务分解为一系列可管理的子任务,并使用不同抽象层次的策略来解决这些子任务。这有助于提高样本效率、改善探索、处理长时序问题以及促进策略的泛化能力。尽管仍有许多挑战需要克服,但HRL在机器人、游戏、自然语言处理等领域展现了巨大的潜力。

网友意见

user avatar

可以从时间序列表示的角度入手介绍这个问题:

我们先来看下面文章:

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."Neuron88.1 (2015): 2-19.

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

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

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

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

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

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

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

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

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

到最后一个级别, 我们可以看到这已经不再是机械的时间序列处理, 而几乎是自然语言处理了。 你有没有想到一个重大的问题也就是语言的起源呢? 你有没有想到乔姆斯基的通用语法规则呢?除了上面介绍的方法,从时间序列到空间结构, 从时间序列到因果图, 都可以看做是很高级的序列表示生成方式。

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

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

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

REINFORCEMENT LEARNING WITH STRUCTURED HIERARCHICAL GRAMMAR REPRESENTATIONS OF ACTIONS

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的整个语法树,这里的方法像不像是刚刚讲过的从序列中生成代数结构和树结构的方法?



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

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

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

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

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有