强化学习——值(二)

1 状态值和动作值

为了衡量一个策略的好坏就需要状态值,而策略是当前状态下采取动作的概率,所以需要使用动作值去评价应该使用的策略。

1.1 状态值(state value)

状态值就是当前状态到目标所经历的 trajectory 的期望 return,记为 vπ(s)=E[GtSt=s]v_\pi(s)=E[G_t|S_t=s]GtG_t是使用当前策略的 return 值的随机变量),它与当前状态以及所选取的策略相关。

1.2 动作值(action value)

动作值就是当前状态,采取某个动作后到达最终目标所经历的 trajectory 的期望 return,记为 qπ(s,a)=E[GtSt=s,At=a]q_\pi(s,a)=E[G_t|S_t=s,A_t=a],它除了与当前状态相关还与采取的动作有关。

2 贝尔曼公式(Bellman Equation)

为了计算出当前状态的 vvqq,根据定义

这个是针对单个值来列的贝尔曼公式,从贝尔曼公式发现当前vπ(s)v_\pi(s)可以由下个状态vπ(s)v_\pi(s')求出,称为 bootstrap。
action value 的推导与 state value 差不多。

比较两个式子也可以得出vπ(s)v_\pi(s)关于qπ(s,a)q_\pi(s,a)的表达式vπ(s)=aπ(as)qπ(s,a)v_\pi(s)=\displaystyle \sum_a \pi(a|s) q_\pi(s,a)

3 贝尔曼公式求解

单个值的贝尔曼公式无法写出解析解,往往需要多个公式联立,进而可以用矩阵乘法简化。
由公式 vπ(s)=E[Rt+1St=s]+γE[Gt+1St=s]v_\pi(s)=E[R_{t+1}|S_t=s]+\gamma E[G_{t+1}|S_t=s],当vπ,rπv_\pi,r_\pi是一个多个状态的vπ(s)v_\pi(s)E[Rt+1St=s]E[R_{t+1}|S_t=s]的向量时。当状态空间维度为 n 时。

[vπ(s1)vπ(s2)vπ(sn)]=[rπ(s1)rπ(s2)rπ(sn)]+γ[p(s1s1)p(s1s2)p(s1sn)p(s2s1)p(s2s2)p(s2sn)p(sns1)p(sns2)p(snsn)][vπ(s1)vπ(s2)vπ(sn)]\begin{bmatrix} v_\pi(s_1)\\ v_\pi(s_2)\\ \vdots\\ v_\pi(s_n) \end{bmatrix}= \begin{bmatrix} r_\pi(s_1)\\ r_\pi(s_2)\\ \vdots\\ r_\pi(s_n)\\ \end{bmatrix}+\gamma \begin{bmatrix} p(s_1|s_1)&p(s_1|s_2)&\cdots&p(s_1|s_n)\\ p(s_2|s_1)&p(s_2|s_2)&\cdots&p(s_2|s_n)\\ \vdots&\vdots&\ddots&\vdots\\ p(s_n|s_1)&p(s_n|s_2)&\cdots&p(s_n|s_n) \end{bmatrix} \begin{bmatrix} v_\pi(s_1)\\ v_\pi(s_2)\\ \vdots\\ v_\pi(s_n) \end{bmatrix}

其中这个方阵称为状态转移矩阵 P,整个公式可以写成vπ=rπ+γPvπv_\pi=r_\pi+\gamma P v_\pi
可以写出解析解为vπ=(IγP)1rπv_\pi=(I-\gamma P)^{-1} r_\pi
为了减少运算量,在实际中不求逆,而是求迭代解vk+1=rπ+γPvkk=0,1,2,v_{k+1}=r_\pi+\gamma P v_k(k=0,1,2,\cdots)。可以证明当kk\to\inftyvk+1vπv_{k+1} \to v_\pi