前言

学习赵老师讲授的强化学习的数学原理视频,本篇文章记录第一讲 Part 1:基本概念(State,action,policy 等),记录个人学习笔记,和大家一起分享交流😄

videohttps://www.bilibili.com/video/BV1sd4y167NS

1. Contents

这次是我们强化学习的第一次课,这次课我们将会介绍 强化学习当中的基本概念,这些基本概念将在我们后续的课程当中被广泛地使用,所以 非常的重要

这次课基本上包括两部分内容:

  • 第一部分,我们会介绍一些概念,通过 例子的方法
  • 第二部分,我们会把这些概念以一种 更加正式的方式 给介绍出来,并且是在 马尔可夫决策过程Markov decision process, MDP) 框架下。

2. A gird-world example

首先,本课程包括本节课会广泛使用的一个例子是什么呢?那就是 grid-world example

什么是 grid-world 呢?其实就是一个 网格世界,有一个机器人在其中移动,网格世界中的每个格子有不同的类型,比如说有的网格是 accessible,就是可以进去的,用白色来表示。另外有 forbidden 禁止区域,用黄色来表示,另外还有 target area 目标区域,我们希望它能够进到这个领域当中。此外,这个网格世界是有一个 边界 的,不过机器人只能在相邻的格子之间进行移动,不能在斜的方向进行移动。

我们为什么要考虑这样一个例子呢?这是因为它是 非常容易去理解,也 非常地直观,之后大家会发现,其实用它来介绍很多概念的时候会 非常地清晰

强化学习这个例子当中的 任务 是什么呢?就是它要找到一个比较好的路径或者好的方法到达 目标区域,比如说它从起始点出发,我们希望它能够找到一个比较好的路径到达目标,这个就是 grid-world example 的一个任务

这里边有一些问题,比如说我怎么样去定义一个路径究竟是好还是坏?这个其实是一个 非常核心的问题,之后我们会详细定义,什么是 最优的策略最优的路径 等等。观上来说,一个好的路径应该满足:

  • 1. 尽量避免进入 forbidden area;
  • 2. 不做无意义的转弯;
  • 3. 不试图超越边界(例如在起始点往上或往左走,都是应该避免的)。

3. State

OK,下面我们用这个例子来介绍我们整门课程当中的第一个概念: State(状态)

state 是一个非常重要的概念,它其实描述的就是 agent(智能体) 相对于环境的 一个状态(status)

然后在 grid-world example 当中 state 指的是什么呢?就是指的 location(位置),这里边有 s 1 , s 2 , … , s 9 s_1,s_2,\ldots,s_9 s1,s2,,s9 ,有这么多个 location。我们就用 s 1 , s 2 s_1,s_2 s1,s2 这些字母来代替,来表示这些状态。

这些字母比如说 s 1 s_1 s1 实际上它是一个 索引,它真正对应的状态当然是在 二维平面上的位置,x 方向的位置 x 和 y 方向的位置 y。如果是更加复杂的问题,有可能除了位置之外还要对应 速度,如果是机器人的话还要对应 加速度 等等,或者是其他类型当中的状态信息。

OK,这个就是 state 状态,如果我们把所有的状态放到一起,我们就得到了 状态空间(state space)

S = { s 1 , s 2 , … , s 9 } \mathcal{S} = \{ s_1, s_2, \ldots, s_9 \} S={s1,s2,,s9}

空间 这个词,大家可能第一次听说的时候,会感觉非常的高大上,线性空间什么的,实际上不用这么害怕,其实这空间其实就是一个 集合 set

什么意思呢?我们用 S \mathcal{S} S 来表示 状态空间,它就是把所有的状态 s i s_i si 给放到一起得到的一个 集合,花括号 { } \{\} {} 代表的就是一个集合。

4. Action

下一个概念 Action(动作),非常重要的概念,非常基本的一个概念。

