DataWhale强化学习(二)

本文详细介绍了马尔可夫决策过程(MDP),包括马尔可夫过程、马尔可夫链、马尔可夫奖励过程及其在强化学习中的应用。阐述了状态转移矩阵、奖励函数、折扣因子的概念,并通过贝尔曼等式解释了价值函数的迭代关系。同时讨论了动态规划、蒙特卡罗和时序差分学习等求解价值函数的方法,以及备份和Q函数在MDP中的作用。最后,提到了预测问题和控制问题在强化学习中的不同处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一章节简述了agent和environment的交互过程,以及强化学习涉及到的策略函数,价值函数和模型的关系。这章节主要讲述马尔可夫决策过程。

马尔可夫过程

如果一个状态转移是符合马尔可夫的,那就是说一个状态的下一个状态只取决于它当前状态,而跟它当前状态之前的状态都没有关系。比如说我们这里有一个 h_t,它包含了之前的所有状态。但是这里的转移从当前 s_t转到 s_{t+1}状态,它是直接就等于它之前所有的状态。如果某一个过程满足马尔可夫性质(Markov Property),就是说未来的转移跟过去是独立的,它只取决于现在。马尔可夫性质是所有马尔可夫过程的基础。
在这里插入图片描述

马尔可夫链

首先看一看马尔可夫链(Markov Chain)。举个例子,这个图里面有四个状态,这四个状态从 s_1,s_2,s_3,s_4之间互相转移:
在这里插入图片描述
比如说从 s_1开始,

  • s_1有 0.1 的概率继续存活在 s_1状态
  • 有 0.2 的概率转移到 s_2
  • 有 0.7 的概率转移到 s_4

如果 s_4是我们当前状态的话

  • 它有 0.3 的概率转移到 s_2
  • 有 0.2 的概率转移到 s_3
  • 有 0.5 的概率留在这里

我们可以用状态转移矩阵(State Transition Matrix)来描述这样的状态转移。状态转移矩阵类似于一个 conditional probability,当我们知道当前我们在 s_t这个状态过后,到达下面所有状态的一个概念。所以它每一行其实描述了是从一个节点到达所有其它节点的概率.
在这里插入图片描述
举个例子
我们这里有七个状态。比如说从 s_1开始到 s_2,它有 0.4 的概率,然后它有 0.6 的概率继续存活在它当前的状态。 s_2有 0.4 的概率到左边,有 0.4 的概率到 s_3,有 0.2 的概率存活在现在的状态,所以给定了这个状态转移的马尔可夫链后,我们可以对这个链进行采样,这样就会得到一串的轨迹。

下面我们有三个轨迹,都是从同一个起始点开始。假设还是从 s_3这个状态开始:

  • 第一条链先到了 s_4s, 又到了 s_5,又往右到了 s_6,然后继续存活在 s_6状态。
  • 第二条链从 s_3开始,先往左走到了 s_2,然后它又往右走,又回到了s_3,然后它又往左走,然后再往左走到了 s_1。
  • 通过对这个状态的采样,我们生成了很多这样的轨迹。
    在这里插入图片描述

马尔可夫奖励过程

马尔可夫奖励过程(Markov Reward Process, MRP) 是马尔可夫链再加上了一个奖励函数。在 MRP 中,转移矩阵跟它的这个状态都是跟马尔可夫链一样的,多了一个奖励函数(reward function)。奖励函数是一个期望,就是说当你到达某一个状态的时候,可以获得多大的奖励,然后这里另外定义了一个 discount factor gammaγ 。
马尔可夫链,如果把奖励也放上去的话,就是说到达每一个状态,我们都会获得一个奖励。这里我们可以设置对应的奖励,比如说到达 s_1状态的时候,可以获得 5 的奖励,到达 s_7的时候,有 10 的奖励,其它状态没有任何奖励。因为这里状态是有限的,所以我们可以用一个向量来表示这个奖励函数,这个向量表示了每个点的奖励的大小。

