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π(as)[rp(rs,a)r+γsp(ss,a)vk(s)],sS

    对应的最优策略为:

    πk+1(as)={1a=ak(s)0aak(s)ak(s)=argmaxaqk(s,a)

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

  • 价值更新:

    vk+1(s)=aπk+1(as)[rp(rs,a)r+γsp(ss,a)vk(s)],sS

    代入 π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

有:

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

算法的元素形式如下:

  • 策略评估

    vπk(j+1)=aπk(as)[rp(rs,a)r+γsp(ss,a)vπk(j)(s)],sS
  • 策略改进

    πk+1(s)=argmaxπaπ(as)[rp(rs,a)r+γsp(ss,a)vπk(s)],sS

    对应的最优策略为:

    πk+1(as)={1a=ak(s)0aak(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= 时为策略迭代算法。