Action 是什么呢?就是我在 每一个状态实际上是有一系列的可采取的行动,在这个里面一共有 5 个行动, a 1 a_1 a1 a 5 a_5 a5 ,具体来说是什么?

  • a 1 a_1 a1:从当前状态往上走
  • a 2 a_2 a2:从当前状态往右走
  • a 3 a_3 a3:从当前状态往下走
  • a 4 a_4 a4:从当前状态往左走
  • a 5 a_5 a5:原地不动

如果我把所有的这些 action 放到一起,我就得到了 动作空间 Action space

A ( s i ) = { a j } j = 1 5 \mathcal{A}(s_i) = \{ a_j \}_{j=1}^5 A(si)={aj}j=15

Action space 我们用 A \mathcal{A} A 来表示,和前面一样实际上这是一个 集合,然后我把所有的 a a a 放到了一起。值得指出的是,action space 是与状态相关的,在一般问题中,不同状态的 action space 可能不同。虽然在当前 grid-world 例子中每个状态都有相同的 5 个 action,但后文我们会看到并非总是如此。所以这个就是我们为什么这里要有一个 ( s i ) (s_i) (si) ,这就表示 A \mathcal{A} A 实际上是 s i s_i si 的这样一个 函数

5. State transition

下一个概念 State transition(状态转移)

这是什么意思呢?就是当我采取一个 action 的时候,这个 agent 可以从一个 state 移动到另一个 state,这样的过程就被称为 state transition

我们举一个例子,比如说在状态 s 1 s_1 s1 ,如果我采取 action 是 a 2 a_2 a2 ,刚才我们提到了 a 1 a_1 a1 是向上, a 2 a_2 a2 是向右, a 3 a_3 a3 是向下, a 4 a_4 a4 是向左, a 5 a_5 a5 是原地不动,之后我们会频繁地用到,所以希望大家能够把这个放到脑子里边记一下。

所以我在 s 1 s_1 s1 然后我采取 a 2 a_2 a2 是要往右走,下一个状态是什么呢?我就会跳到 s 2 s_2 s2 ,所以这样一个过程就可以用

s 1 → a 2 s 2 s_1 \xrightarrow{a_2} s_2 s1a2 s2

这个式子来表示出来,我在 s 1 s_1 s1 我采取动作 a 2 a_2 a2 然后跳到了 s 2 s_2 s2

我们看另外一个例子:

s 1 → a 1 s 1 s_1 \xrightarrow{a_1} s_1 s1a1 s1

我在 s 1 s_1 s1 ,然后我采取动作 a 1 a_1 a1 a 1 a_1 a1 是什么?就是往上走,下一个状态是什么呢? s 1 s_1 s1 a 1 a_1 a1 下一个状态是 s 1 s_1 s1 ,这是怎么回事呢?

我在 s 1 s_1 s1 ,然后我要往上走,我会撞到这个 边界 是吧,如果边界是一堵墙的话我会被 撞回来,就还是回到 s 1 s_1 s1 ,我不会出去,所以这个是这种情况下的 state transition

State transition 实际上是定义 agent 和环境的一种交互的行为,我们在这里边能不能用其他的方式来定义这种交互的行为呢?首先,因为这是一个仿真/游戏,我们实际上可以 任意地定义 这种交互,比如说我刚才是往上走的时候撞到墙了,我会被弹回来,也可能会被弹到下边去,下一个状态是 s 4 s_4 s4 ,甚至可能会被弹到最下边去,下一个状态是 s 7 s_7 s7

因为它是游戏,我们想怎么定义就怎么定义,但是在 实际当中 并不是这个样子,比如说机器人就在起始点,然后它要往右边移动一点,那它不可能想跑到哪个状态就跑到哪个状态,所以 实际当中我们不能任意定义,但是在游戏当中其实我们是可以的。

我们下面来关注一下 Forbidden area

比如说我们在 s 5 s_5 s5 ,然后我们采取动作 a 2 a_2 a2 ,也就是往右走,下一个状态是什么?其实这里边是有 两种情况