我们可以通过一个形象的例子来理解 MRP,你可以把它看成一个纸船。我们把一个纸船放到河流之中,那么它就会随着这个河流而流动,它自身是没有动力的,所以你可以把 MRP 看成是一个随波逐流的例子,当我们从某一个点开始的时候,这个纸船就会随着事先定义好的状态转移进行流动,它到达每个状态过后,我们就有可能获得一些奖励。
在这里插入图片描述

为什么需要 discount factor

有些马尔可夫过程是带环的,它并没有终结,我们想避免这个无穷的奖励。
我们并没有建立一个完美的模拟环境的模型,也就是说,我们对未来的评估不一定是准确的,我们不一定完全信任我们的模型,因为这种不确定性,所以我们对未来的预估增加一个折扣。我们想把这个不确定性表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。
如果这个奖励是有实际价值的,我们可能是更希望立刻就得到奖励,而不是后面再得到奖励(现在的钱比以后的钱更有价值)。
在人的行为里面来说的话,大家也是想得到即时奖励。
有些时候可以把这个系数设为 0,设为 0 过后,我们就只关注了它当前的奖励。我们也可以把它设为 1,设为 1 的话就是对未来并没有折扣,未来获得的奖励跟当前获得的奖励是一样的。

Bellman Equation(贝尔曼等式)

Bellman Equation 定义了当前状态跟未来状态之间的这个关系:
s′可以看成未来的所有状态。
转移 P(s’|s)指从当前状态转移到未来状态的概率。
第二部分可以看成是一个 Discounted sum of future reward。
V(s’)代表的是未来某一个状态的价值。我们从当前这个位置开始,有一定的概率去到未来的所有状态,所以我们要把这个概率也写上去,这个转移矩阵也写上去,然后我们就得到了未来状态,然后再乘以一个 \gammaγ,这样就可以把未来的奖励打折扣。

Bellman Equation 定义了状态之间的迭代关系。假设有一个马尔可夫转移矩阵是右边这个样子。Bellman Equation 描述的就是当前状态到未来状态的一个转移。假设我们当前是在 s_1, 那么它只可能去到三个未来的状态:有 0.1 的概率留在它当前这个位置,有 0.2 的概率去到 s_2状态,有 0.7 的概率去到 s_4的状态,所以我们要把这个转移乘以它未来的状态的价值,再加上它的 immediate reward 就会得到它当前状态的价值。所以 Bellman Equation 定义的就是当前状态跟未来状态的一个迭代的关系。
在这里插入图片描述
我们可以把 Bellman Equation 写成一种矩阵的形式。首先有这个转移矩阵。我们当前这个状态是一个向量。我们可以写成迭代的形式。我们每一行来看的话,VV 这个向量乘以了转移矩阵里面的某一行,再加上它当前可以得到的 reward,就会得到它当前的价值。
当我们写成如下的矩阵形式:V=R+γPV
就可以直接得到一个解析解(analytic solution):
在这里插入图片描述
我们可以通过矩阵求逆的过程把这个 V 的这个价值直接求出来。但是一个问题是这个矩阵求逆的过程的复杂度是 O(N^3)。所以当状态非常多的时候,比如说从十个状态到一千个状态,到一百万个状态。那么当我们有一百万个状态的时候,这个转移矩阵就会是个一百万乘以一百万的矩阵,这样一个大矩阵的话求逆是非常困难的,所以这种通过解析解去解,只能对于很小量的 MRP。

求解价值函数

迭代的方法就有几种:
我们可以通过动态规划的方法,
也可以通过蒙特卡罗的办法,就通过采样的办法去计算它,
也可以通过 Temporal-Difference Learning 的办法。这个 Temporal-Difference Learning 叫 TD Leanring,它是动态规划和蒙特卡罗的一个结合。

蒙特卡罗法

蒙特卡罗就跟我们之前采用的这个方法很类似,就说我们当得到一个 MRP 过后,我们可以从某一个状态开始,把这个小船放进去,让它随波逐流,这样就会产生一个轨迹。产生了一个轨迹过后,就会得到一个奖励,那么就直接把它的 discounted 的奖励 gg 算出来。算出来过后就可以把它积累起来,得到 return G_t。 当积累到一定的轨迹数量过后,直接用 G_t除以轨迹数量,就会得到它的价值。

动态规划法

