《强化学习:原理与Python实现 》 —2.2 Bellman期望方程

举报
华章计算机 发表于 2019/11/12 20:59:30 2019/11/12
【摘要】 本节书摘来自华章计算机《强化学习:原理与Python实现》 一书中第二章,第2.2节,作者肖智清。

2.2 Bellman期望方程

2.1节定义了策略和价值函数。策略评估(policy evaluation)则是试图求解给定策略的价值函数。本节将介绍价值函数的性质—Bellman期望方程(Bellman Expectation Equations)。Bellman期望方程常用来进行策略评估。

Bellman期望方程刻画了状态价值函数和动作价值函数之间的关系。该方程由以下两部分组成。

用时刻的动作价值函数表示时刻的状态价值函数:

 image.png

(推导:对任一状态,有

 image.png

这样就得到了结果。)如果用空心圆圈代表状态,实心圆圈表示状态–动作对,则用动作价值函数表示状态价值函数的过程可以用备份图(backup diagram)表示,见图2-2a。

用时刻的状态价值函数表示时刻的动作价值函数:

 image.png

(推导:对任意的状态和动作,有

 image.png

image.png

 

其中用到了Markov性。利用上式,有

 image.png

这样就得到了结果。)用状态价值函数表示动作价值函数可以用备份图表示,见图2-2b。

 image.png

图2-2 动作价值函数和状态价值函数互相表示的备份图

上述Bellman期望方程刻画了状态价值函数和动作价值函数之间的关系。在上式中,也可以用代入法消除其中一种价值函数,得到以下两种结果。

用状态价值函数表示状态价值函数,备份图见图2-3a:

 image.png

用动作价值函数表示动作价值函数,备份图见图2-3b:

 

 image.png

image.png

图2-3 状态价值函数和动作价值函数自我表示的备份图

例如,对于表2-1和表2-2的例子中,状态价值函数和动作价值函数有以下关系:

 image.png

用这个方程可以求得价值函数。

接下来演示如何通过sympy求解Bellman方程,寻找最优策略。不失一般性,假设。

由于这个方程组是含有字母的线性方程组,我们用sympy的solve_linear_system() 函数来求解它。solve_linear_system() 函数可以接受整理成标准形式的线性方程组,它有以下参数:

矩阵参数system。对于有个等式、个待求变量的线性方程组,system是一个的sympy.Matrix对象。

可变列表参数symbols。若有个待求变量的线性方程组,则symbols是个sympy.Symbol对象。

可变关键字参数flags。

该函数返回一个dict,为每个待求变量给出结果。

我们把待求的Bellman期望方程整理成标准形式的线性方程组,得到:

 image.png

用代码清单2-1可以求解上述方程。

代码清单2-1 求解示例Bellman期望方程

image.png

代码清单2-1求得的状态价值函数和动作价值函数为:

 

 image.png

 

其中

image.png

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。