第一种情况, Forbidden area 虽然它是静止的,但是它仍然是 可以进去的,只不过进去的时候会被惩罚,所以它是可以进去,那这时候我在 s 5 s_5 s5 采取 a 2 a_2 a2 之后下一个状态就是 s 6 s_6 s6 ,也就是它进到这里边了,也就是

s 5 → a 2 s 6 s_5 \xrightarrow{a_2} s_6 s5a2 s6

第二种情况是什么?就是 Forbidden area 物理上它就是 无法进入的,比如说它周围是装上了墙,怎么都进不去,那这时候 s 5 s_5 s5 然后 a 2 a_2 a2 那它就会被弹回来,又回到了 s 5 s_5 s5 ,也就是

s 5 → a 2 s 5 s_5 \xrightarrow{a_2} s_5 s5a2 s5

在我们课程当中,我们考虑的是 第一种情况,也就是我们认为 forbidden area 虽然是 forbidden,但是它可以进去,只不过它会得到惩罚,这种情况相比第二种情况,实际上是 更加一般化,也更加难,为什么呢?因为如果排除掉一些状态,状态空间变小,搜索会更加容易。

此外,如果我们认为 forbidden area 是可以进去的,还会出现一些有趣的现象。例如:虽然进入 forbidden area 会受到惩罚,但穿过去可能是到达 target area 的最短路径。因此 agent 可能会冒险进入 forbidden area,再穿越到 target area。这会带来一些比较有意思的行为,之后我们会详细介绍。

State transition 还可以用下面这种 tabular 表格的形式 表现出来。

有这样一个表格,这个表格的每一行都对应了每一个状态,这个表格的每一列都对应了这样一个 action,比如说我在 s 1 s_1 s1 我采取动作 a 1 a_1 a1 ,也就是往上走,我会被弹回来,下一个状态就是 s 1 s_1 s1

这里边任何的所有的每一个状态每一个 action 它都有定义,虽然这个 表格的形式是比较直观的,但是在实际当中用的是 比较受限,为什么?因为它只能表示这种 deterministic 也就是 确定性的情况。比如说我在 s 1 s_1 s1 然后我采取动作 a 1 a_1 a1 ,我也有可能跑到 s 1 s_1 s1 ,我也可能被弹回到 s 4 s_4 s4 ,我甚至可能被弹回到 s 7 s_7 s7 ,也就是说有 多个状态存在这样的可能性,这时候这个表格是无法表达的。

所以这时候其实我们更一般的方法是什么呢?用 state transition probability

这是我们第一次把 probability 引进到里边,这个的直观是什么?比如说我在 s 1 s_1 s1 我采取动作 a 2 a_2 a2 ,也就是我要往右走,下一个状态就是 s 2 s_2 s2 ,所以这个是一个语言的叙述,一个直观的表达,它的数学是什么呢?数学我们就用 conditional probability 条件概率

p ( s 2 ∣ s 1 , a 2 ) = 1 p ( s i ∣ s 1 , a 2 ) = 0 ∀ i ≠ 2 \begin{align*} p(s_2 | s_1, a_2) &= 1 \\ p(s_i | s_1, a_2) &= 0 \quad \forall i \neq 2 \end{align*} p(s2s1,a2)p(sis1,a2)=1=0i=2

这是我们第一次提到 条件概率,如果大家对这个不熟悉的话,可以到书 [book] 的附录当中,有专门针对初步的条件概率的一些介绍,包括其他的概率论的一些介绍,但是大家没学过也没有关系 因为 非常地直观

那就是说如果现在我是在 s 1 s_1 s1 ,并且我现在采取动作 a 2 a_2 a2 ,那么我下一个时刻我跳到 s 2 s_2 s2概率 是多少?这时候它告诉我们它的概率是 1。同样的,我在 s 1 s_1 s1 ,我采取动作 a 2 a_2 a2 ,我下一个时刻跳到 s i s_i si ,如果 i ≠ 2 i\neq 2 i=2 ,也就是跳到其它任意一个状态的 概率 是多少呢?是 0,这个就是用 条件概率 来描述 state transition

