贝尔曼方程推导(无跳步)

 这两天学习MDP,对于贝尔曼方程有很大的困惑,而且找了很多资料都没有详尽的推导,我这里把详尽推导写出来,希望能帮到正在学习的同学们。
Vπ(s)=E[Gt∣St=s]=E[Rt+1+γGt+1∣St=s]=E[Rt+1+γVπ(s′)∣s]\begin{aligned} V_{\pi}(s) &= E[G_t|S_t=s] \\ &= E[R_{t+1} + \gamma G_{t+1}|\pmb{S_t=s}] \\ &= E[R_{t+1}+\gamma V_{\pi}(s')|s] \end{aligned} Vπ​(s)​=E[Gt​∣St​=s]=E[Rt+1​+γGt+1​∣St​=s​St​=s​​St​=s]=E[Rt+1​+γVπ​(s′)∣s]​
 但是Vπ(s′)=E[Gt+1∣St+1=s′]V_{\pi}(s')=E[G_{t+1}|\pmb{S_{t+1}=s'}]Vπ​(s′)=E[Gt+1​∣St+1​=s′​St+1​=s′​​St+1​=s′],上面这个最后一步到底是怎么出现的??
 下面我在推导这个贝尔曼方程时会顺带解答这个疑惑。
#------------------------------------------------------------------------------------------------#
 值函数给出了从状态sss出发,遵循策略π\piπ会得到的期望回报,用于评估一个策略的好坏。贝尔曼方程给出了值函数的计算方法(迭代/递归)。
 从状态值函数的表达式可以发现,ttt时刻计算的值函数必然和t+1t+1t+1时刻的值函数存在关系,因为GtG_tGt​必然包含着Gt+1G_{t+1}Gt+1​,所以应该是可以找到前后时刻值函数的递归关系的。就像隐马尔科夫模型中的前向变量、后向变量,前后时刻存在递归关系。
 值函数前后时刻之间的递归关系得到的就是贝尔曼方程了:
状态值函数:
Vπ(s)=E[Gt∣St=s]=E[∑k=0∞γkRt+1+k∣St=s]=E[Rt+1+γ∑k=0∞γkRt+2+k∣St=s]=E[Rt+1+γGt+1∣St=s]=E[Rt+1∣St=s]+γE[Gt+1∣St=s]=∑Rt+1Rt+1P(Rt+1∣St=s)+γ∑Gt+1Gt+1P(Gt+1∣St=s)\begin{aligned} V_\pi(s) &= E[G_t|S_t=s] \\ &= E[\displaystyle\sum_{k=0}^\infin \gamma^k R_{t+1+k}|S_t=s] \\ &= E[R_{t+1} + \gamma \displaystyle\sum_{k=0}^\infin \gamma^k R_{t+2+k} | S_t=s] \\ &= E[R_{t+1} + \gamma G_{t+1}|S_t=s] \\ &= E[R_{t+1}|S_t=s]+\gamma E[G_{t+1}|S_t=s] \\ &=\displaystyle\sum_{R_{t+1}}R_{t+1}P(R_{t+1}|S_t=s) \\ &+\gamma \displaystyle\sum_{G_{t+1}}G_{t+1}P(G_{t+1}|S_t=s) \\ \end{aligned} Vπ​(s)​=E[Gt​∣St​=s]=E[k=0∑∞​γkRt+1+k​∣St​=s]=E[Rt+1​+γk=0∑∞​γkRt+2+k​∣St​=s]=E[Rt+1​+γGt+1​∣St​=s]=E[Rt+1​∣St​=s]+γE[Gt+1​∣St​=s]=Rt+1​∑​Rt+1​P(Rt+1​∣St​=s)+γGt+1​∑​Gt+1​P(Gt+1​∣St​=s)​
 我们用sss代指StS_tSt​,aaa代指AtA_tAt​,用 s′s's′ 代指 St+1S_{t+1}St+1​,即当前时刻的状态为 sss,当前采取的动作是aaa,下一时刻状态为s′s's′。注意,s,a,s′s,a,s's,a,s′都是有多种可能取值的。而且这里时刻ttt只是一种泛指,只是为了指示s,s′s,s's,s′是前后关系。
  P(Rt+1∣St=s)P(R_{t+1}|S_t=s)P(Rt+1​∣St​=s)–>需要在St/sS_t/sSt​/s条件下,采取动作At/aA_t/aAt​/a ,随后转移到状态St+1/s′S_{t+1}/s'St+1​/s′,并随即确定性地获得奖励Rt+1R_{t+1}Rt+1​(用Rss′aR_{ss'}^aRss′a​表示)。∑Rt+1\displaystyle\sum_{R_{t+1}}Rt+1​∑​指代所有情形的Rt+1/Rss′aR_{t+1}/R_{ss'}^aRt+1​/Rss′a​,对应所有情形的动作At/aA_t/aAt​/a、St+1/s′S_{t+1}/s'St+1​/s′。
  P(Gt+1∣St=s)P(G_{t+1}|S_t=s)P(Gt+1​∣St​=s)–>需要在St/sS_t/sSt​/s条件下采取动作At/aA_t/aAt​/a,随后转移到状态St+1/s′S_{t+1}/s'St+1​/s′,然后需要在状态St+1/s′S_{t+1}/s'St+1​/s′条件下依概率产生Gt+1G_{t+1}Gt+1​。∑Gt+1\displaystyle\sum_{G_{t+1}}Gt+1​∑​同理

(接上式)=∑a∑s′Rss′aP(a∣s)P(s′∣s,a)+γ∑Gt+1∑a∑s′Gt+1P(a∣s)P(s′∣s,a)P(Gt+1∣s′)\begin{aligned} &(接上式) \\ &= \displaystyle\sum_{a}\displaystyle\sum_{s'}R_{ss'}^a P(a|s) P(s'|s,a) \\ &+\gamma \displaystyle\sum_{G_{t+1}}\displaystyle\sum_{a}\displaystyle\sum_{s'} G_{t+1}P(a|s)P(s'|s,a)P(G_{t+1}|s') \\ \end{aligned} ​(接上式)=a∑​s′∑​Rss′a​P(a∣s)P(s′∣s,a)+γGt+1​∑​a∑​s′∑​Gt+1​P(a∣s)P(s′∣s,a)P(Gt+1​∣s′)​
这里,∑Gt+1Gt+1P(Gt+1∣s′)=E[Gt+1∣s′]=Vπ(s′)\displaystyle\sum_{G_{t+1}}G_{t+1}P(G_{t+1}|s')=E[G_{t+1}|s']=V_{\pi}(s')Gt+1​∑​Gt+1​P(Gt+1​∣s′)=E[Gt+1​∣s′]=Vπ​(s′)。用π(a∣s)\pi(a|s)π(a∣s)表示P(a∣s)P(a|s)P(a∣s),Pss′aP_{ss'}^aPss′a​表示P(s′∣s,a)P(s'|s,a)P(s′∣s,a)
(接上式)=∑a∑s′Rss′aπ(a∣s)Pss′a+γ∑a∑s′π(a∣s)Pss′aVπ(s′)=∑a∑s′π(a∣s)Pss′a(Rss′a+γVπ(s′))\begin{aligned} &(接上式) \\ &=\displaystyle\sum_{a}\displaystyle\sum_{s'}R_{ss'}^a \pi(a|s) P_{ss'}^a \\ &+\gamma \displaystyle\sum_{a}\displaystyle\sum_{s'}\pi(a|s)P_{ss'}^aV_{\pi}(s') \\ &= \displaystyle\sum_{a}\displaystyle\sum_{s'} \pi(a|s) P_{ss'}^a(R_{ss'}^a + \gamma V_{\pi}(s')) \end{aligned} ​(接上式)=a∑​s′∑​Rss′a​π(a∣s)Pss′a​+γa∑​s′∑​π(a∣s)Pss′a​Vπ​(s′)=a∑​s′∑​π(a∣s)Pss′a​(Rss′a​+γVπ​(s′))​
至此,我们就得到了贝尔曼方程其中的一个,另一个是反映动作值函数前后时刻递归关系的。
补充一下
∑a∑s′π(a∣s)Pss′aVπ(s′)=∑a∑s′P(a∣s)P(s′∣s,a)Vπ(s′)=E[Vπ(s′)∣s]\begin{aligned} \displaystyle\sum_{a}\displaystyle\sum_{s'}\pi(a|s)P_{ss'}^aV_{\pi}(s') &= \displaystyle\sum_{a}\displaystyle\sum_{s'}P(a|s)P(s'|s,a)V_{\pi}(s') \\ &=E[V_{\pi}(s')|s] \end{aligned} a∑​s′∑​π(a∣s)Pss′a​Vπ​(s′)​=a∑​s′∑​P(a∣s)P(s′∣s,a)Vπ​(s′)=E[Vπ​(s′)∣s]​
因为E[Vπ(s′)∣s]E[V_{\pi}(s')|s]E[Vπ​(s′)∣s]–>需要在状态sss条件下,采取动作aaa,随后转移到状态s′s's′,然后得到Vπ(s′)V_{\pi}(s')Vπ​(s′)

所以才会出现:
Vπ(s)=E[Gt∣St=s]=E[Rt+1+γGt+1∣St=s]=E[Rt+1+γVπ(s′)∣s]\begin{aligned} V_{\pi}(s) &= E[G_t|S_t=s] \\ &= E[R_{t+1} + \gamma G_{t+1}|S_t=s] \\ &= E[R_{t+1}+\gamma V_{\pi}(s')|s] \end{aligned} Vπ​(s)​=E[Gt​∣St​=s]=E[Rt+1​+γGt+1​∣St​=s]=E[Rt+1​+γVπ​(s′)∣s]​
这样就解答了开头的疑惑~
动作值函数的递归关系同理,就不写了。
有帮助的话点个赞啊~~

贝尔曼方程详尽推导(无跳步|带图)相关推荐

  1. python无向带权图

    无向无权图见另一篇文章<python无向无权图结构>,这篇讲无向带权图,并且给出一个地铁线路例子. # -*- coding: UTF-8 -*- #!/usr/bin/python#-- ...

  2. c语言图的无向网存储,C语言——无向带权图邻接矩阵的建立

    #include #include "Graph.h" #define MAX_INT 32767 /* #define vnum 20 #define MAX_INT = 327 ...

  3. 红外测试操作步骤_红外传感实验操作步骤及数据分析(无测试实图)

    红外传感实验操作步骤及数据分析(无测试实图) 1. 启动红外传感模块 红外传感模块工作实图 ( 1 ) 将 NEWlab 实验硬件平台通电并与电脑链接. ( 2 ) 将红外传感模块放置在 NEWlab ...

  4. Toast 自定义位置和带图

    1.自定义位置 Toast t = Toast.makeText(Reg_FillContent_Activity.this, "用户已存在!", Toast.LENGTH_SHO ...

  5. firefox浏览器 插件--【维基百科+谷歌翻译】高级应用之 带图翻译

    [维基词典+谷歌翻译]插件地址: https://addons.mozilla.org/zh-CN/firefox/addon/google-dictionary-and-google-t/?src= ...

  6. java学习(46):无参带返回

    /*1. 如果方法的返回类型为 void ,则方法中不能使用 return 返回值! *2. 方法的返回值最多只能有一个,不能返回多个值 *3. 方法返回值的类型必须兼容,例如,如果返回值类型为 in ...

  7. c#.net中创建带图标的ListBox

    下面的代码实现了带图标的ListBoox的功能,可以直接拷贝即可运行.运行结果如下: using System; using System.Drawing; using System.Collecti ...

  8. CSS/HTML 5简洁带图标的input日期选择器

    CSS/HTML 5简洁带图标的input日期选择器 说明 css代码 html代码 演示效果图 说明 演示效果分辨率为1980x1080分辨率效果 高度可定制修改 纯css代码控制 使用的input ...

  9. 通信应用中数字上变频DUC与数字下变频DDC详细原理(带图)

    目录 关于上下变频的仿真: 数字插值滤波与数字正交上变频的仿真与实验----基于高速DAC芯片 数字正交下变频与数字滤波抽取的仿真与实验----基于高速ADC芯片 1.DUC与DDC的应用场景来源[2 ...

  10. 三星手机刷机后显示无服务器,三星手机刷机后无基带无信号打不了电话等故障详细修复教程...

    原标题:三星手机刷机后无基带无信号打不了电话等故障详细修复教程 三星手机刷机后无基带的详细教程,一些用户用三星手机刷机后会出现无基带无信号,打不了电话等问题.今天给大家详细讲解一下修复教程,其实这些大 ...

最新文章

  1. css3 高度最小100%,100%最小高度CSS布局
  2. J2EE学习中一些值得研究的开源项目(转载天极网)
  3. restful api与传统api的区别(方式及语法)
  4. 用shell编写的贪吃蛇游戏
  5. c++中计算2得n次方_七上,一元一次方程,知识点综合学霸笔记在手
  6. java中list去除空值_Java –从列表中删除所有空值
  7. linux下的I2C驱动记录(RK)
  8. k邻近算法(KNN)实例
  9. ORACLE批量更新四种方法比较
  10. 刷吉米多维奇系列小结(一)
  11. qt在linux下编译资源文件,linux下Qt qrc文件的编写与应用
  12. matlab实训心得,沟通实训心得体会
  13. cuba_认识CLI for CUBA平台
  14. 手机无线如何共享给台式计算机,怎么把电脑网络共享给手机上网
  15. 传奇服务器 地图文件,[技术贴]地图配置文件
  16. Me安装教程(同pr)
  17. 借助Granimjs制作绚丽的流体动画
  18. 时间序列模型SCINet(代码解析)
  19. STM32 编码器驱动/旋转编码器旋钮encoder
  20. Mac解压命令之不解压__MACOSX相关文件

热门文章

  1. php nginx 伪静态规则,常见PHP程序的Nginx 伪静态规则
  2. 2007年12月25日至2008年1月1日百宝箱游戏下载排行榜
  3. wps-奇数偶数页眉不同设定方法
  4. 基于Python的拉勾网的模拟登录获取cookie
  5. 点击复选框添加或删除value值到input输入框中
  6. 兜兜转转。最终还是选择了它——C语言学习历程
  7. RMAN-06091: no channel allocated for maintenance (of an appropriate type)
  8. PS怎么把图片处理的更清晰
  9. 第六次团队作业——Alpha冲刺之事后诸葛亮
  10. 【技术贴】ppt2003更换图片|更换带有动作特效的图片|替换ppt图片