一直去迭代它的 Bellman Equation,让它最后收敛,我们就可以得到它的一个状态。所以在这里算法二就是一个迭代的算法,通过 bootstrapping(拔靴自助) 的办法,然后去不停地迭代这个 Bellman Equation。当这个最后更新的状态跟你上一个状态变化并不大的时候,更新就可以停止,我们就可以输出最新的 V’(s)作为它当前的状态。所以这里就是把 Bellman Equation 变成一个 Bellman Update,这样就可以得到它的一个价值。

马尔可夫决策过程

相对于 MRP,马尔可夫决策过程(Markov Decision Process)多了一个 decision,其它的定义跟 MRP 都是类似的。这里我们多了一个决策,多了一个 action ,那么这个状态转移也多了一个 condition,就是你采取某一种行为,然后你未来的状态会不同。它不仅是依赖于你当前的状态,也依赖于在当前状态你这个 agent 它采取的这个行为会决定它未来的这个状态走向。对于这个价值函数,它也是多了一个条件,多了一个你当前的这个行为,就是说你当前的状态以及你采取的行为会决定你在当前可能得到的奖励多少。
顺着 MDP 的定义,我们可以把 state-value function,就是在 MDP 里面的价值函数也进行一个定义,它的定义是跟 MRP 是类似的,但是这里 expectation over policy,就是这个期望是基于你采取的这个 policy ,就当你的 policy 决定过后,我们通过对这个 policy 进行采样来得到一个期望,那么就可以计算出它的这个价值函数。

Q函数

我们另外引入了一个 Q 函数(action-value function)。这个 Q 函数定义的是在某一个状态采取某一个行为,然后它有可能得到的这个 return 的一个期望。这里期望其实也是 over policy function。所以你需要对这个 policy function 进行一个加和,然后最后得到它的这个价值。
对 Q 函数中的行为函数进行加和,就可以得到价值函数。
在这里插入图片描述
这里有一个概念叫 Backup。Backup 类似于 bootstrapping 之间这个迭代关系,就对于某一个状态,它的当前这个价值是跟它未来价值线性相关的。你可以看到我们这里有两层加和。第一层加和就是这个叶子节点,然后往上走一层的话,我们就可以把未来的这个价值 s’s

backup 到黑色的节点。然后再有一层加和,第二层加和,这个加和是把 action 进行加和。得到黑色节点的价值过后,再往上 backup 一层,然后就会推到根节点的价值,根节点就是我们当前状态。所以 Backup Diagram 定义了你未来下一时刻的状态跟你上一时刻的状态之间的一个关联。
在这里插入图片描述
同样对于 Q 函数,我们也可以进行这样的一个推导,就现在的根节点是这个 Q 函数的一个节点。这个 Q 函数是对于黑色的这个节点。我们下一时刻的这个 Q 函数是叶子节点,有四个黑色结点。那么我们这里也有两个加和。

第一层加和是先把这个叶子节点从黑节点推到这个白色的这个节点,进了它的这个状态,就当我们到达某一个状态过后,这个白色极点,然后再进行一个加和,这样就把它重新推回到当前节点的一个 Q 函数,所以这个等式就决定了未来 Q 函数跟当前 Q 函数之间的这个关联。
在这里插入图片描述

总结

就对于 MDP 里面的 prediction 和 control 都是用动态规划来讲,我们其实采取了不同的 Bellman Equation。

  • 如果是一个 prediction 的问题,即 policy evaluation 的问题,那就直接是把这个 Bellman Expectation Equation 拿进来,就是不停地 run 这个 Bellman Expectation Equation,这样我们就可以去估计出给定的这个策略,然后可以得到的价值函数。
  • 对于 control,
  •  如果采取的算法是 policy iteration,那这里用的是 Bellman Expectation Equation 。把它分成两步,先上它的这个价值函数,再去优化它的策略,然后不停迭代。这里用到的只是 Bellman Expectation Equation。
    
  •  如果采取的算法是 value iteration,那这里用到的 Bellman Equation 就是 Bellman Optimality Equation,通过 arg max 这个过程,不停地去 arg max 它,最后它就会达到最优的状态。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值