当然这里边仍然是一个 确定性的一个例子,但是 条件概率 是能来描述这种 随机性的这种例子,比如说有风,刚才我们说了它在 s 1 s_1 s1 ,然后它要往右走,它会到 s 2 s_2 s2 ,因为有风的原因,它可能 50% 的概率跑到这,50% 的概率跑到 s 5 s_5 s5 ,所以这时候我们就可以写成:

p ( s 2 ∣ s 1 , a 2 ) = 0.5 p ( s 5 ∣ s 1 , a 2 ) = 0.5 \begin{align*} p(s_2 | s_1, a_2) &= 0.5 \\ p(s_5 | s_1, a_2) &= 0.5 \end{align*} p(s2s1,a2)p(s5s1,a2)=0.5=0.5

所以这时候它就可以用 概率的形式 来描述, 随机的这样一个 state transition,所以 概率的形式是更加地一般化

6. Policy

OK,下面我们来介绍一个非常重要的概念 Policy(策略),这个也是 强化学习当中独有的一个概念

Policy 是什么?就是它会告诉 agent 我如果在一个 状态 我应该采取哪一个 action,直观上的理解 policy 我们是用 箭头 来表示的,大家可以看到上图中这里边有 9 个状态,每一个状态都对应一个箭头,当然最后的 s 9 s_9 s9 这个不是箭头,这个是对应一个圆圈,它代表是 待在原地不动

那么,这样一个策略我就可以用箭头来表示,基于这个策略,实际上我们可以得到一些 path(路径) 或者叫 trajectory(轨迹),这个之后我们会再详细地介绍,但是这边我们先通过一些直观来展示给大家。

什么是 path 或者 trajectory?假如说我从起点出发,这个绿色的箭头就是 策略,我在 s 1 s_1 s1 的时候,这个策略告诉我 我应该往右走,根据刚才的 state transition probability,我下一个时刻我就会被跳到 s 2 s_2 s2 这边,我到这了之后这个策略,绿色的箭头告诉我应该向下走,我往下走我就会跳到 s 5 s_5 s5 这个状态,然后依次类推,我这个策略让我继续往下走,我跳到 s 8 s_8 s8 这,策略让我往右边走,然后我到 s 9 s_9 s9 这,到这之后,这个策略让我就 待在原地不动

所以我从 s 1 s_1 s1 出发的话,我就会得到如图这样一个 path,如果我从 s 3 s_3 s3 这边出发的话,自然根据策略,然后再根据状态转移,我就会走到左边去,如果我从 s 7 s_7 s7 这边出发的话,我根据策略和状态转移,我就会走到右边去,也是比较直观的。

刚才的策略是用 箭头 来表示,实际当中我们肯定对于稍微复杂一点的情况,我们都不能用这么直观的形式来表示,所以我们要用一种更加能够描述复杂情况、一般化情况的一种方法,是什么呢? 就是 数学的表达方式 仍然是用 条件概率

我们举一个例子,针对 s 1 s_1 s1 它的策略 π \pi π ,在 强化学习中, π \pi π 统一用来表示策略 π \pi π 是一个什么呢?它就是一个 条件概率,它指定了 任何一个状态下任何一个 action 它的概率是多少

比如说针对 s 1 s_1 s1 ,在 s 1 s_1 s1 下它采取动作 a 1 a_1 a1 也就是往上走的概率是 0,在 s 1 s_1 s1 下它采取动作 a 2 a_2 a2 也就是往右走的概率是 1,其他所有的 action 的概率全都是 0,针对任意一个状态,其所有 action 的概率之和等于1,这个就是一个 策略

当然这里边我们只是说了这个 s 1 s_1 s1 ,那还有 s 2 s_2 s2 一直到 s 9 s_9 s9 ,也就是说 对每一个状态我们都要有它的策略,然后这个情况是什么呢?这个情况是一个 确定性的情况,也就是我在 s 1 s_1 s1 我一定会采取 a 2 a_2 a2 ,实际上也存在这种不确定性的情况,也就是 stochastic 的 policy

