强化学习的数学原理-02贝尔曼公式

Motivating examples

一个核心概念:state value

一个基本的工具:Bellman equation

为什么return是重要的?

return可以用来评估policy

下面计算3个例子

1729524040544.png

计算return的方法:

1729524140848.png

第一种方法:(by definition|通过定义)

vi表示从si开始得到的return

v1=r1+γr2+γ2r3+...v2=r2+γr3+γ2r4+...v3=r3+γr4+γ2r1+...v4=r4+γr1+γ2r2+...

第二种方法:

v1=r1+γr2+γ2r3+...=r1+γ(r2+γr3+...)=r1+γv2

其他式子依次类推

上面的式子从直观上讲,就是从s1跳到s2

然后可以发现return之间彼此依赖,一个return会依赖于其他return,这种想法是Bootstrapping

上面的式子是有循环依赖的,如何解决上面的式子.

先把上面的式子写成矩阵形式

1729524930165.png

然后再把上面的式子写成一个更简化的形式就是:

v=r+γPvv(IγP)=rv=r(IγP)1

于是就求出了v

v=r+γPv

这个就是贝尔曼公式,只不过是对于确定问题的.

state value

StAtRt+1,St+1

  • t,t+1:指的是具体的时刻
  • St:指的是t时刻的状态
  • At:在t时刻采取的action
  • Rt+1:在采取At后得到的reward
  • St+1:在采取At转移到的状态

上面的Rt+1也可以写成Rt,但一般写成Rt+1,理解其含义即可.

注意上面的St+1,At,Rt+1都是大写,这表示这些变量都是随机变量(random varibles),我们可以对这些随机变量做一些操作如:期望(Expection)

所有这些跳跃都是由probabilitydistributions

  • StAt是由π(At=a|St=s)
  • St,AtRt+1是由p(Rt+1=r|St=s,At=a)
  • St,AtSt+1是由p(St+1=s|St=s,At=a)

把上面单步的操作推广就可以得到多步的操作(multi-step trajectory)

StAtRt+1,St+1At+1Rt+2,St+2At+2Rt+3,...

上面的trajectory可以求discounted return

Gt=Rt+1+γRt+2+γ2Rt+3+...

  • γ[0,1) 是一个折扣率
  • Gt,Rt,Rt+1是随机变量

在有了上面的铺垫之后就可定义statevalue

vπ(s)=E[GtSt=s]

state value实际上就是对Gt求期望,state value全称是叫state value function

  • 对于state value,他是s的函数
  • state value是策略的函数,可以这样写v(s,π)vπ(s)是等价的,为了简单起见用后面的形式

return和state value的区别,return是针对单个tragectory而言的,而state是针对多个trajectory而言的,如果从一个状态出发可以得到多个trajectory那么return和state value是有区别的,如果从一个状态出发得到的trajectory是确定的,那么return和state value是没有区别的.

1729527756356.png

Bellman equation

上面说了statevalue的定义,下面就是要说明如何计算statevalue,计算statevalue的工具就是贝尔曼公式

用一句话描述贝尔曼公式的话就是它描述了不同状态的statevalue之间的关系

首先考虑一个trajectory

StAtRt+1,St+1At+1Rt+2,St+2At+2Rt+3,...

然后可以计算Gt

Gt=Rt+1+γRt+2+γ2Rt+3+...=Rt+1+γGt+1

下面是state value的定义

vπ(s)=E[GtSt=s]=E[Rt+1+γGt+1St=s]=E[Rt+1St=s]+γE[Gt+1St=s]

下面就是分别分析这两部分,计算出这两部分的形式,于是就能得到贝尔曼公式.

首先分析计算第一部分:

E[Rt+1St=s]=aπ(as)E[Rt+1St=s,At=a]=aπ(as)rp(rs,a)r

第一部分就是能得到的immediate reward的期望(expectation)

然后分析计算第二项

E[Gt+1St=s]=sE[Gt+1St=s,St+1=s]p(ss)=sE[Gt+1St+1=s]p(ss)=svπ(s)p(ss)=svπap(ss,a)π(sa)

第二项是future rewards的期望(expectation)
E[Gt+1St=s,St+1=s]=E[Gt+1St+1=s]是因为马尔可夫无记忆性(memoryless markov property)

于是就可以给出贝尔曼公式的定义:

vπ(s)=E[Rt+1St=s]+γE[Gt+1St=s]=aπ(sa)rp(r|s,a)r+γaπ(as)sp(ss,a)vπ(s)=aπ(as)[rp(r|s,a)r+γsp(ss,a)vπ(s)],sS

上面公式中的一些重要的点

  • 上面的公式就是贝尔曼公式,它实际上描述了不同状态的state value之间的关系
  • 上面的式子实际上包含两项,一个是immediate reward term,另一部分是future reward term
  • 另外上面的式子注意最后的部分,并非是一个式子,而是对于状态空间中所有的状态都成立的 sS
  • state value vπ(s),vπ(s),Bootstrapping
  • π(as)这个就是policy,这是被给出的,所以贝尔曼公式是依赖于policy的,把这个state value计算出来实际上这件事情叫做policy evaluation
  • p(ss,a),p(r,s,a)叫dynamic model或者叫environment model.然后会根据是否知道这个dynamic model分为两种算法,不知道model的算法就是model free reinforcement learning算法

