1 状态值和动作值
为了衡量一个策略的好坏就需要状态值,而策略是当前状态下采取动作的概率,所以需要使用动作值去评价应该使用的策略。
1.1 状态值(state value)
状态值就是当前状态到目标所经历的 trajectory 的期望 return,记为 vπ(s)=E[Gt∣St=s](Gt是使用当前策略的 return 值的随机变量),它与当前状态以及所选取的策略相关。
1.2 动作值(action value)
动作值就是当前状态,采取某个动作后到达最终目标所经历的 trajectory 的期望 return,记为 qπ(s,a)=E[Gt∣St=s,At=a],它除了与当前状态相关还与采取的动作有关。
2 贝尔曼公式(Bellman Equation)
为了计算出当前状态的 v 和 q,根据定义
这个是针对单个值来列的贝尔曼公式,从贝尔曼公式发现当前vπ(s)可以由下个状态vπ(s′)求出,称为 bootstrap。
action value 的推导与 state value 差不多。
比较两个式子也可以得出vπ(s)关于qπ(s,a)的表达式vπ(s)=a∑π(a∣s)qπ(s,a)
3 贝尔曼公式求解
单个值的贝尔曼公式无法写出解析解,往往需要多个公式联立,进而可以用矩阵乘法简化。
由公式 vπ(s)=E[Rt+1∣St=s]+γE[Gt+1∣St=s],当vπ,rπ是一个多个状态的vπ(s)和E[Rt+1∣St=s]的向量时。当状态空间维度为 n 时。
⎣⎢⎢⎢⎢⎡vπ(s1)vπ(s2)⋮vπ(sn)⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡rπ(s1)rπ(s2)⋮rπ(sn)⎦⎥⎥⎥⎥⎤+γ⎣⎢⎢⎢⎢⎡p(s1∣s1)p(s2∣s1)⋮p(sn∣s1)p(s1∣s2)p(s2∣s2)⋮p(sn∣s2)⋯⋯⋱⋯p(s1∣sn)p(s2∣sn)⋮p(sn∣sn)⎦⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎡vπ(s1)vπ(s2)⋮vπ(sn)⎦⎥⎥⎥⎥⎤
其中这个方阵称为状态转移矩阵 P,整个公式可以写成vπ=rπ+γPvπ
可以写出解析解为vπ=(I−γP)−1rπ
为了减少运算量,在实际中不求逆,而是求迭代解vk+1=rπ+γPvk(k=0,1,2,⋯)。可以证明当k→∞,vk+1→vπ