比如说从 s 1 s_1 s1 这个地方出发, Policy 实际上有 0.5 的概率是要往右走,有另外 0.5 的概率是要往下走,如果这时候我从 s 1 s_1 s1 这个地方出发,有可能我得到的是先右再下这样一条轨迹,我也有可能得到是先下再右这样一条轨迹,所以这个时候 策略是不确定的

我用刚才的 条件概率的形式 来表示其实也非常简单:

π ( a 1 ∣ s 1 ) = 0 π ( a 2 ∣ s 1 ) = 0.5 π ( a 3 ∣ s 1 ) = 0.5 π ( a 4 ∣ s 1 ) = 0 π ( a 5 ∣ s 1 ) = 0 \begin{align*} \pi(a_1 | s_1) &= 0 \\ \pi(a_2 | s_1) &= 0.5 \\ \pi(a_3 | s_1) &= 0.5 \\ \pi(a_4 | s_1) &= 0 \\ \pi(a_5 | s_1) &= 0 \end{align*} π(a1s1)π(a2s1)π(a3s1)π(a4s1)π(a5s1)=0=0.5=0.5=0=0

那就是 s 1 s_1 s1 我采取 a 2 a_2 a2probability 是0.5, s 1 s_1 s1 采取 a 3 a_3 a3probability 是 0.5,它俩 相加之和是等于 1 的,自然所有其它的 action 的 probability 全是 0,所以有时候我们就省略掉了,但是大家知道,就是 每一个 action 其实都有概率 只不过它是 0 而已

OK,这个策略也可以用下面这种 表格的形式 来表达出来。

表格中每一行对应一个状态,每一列对应一个 action。比如说 s 5 s_5 s5 它采取往下走的这样一个 action,它的概率是多少呢?它的概率是 1,所以这个对于 s 5 s_5 s5 来说 它是有一个 确定性的策略,那么对于 s 1 s_1 s1 来说 它有 0.5 的概率是 a 2 a_2 a2 ,0.5 的概率是 a 3 a_3 a3 ,所以对 s 1 s_1 s1 来说它是一个 不确定性 stochastic 的一个策略

这种表格实际上它是 非常通用的,它能够描述这种 确定性的和这种随机性的情况,实际上我们在 编程的时候就是这么做的,就是我们会用一个数组或者用一个矩阵来表示这样一个策略。

另外我提一下就是在实际当中大家怎么样去 执行策略,比如说我有 0.5 的概率是 a 2 a_2 a2 ,0.5 的概率是 a 3 a_3 a3 ,那我在这个编程的时候,我怎么样去实现呢?

其实也很简单,就是我们从 0 到 1 进行一个 随机的采样,比如说它是均匀分布,很多的软件都有这样的功能,然后我得到一个 x x x ,当这个 x x x 是属于 [ 0 , 0.5 ) [0,0.5) [0,0.5) 的时候 我就采取 a 2 a_2 a2 ,当 x x x 属于 [ 0.5 , 1 ] [0.5,1] [0.5,1] 的时候 我就采取 action a 3 a_3 a3 ,大概是这样一个意思。

结语

在本讲的第一部分中,我们通过一个直观的 grid-world 例子,逐步引入了强化学习中几个最核心的基本概念:State(状态)、Action(动作)、State transition(状态转移)以及 Policy(策略)。这些概念是后续学习马尔可夫决策过程(MDP)框架的基础,贯穿整个强化学习课程的始终。

值得特别注意的是数学语言在这门课中的重要性—我们不仅用直观的箭头和图示来描述概念,更用条件概率的形式对状态转移和策略进行了严格的数学定义。这种数学化的表达方式虽然初看可能有些抽象,但它能够统一地描述确定性和随机性两种情况,是后续理论推导的基石。

下一讲我们将继续深入,在 MDP 的框架下对这些概念进行更加形式化的介绍,并进一步引入 Reward(奖励)和 Return(回报)等关键概念,敬请期待 🤗。

参考

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