值和策略迭代算法

1 值迭代算法(value iteration algorithm)

根据贝尔曼最优公式就能得出最优的 state value 和最优的 policy。

1.1 策略更新(policy update)

为了得出最优的策略通过
π k + 1 = arg max ⁡ π ( r π + γ P π v k ) \pi_{k+1}= \displaystyle \argmax_\pi(r_\pi + \gamma P_\pi v_k) πk+1=πargmax(rπ+γPπvk)(matrix form)
或者
π k + 1 = arg max ⁡ π ∑ a π ( a ∣ s ) [ ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v k ( s ′ ) ] ⏟ q k ( s , a ) \pi_{k+1}= \displaystyle \argmax_\pi \sum_a \pi(a|s) \underbrace{\left[\displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \displaystyle \sum_{s'} p(s'|s,a)v_k(s') \right]}_{q_k(s,a)} πk+1=πargmaxaπ(as)qk(s,a) [rp(rs,a)r+γsp(ss,a)vk(s)](elementwise form)

π k + 1 ( a ∣ s ) = { 1 , a = a k ∗ = arg max ⁡ a q k ( s , a ) 0 , a ≠ a k ∗ \pi_{k+1}(a|s)=\begin{cases} 1, & a = a_k^*= \displaystyle \argmax_a q_k(s,a)\\ 0, & a \neq a_k^* \end{cases} πk+1(as)= 1,0,a=ak=aargmaxqk(s,a)a=ak

1.2 值更新(value update)

v k + 1 = r π k + 1 + γ P π k + 1 v k v_{k+1}= r_{\pi_{k+1}} + \gamma P_{\pi_{k+1}} v_k vk+1=rπk+1+γPπk+1vk(matrix form)
或者
v k + 1 = ∑ a π ( a ∣ s ) [ ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v k ( s ′ ) ] ⏟ q k ( s , a ) v_{k+1}= \displaystyle \sum_a \pi(a|s) \underbrace{\left[\displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \displaystyle \sum_{s'} p(s'|s,a)v_k(s') \right]}_{q_k(s,a)} vk+1=aπ(as)qk(s,a) [rp(rs,a)r+γsp(ss,a)vk(s)](elementwise form)
由于 π ( a ∣ s ) = 1 \pi(a|s)=1 π(as)=1,而且是在 a = a k ∗ = arg max ⁡ a q k ( s , a ) a=a_k^*= \displaystyle \argmax_a q_k(s,a) a=ak=aargmaxqk(s,a)取得。可以简化成 v k + 1 = max ⁡ q k ( s , a ) v_{k+1}=\max q_k(s,a) vk+1=maxqk(s,a)

1.3 整体步骤

初始条件: p ( s ′ ∣ s , a ) , p ( r ∣ s , a ) , γ p(s'|s,a),p(r|s,a),\gamma p(ss,a),p(rs,a),γ,以及随机初始化的 v 0 v_0 v0
迭代过程: v k → q k → π k + 1 → v k + 1 v_k \rightarrow q_k \rightarrow \pi_{k+1} \rightarrow v_{k+1} vkqkπk+1vk+1
终止条件: ∥ v k + 1 − v k ∥ < ϵ \Vert v_{k+1}-v_k \Vert < \epsilon vk+1vk<ϵ

2 策略迭代算法(policy iteration algorithm)

2.1 策略评估(policy evaluation)

通过贝尔曼公式的迭代解求出当前策略下最优的 state value。该步骤是需要不断迭代的。
v π k ( j + 1 ) = r π k + γ P π k v π k ( j ) v_{\pi_{k}}^{(j+1)}=r_{\pi_k}+\gamma P_{\pi_k} v_{\pi_k}^{(j)} vπk(j+1)=rπk+γPπkvπk(j)(matrix form)
或者
v π k ( j + 1 ) = ∑ a π ( a ∣ s ) [ ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v π k ( j ) ( s ′ ) ] ⏟ q π k ( j ) ( s , a ) v_{\pi_{k}}^{(j+1)}= \displaystyle \sum_a \pi(a|s) \underbrace{\left[\displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \displaystyle \sum_{s'} p(s'|s,a)v_{\pi_{k}}^{(j)}(s') \right]}_{q_{\pi_{k}}^{(j)}(s,a)} vπk(j+1)=aπ(as)qπk(j)(s,a) [rp(rs,a)r+γsp(ss,a)vπk(j)(s)](elementwise form)
现实中往往无法无线迭代,所以当 ∥ v π k ( j + 1 ) − v π k + 1 ( j ) ∥ < ϵ \Vert v_{\pi_k}^{(j+1)}-v_{\pi_{k+1}}^{(j)} \Vert < \epsilon vπk(j+1)vπk+1(j)<ϵ停止迭代。

2.2 策略优化(policy improvement)

π π k + 1 = arg max ⁡ π ( r π + γ P π v π k ) \pi_{\pi_{k+1}}= \displaystyle \argmax_\pi(r_{\pi} + \gamma P_{\pi} v_{\pi_{k}}) ππk+1=πargmax(rπ+γPπvπk)(matrix form)
或者
π π k + 1 = arg max ⁡ π ∑ a π ( a ∣ s ) [ ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v π k ( s ′ ) ] ⏟ q π k ( s , a ) \pi_{\pi_{k+1}}= \displaystyle \argmax_\pi \sum_a \pi(a|s) \underbrace{\left[\displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \displaystyle \sum_{s'} p(s'|s,a)v_{\pi_{k}}(s') \right]}_{q_{\pi_{k}}(s,a)} ππk+1=πargmaxaπ(as)qπk(s,a) [rp(rs,a)r+γsp(ss,a)vπk(s)](elementwise form)

π k + 1 ( a ∣ s ) = { 1 , a = a π k ∗ = arg max ⁡ a q π k ( s , a ) 0 , a ≠ a π k ∗ \pi_{k+1}(a|s)=\begin{cases} 1, & a = a_{\pi_{k}}^*= \displaystyle \argmax_a q_{\pi_{k}}(s,a)\\ 0, & a \neq a_{\pi_{k}}^* \end{cases} πk+1(as)= 1,0,a=aπk=aargmaxqπk(s,a)a=aπk

2.3 整体步骤

初始条件: p ( s ′ ∣ s , a ) , p ( r ∣ s , a ) , γ p(s'|s,a),p(r|s,a),\gamma p(ss,a),p(rs,a),γ,以及随机初始化的 π 0 , v π 0 ( 0 ) \pi_0,v_{\pi_0}^{(0)} π0,vπ0(0)
迭代过程: v π k ( ∞ ) → π k + 1 → v π k + 1 ( ∞ ) v_{\pi_k}^{(\infty)} \rightarrow \pi_{k+1} \rightarrow v_{\pi_{k+1}}^{(\infty)} vπk()πk+1vπk+1()
终止条件: ∥ v π k ( ∞ ) − v π k + 1 ( ∞ ) ∥ < ϵ \Vert v_{\pi_k}^{(\infty)}-v_{\pi_{k+1}}^{(\infty)} \Vert < \epsilon vπk()vπk+1()<ϵ

3 中断策略迭代(truncated policy iteration)

观察 policy iteration 发现,在 policy evaluation 过程中无法取得 v π k ( ∞ ) v_{\pi_k}^{(\infty)} vπk(),而当每次的迭代次数都设置为固定值 j t r u n c a t e d j_{truncated} jtruncated,称为 truncated policy iteration。而 value iteration 和 policy iteration 算法分别是该算法 j t r u n c a t e d = 1 j_{truncated}=1 jtruncated=1 j t r u n c a t e d = ∞ j_{truncated}=\infty jtruncated=的特殊情况。

4 代码链接

GitHub

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