《强化学习:原理与Python实现 》 —2.2 Bellman期望方程
2.2 Bellman期望方程
2.1节定义了策略和价值函数。策略评估(policy evaluation)则是试图求解给定策略的价值函数。本节将介绍价值函数的性质—Bellman期望方程(Bellman Expectation Equations)。Bellman期望方程常用来进行策略评估。
Bellman期望方程刻画了状态价值函数和动作价值函数之间的关系。该方程由以下两部分组成。
用时刻的动作价值函数表示时刻的状态价值函数:
(推导:对任一状态,有
这样就得到了结果。)如果用空心圆圈代表状态,实心圆圈表示状态–动作对,则用动作价值函数表示状态价值函数的过程可以用备份图(backup diagram)表示,见图2-2a。
用时刻的状态价值函数表示时刻的动作价值函数:
(推导:对任意的状态和动作,有
其中用到了Markov性。利用上式,有
这样就得到了结果。)用状态价值函数表示动作价值函数可以用备份图表示,见图2-2b。
图2-2 动作价值函数和状态价值函数互相表示的备份图
上述Bellman期望方程刻画了状态价值函数和动作价值函数之间的关系。在上式中,也可以用代入法消除其中一种价值函数,得到以下两种结果。
用状态价值函数表示状态价值函数,备份图见图2-3a:
用动作价值函数表示动作价值函数,备份图见图2-3b:
图2-3 状态价值函数和动作价值函数自我表示的备份图
例如,对于表2-1和表2-2的例子中,状态价值函数和动作价值函数有以下关系:
用这个方程可以求得价值函数。
接下来演示如何通过sympy求解Bellman方程,寻找最优策略。不失一般性,假设。
由于这个方程组是含有字母的线性方程组,我们用sympy的solve_linear_system() 函数来求解它。solve_linear_system() 函数可以接受整理成标准形式的线性方程组,它有以下参数:
矩阵参数system。对于有个等式、个待求变量的线性方程组,system是一个的sympy.Matrix对象。
可变列表参数symbols。若有个待求变量的线性方程组,则symbols是个sympy.Symbol对象。
可变关键字参数flags。
该函数返回一个dict,为每个待求变量给出结果。
我们把待求的Bellman期望方程整理成标准形式的线性方程组,得到:
用代码清单2-1可以求解上述方程。
代码清单2-1 求解示例Bellman期望方程
代码清单2-1求得的状态价值函数和动作价值函数为:
其中
- 点赞
- 收藏
- 关注作者
评论(0)