本系列为学习赵世钰老师的《强化学习的数学原理》所作的学习笔记.
本节我们将介绍强化学习中的策略迭代求解方法.
2.2.1 算法步骤
跟值迭代类似, 策略迭代也是一个迭代的方法, 主要分为策略计算(PE)和策略提升(PI)两步.
2.2.1.1 策略计算(PE)
首先在当前策略 π k \pi_k πk的基础上, 计算状态值 v π k v_{\pi_k} vπk, 实际就是求解贝尔曼公式:
v π k = r π k + γ P π k v π k , v_{\pi_k}=r_{\pi_k}+\gamma P_{\pi_k} v_{\pi_k}, vπk=rπk+γPπkvπk,
在1.4.4 贝尔曼公式求解中, 我们介绍了有两种求解方式:解析解和迭代求解. 但是解析解需要求逆矩阵, 所以常采用迭代求解的方式:
v π k ( j + 1 ) = r π k + γ P π k v π k ( j ) , j = 0 , 1 , 2 , … v_{\pi_k}^{(j+1)}=r_{\pi_k}+\gamma P_{\pi_k} v_{\pi_k}^{(j)}, \quad j=0,1,2, \ldots vπk(j+1)=rπk+γPπkvπk(j),j=0,1,2,…
它的展开形式为:
v π k ( j + 1 ) ( s ) = ∑ a π k ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v π k ( j ) ( s ′ ) ) , s ∈ S v_{\pi_k}^{(j+1)}(s)=\sum_a \pi_k(a \mid s)\left(\sum_r p(r \mid s, a) r+\gamma \sum_{s^{\prime}} p\left(s^{\prime} \mid s, a\right) v_{\pi_k}^{(j)}\left(s^{\prime}\right)\right), \\ \quad s \in \mathcal{S} vπk(j+1)(s)=a∑πk(a∣s)(r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπk(j)(s′)),s∈S
其中 v π k ( j ) v_{\pi_k}^{(j)} vπk(j)是上一轮迭代的状态值, 初值可以设置为任意值. 直到 ∥ v π k ( j + 1 ) − v π k ( j ) ∥ < e p s i l o n \left\|v_{\pi k}^{(j+1)}-v_{\pi k}^{(j)}\right\|<epsilon vπk(j+1)−vπk(j) <epsilon, 则认为已经收敛.
2.2.1.2 策略提升(PI)
有了状态值 v π k v_{\pi_k} vπk之后, 我们求解最优化问题, 得到新的最优策略 π k + 1 \pi_{k+1} πk+1:
π k + 1 = arg max π ( r π + γ P π v π k ) . \pi_{k+1}=\arg \max _\pi\left(r_\pi+\gamma P_\pi v_{\pi_k}\right) . πk+1=argπmax(rπ+γPπvπk).
π k + 1 \pi_{k+1} πk+1一定优于 π k \pi_{k} πk, 详细证明可以前往书中查看. 展开形式写作:
π k + 1 ( s ) = arg max π ∑ a π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v π k ( s ′ ) ) ⏟ q π k ( s , a ) , s ∈ S , \pi_{k+1}(s)=\arg \max _\pi \sum_a \pi(a \mid s) \underbrace{\left(\sum_r p(r \mid s, a) r+\gamma \sum_{s^{\prime}} p\left(s^{\prime} \mid s, a\right) v_{\pi_k}\left(s^{\prime}\right)\right)}_{q_{\pi_k}(s, a)}, \\ s \in \mathcal{S}, πk+1(s)=argπmaxa∑π(a∣s)qπk(s,a)