Matrix-vector form

当我们已经有了一个贝尔曼公式之后,后面的就是需要考虑如何求解这个bellman equation.

vπ(s)=aπ(as)[rp(r|s,a)r+γsp(ss,a)vπ(s)]

如果仅仅从这一个式子中求出state value是不可能的,但是注意到对于所有的state,贝尔曼公式都是成立的,如果有n个状态,那么就会有n个equation,把所有的equation放到一起就得到了一组,进一步就可把这些equation整理成matrix-vector form,matrix-vector form是非常优雅和重要的,对于我们求解state value是非常有帮助的

把上面的贝尔曼公式整理,合并一下表示成更简单的形式

vπ(s)=rπ(s)+γspπ(ss)vπ(s)

rπ(s)=aπ(as)rp(rs,a)r,pπ(ss)=aπ(as)p(ss,a)

为了把贝尔曼公式写成一个矩阵向量的形式,实际上要把所有的状态写在一起,于是就需要给上面的状态编上号.于是上面的式子进一步化为:

vπ(si)=rπ(si)+γsjpπ(sjsi)vπ(sj)

把所有的状态放到一起,就可以上面的式子变成matrix-vector form啦

vπ=rπ+γPπvπ

把上面式子中的一些量展开写

  • vπ=[vπ(s1),...,vπ(sn)]TRn

  • rπ=[rπ(s1),...,rπ(sn)]TRn

  • PπRn×n,where[Pπ]ij=pπ(sjsi)是一个转移矩阵

下面通过n=4这个例子来看一下这个矩阵形式的具体一点的表示

[vπ(s1)vπ(s2)vπ(s3)vπ(s4)]=[rπ(s1)rπ(s2)rπ(s3)rπ(s4)]+γ[pπ(s1s1)pπ(s2s1)pπ(s3s1)pπ(s4s1)pπ(s2s1)pπ(s2s2)pπ(s3s2)pπ(s4s2)pπ(s1s3)pπ(s2s3)pπ(s3s3)pπ(s4s3)pπ(s1s4)pπ(s2s4)pπ(s3s4)pπ(s4s4)][vπ(s1)vπ(s2)vπ(s3)vπ(s4)]

考虑下面这个例子:

1729564716916.png

于是上面策略的贝尔曼方程就可以写出

[vπ(s1)vπ(s2)vπ(s3)vπ(s4)]=[0111]+γ[0010000100010001][vπ(s1)vπ(s2)vπ(s3)vπ(s4)]

下面还有一个例子

1729565021405.png

[vπ(s1)vπ(s2)vπ(s3)vπ(s4)]=[0.5(0)+0.5(1)111]+γ[00.50.50000100010001][vπ(s1)vπ(s2)vπ(s3)vπ(s4)]

为什么要求解state value?

policy evaluation:强化学习中非常基础重要的问题,通过policy evaluation能够找到一个好的策略

如何接求解贝尔曼方式?

方法一:close-form solution(直接给出解析表达式)

vπ=(IγPπ)1rπ

虽然上面的解析表达式非常简洁,优美,但是在实际中我们并不会用,因为当状态空间比较大时,矩阵的维数也会比较大,求逆的计算量也会很大.

方法二:iterative solution:

vk+1=rπ+γPπvk

这个算法执行起来是这样的

先随机一个vk,然后将vk带入上面的迭代式中会得到vk+1再将vk+1当成vk带入上式中,一直这样迭代下去直至收敛.

事实上可以证明

vkvπ=(IγPπ)1rπ,k

1729565983511.png

Action value

Action value和state value的区别
state value是从一个状态出发得到的average return
action value是从一个状态出发,并且采取某个action得到的average return

定义:

qπ(s,a)=E[GtSt=s,At=a]

  • action value是依赖于策略π

下面可以研究一下state value 和 action value 之间的数学联系

E[GtSt=s]=aE[GtSt=s,At=a]π(as)

因此

vπ=aπ(as)qπ(s,a)

回忆前面的贝尔曼公式

vπ(s)=aπ(as)[rp(r|s,a)r+γsp(ss,a)vπ(s)]

可以发现qπ(s,a)=[rp(rs,a)r+γsp(ss,a)vπ(s)]

  1. action value总的来说很重要,未来会去关注在某一个状态不同的action,会对不同的action进行比较.
  2. 如何计算action value可以通过前面的表达式通过state value进行计算.
  3. 后面会学习一些不需要依赖模型,根据数据计算action value的方法.

summary

主要内容是

  1. state value : vπ(s)=E[GtSt=s]
  2. action value: qπ(s,a)=E[GtSt=s,At=a]
  3. bellman equation : vπ(s)=aπ(as)[rp(rs,a)r+γsp(ss,a)vπ(s)]=aπ(as)q(s,a)
  4. bellman equation matrix-vector form:Vπ=Rπ+γPπVπ
posted @   cxy8  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
历史上的今天:
2023-10-22 微机原理与接口技术-第七章输入输出接口
点击右上角即可分享
微信分享提示