Skip to content

截断策略迭代算法 ​

Truncated policy iteration algorithm ​

值迭代算法(value iteration algorithm) ​

算法的矩阵形式如下:

vk+1=maxπ(rπ+γPπvk)
策略更新(policy update,PU) ​

给定 vk,求解 π 可以得到:

πk+1=argmaxπ(rπ+γPπvk)
价值更新(value update,VU) ​

代入第一个式子,有:

vk+1=rπk+1+γPπk+1vk

算法的元素形式如下:

策略更新: ​
πk+1=argmaxπ∑aπ(a∣s)[∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vk(s′)],∀s∈S

对应的最优策略为:

πk+1(a∣s)={1a=ak∗(s)0a≠ak∗(s)ak∗(s)=argmaxaqk∗(s,a)

注意:v∗ 唯一,但最优策略不一定唯一。

价值更新: ​
vk+1(s)=∑aπk+1(a∣s)[∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vk(s′)],∀s∈S

代入 πk+1:

vk+1(s)=maxaqk(a,s)

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

给定随机初始策略 π0:

  • 策略评估(policy evaluation,PE)
vπk=rπk+γPπkvπk

求解

在贝尔曼公式中介绍了其求解:

直接求解:

vπ=(I−γPπ)−1rπ

采用迭代法:

vk+1=rπ+γPπvk

有:

vk→vπ=(I−γPπ)−1rπ,k→∞
  • 策略改进(policy improvement,PI)
πk+1=argmaxπ(rπ+γPπvπk)

算法的元素形式如下:

  • 策略评估

    vπk(j+1)=∑aπk(a∣s)[∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vπk(j)(s′)],∀s∈S
  • 策略改进

    πk+1(s)=argmaxπ∑aπ(a∣s)[∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vπk(s′)],∀s∈S

    对应的最优策略为:

    πk+1(a∣s)={1a=ak∗(s)0a≠ak∗(s)ak∗(s)=argmaxaqπk∗(s,a)

值迭代与策略迭代的区别: ​

过程比较:

步骤值迭代算法策略迭代算法说明
Policyπ0-策略迭代给出初始策略
Valuevπ0=rπ0+γPπ0vπ0v0=vπ0值迭代给出初始值 v0,策略迭代的 vπ0 需要求解
Policyπ1=argmaxπ(rπ+γPπvπ0)π1=argmaxπ(rπ+γPπv0)相同
Valuevπ1=rπ1+γPπ1vπ1vπ1=rπ1+γPπ1v0策略迭代每一步得到 v 是真实的
Policyπ2=argmaxπ(rπ+γPπvπ1)π2=argmaxπ(rπ+γPπv1)
⋯⋯⋯⋯

截断策略迭代算法 ​

在计算 vπk 时,值迭代算法只用计算一次就可以得到结果,而策略迭代算法需要计算无穷次,在实际中并不存在,那么自然能想到只计算 j 次,使用 vπk(j) 作为值代入下一步的策略计算,从第 j 步到第 ∞ 步都被截断了,由此得到截断策略迭代算法。

截断策略迭代算法是值迭代算法与策略迭代算法的一般形式,当 j=1 时为值迭代算法,当 j=∞ 时为策略迭代算法。