马尔科夫奖励过程


avatar
GuoYulong 2024-08-21 320

原文链接:第二章 马尔可夫决策过程 (MDP) (datawhalechina.github.io)

马尔可夫奖励过程(Markov reward process, MRP)是马尔可夫链加上奖励函数。在马尔可夫奖励过程中,状态转移矩阵和状态都与马尔可夫链一样,只是多了奖励函数(reward function)。奖励函数 R 是一个期望,表示当我们到达某一个状态的时候,可以获得多大的奖励。这里另外定义了折扣因子 γ 。如果状态数是有限的,那么 R 可以是一个向量。

回报与价值函数

这里我们进一步定义一些概念。范围(horizon) 是指一个回合的长度(每个回合最大的时间步数),它是由有限个步数决定的。 回报(return)可以定义为奖励的逐步叠加,假设时刻 t 后的奖励序列为 rt+1,rt+2,rt+3,⋯ 则回报为

Gt=rt+1+γrt+2+γ2rt+3+γ3rt+4++γTt1rT

​其中,T是最终时刻,γ 是折扣因子,越往后得到的奖励,折扣越多。这说明我们更希望得到现有的奖励,对未来的奖励要打折扣。当我们有了回报之后,就可以定义状态的价值了,就是状态价值函数(state-value function)。对于马尔可夫奖励过程,状态价值函数被定义成回报的期望,即

Vt(s)=E[Gtst=s]=E[rt+1+γrt+2+γ2rt+3++γTt1rTst=s]

其中,Gt 是之前定义的折扣回报(discounted return)。我们对Gt取了一个期望,期望就是从这个状态开始,我们可能获得多大的价值。所以期望也可以看成未来可能获得奖励的当前价值的表现,就是当我们进入某一个状态后,我们现在有多大的价值。

我们使用折扣因子的原因如下。第一,有些马尔可夫过程是带环的,它并不会终结,我们想避免无穷的奖励。第二,我们并不能建立完美的模拟环境的模型,我们对未来的评估不一定是准确的,我们不一定完全信任模型,因为这种不确定性,所以我们对未来的评估增加一个折扣。我们想把这个不确定性表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。第三,如果奖励是有实际价值的,我们可能更希望立刻就得到奖励,而不是后面再得到奖励(现在的钱比以后的钱更有价值)。最后,我们也更想得到即时奖励。有些时候可以把折扣因子设为 0(γ=0),我们就只关注当前的奖励。我们也可以把折扣因子设为 1(γ=1),对未来的奖励并没有打折扣,未来获得的奖励与当前获得的奖励是一样的。折扣因子可以作为强化学习智能体的一个超参数(hyperparameter)来进行调整,通过调整折扣因子,我们可以得到不同动作的智能体。

在马尔可夫奖励过程里面,我们如何计算价值呢?如图 2.4 所示,马尔可夫奖励过程依旧是状态转移,其奖励函数可以定义为:智能体进入第一个状态 s1 的时候会得到 5 的奖励,进入第七个状态 s7 的时候会得到 10 的奖励,进入其他状态都没有奖励。我们可以用向量来表示奖励函数,即

R=[5,0,0,0,0,0,10]

图 马尔可夫奖励过程的例子​

我们对 4 步的回合(γ=0.5)来采样回报 G

(1)s4,s5,s6,s7的回报:0+0.5×0+0.25×0+0.125×10=1.25

(2)s4,s3,s2,s1的回报:0+0.5×0+0.25×0+0.125×5=0.625

(3)s4,s5,s6,s6的回报:0+0.5×0+0.25×0+0.125×0=0

我们现在可以计算每一个轨迹得到的奖励,比如我们对轨迹 s4,s5,s6,s7 的奖励进行计算,这里折扣因子是 0.5。在 s4 的时候,奖励为0。下一个状态 s5 的时候,因为我们已经到了下一步,所以要把 s5 进行折扣,s5 的奖励也是0。然后是 s6,奖励也是0,折扣因子应该是0.25。到达 s7 后,我们获得了一个奖励,但是因为状态 s7 的奖励是未来才获得的奖励,所以我们要对之进行3次折扣。最终这个轨迹的回报就是 1.25。类似地,我们可以得到其他轨迹的回报。

这里就引出了一个问题,当我们有了一些轨迹的实际回报时,怎么计算它的价值函数呢?比如我们想知道 s4 的价值,即当我们进入 s4 后,它的价值到底如何?一个可行的做法就是我们可以生成很多轨迹,然后把轨迹都叠加起来。比如我们可以从 s4 开始,采样生成很多轨迹,把这些轨迹的回报都计算出来,然后将其取平均值作为我们进入 s4 的价值。这其实是一种计算价值函数的办法,也就是通过蒙特卡洛(Monte Carlo,MC)采样的方法计算 s4 的价值。

相关阅读

注意!!!

站点域名更新!!!部分文章图片等由于域名问题无法显示!!!

通知!!!

站点域名更新!!!部分文章图片等由于域名问题无法显示!!!