贝尔曼最优公式:
v=f(v)=πmax(rπ+γPπv)
根据 chapter 3 中涉及的 contraction mapping theorem, 我们可以通过对应的迭代算法来求解贝尔曼最优公式
vk+1=f(vk)=πmax(rπ+γPπvk),k=1,2,3…
这种迭代算法称为 value iteration.
共分为 2 步:
- Policy update 这步是更新策略π,即求解右边的式子,πk+1=argmaxπ(rπ+γPπvk), 其中vk是给定的。
其对应的 elementwise form:πk+1(s)=πargmaxa∑π(a∣s)(r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′)),s∈S
由于 p(s′∣s,a),p(r∣s,a),v(s′) 是已知的,显然,这里的最优策略πk+1是一个 greedy policy,我们只需要挑选在当前迭代下最大的 action value 就好了, 即:πk+1(a∣s)={10a=ak∗(s)a=ak∗(s)
其中ak∗(s)=argmaxaqk(a,s). - value update 根据 Policy update 的策略πk+1, 求解下一步的vk+1, 即
vk+1=rπk+1+γPπk+1vk
这里的vk并不是 state value
由于πk+1是 greedy 的,对应的vk+1(s)=maxaqk(a,s)
20240810190018算法迭代示意图:
π0PEvπ0PIπ1PEvπ1PIπ2PEvπ2PI…
首先随机设计一个初始的策略π0
Step 1: policy evaluation (PE) 策略评估 该步骤是用来计算当前策略 πk 的 state value.
可以通过 Bellman equation 进行求解,即:
vπk=rπk+γPπkvπk
根据对应的 Elementwise form:
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
由此进行迭代,直到设置的收敛条件为止,即j→∞ 或者 ∣∣vπk+1(j+1)(s)−vπk(j)(s)∣∣≤δ.
Step 2: policy improvement (PI) 策略提升 该步骤是根据 PE 所求出的 state value, 根据 action value,来提升当前策略 πk
πk+1=πargmax(rπ+γPπvπk)
对应的 Elementwise form:
πk+1(s)=πargmaxa∑πk(a∣s)qπk(s,a)(r∑p(r∣s,a)r+s′∑p(s′∣s,a)vπk(s′)),s∈S
这里,显然是可以通过一个 greedy 的策略来进行选择,即:
πk+1(a∣s)={10a=ak∗(s),a=ak∗(s).
其中 aK∗(s)=argmaxaqπk(s,a).
20240811002219在 PE 步骤中,如何通过 Bellman equation 得到 state value vπk. 根据 chapter 2 中求解 Bellman equation 的方法
一种是可以直接通过矩阵求逆进行求解,即 vπk=(I−γPπk)−1rπk,实际不常用.
一种是通过迭代算法来求解
vπk(j+1)=rπk+γPπkvπk(j)
在 PI 步骤中,如何确保策略 πk+1 是优于 πk的.

为什么这个迭代算法最终可以找到最优策略 每次迭代都会使得策略进行提升,那么
vπ0≤vπ1≤vπ2⋯≤vπk≤⋯≤v∗
我们需要保证策略是不断提升,且最终会收敛到最优策略v∗

policy iteration algorithm 与 value iteration algorithm 之间存在什么关系.
该算法是 value iteration 以及 policy iteration 一般化的推广
Policy iteration: 需要初始化策略π0, 之后进行迭代
Policy evaluation (PE): 通过 Bellman equation 求解当前策略的 state value.
vπk=rπk+γPπkvπk
内嵌迭代算法求解.
Policy improvement (PI): 考虑 greedy 策略求解, 选取当前状态下最大的 action value.
πk+1=πargmax(rπ+γPπvπk)
Value iteration: 需要初始化猜测的 state value v0
两个算法迭代过程十分类似:
Policy iteration:
π0PEvπ0PIπ1PEvπ1PIπ2PEvπ2PI…
Value iteration:
u0PUπ1′VUu1PUπ2′VUu2PU…
| Policy iteration algorithm | Value iteration algorithm | Comments |
|---|
| | | |
| 1) Policy: | π0 | N/A | |
| 2) Value: | vπ0=rπ0+γPπ0vπ0 | v0:=vπ0 | 对于 policy iteration,vπ0是通过迭代算法来求的; 而 value iteration 我们这里强行初始化为vπ0,方便后续比较 |
| 3) Policy: | π1=argmaxπ(rπ+γPπvπ0) | π1=argmaxπ(rπ+γPπvπ0) | 在策略更新上,这两个算法是一致的。 |
| 4) Value: | vπ1=rπ1+γPπ1vπ1 | v1=rπ1+γPπ1v0 | 对于 Policy iteration 而言, 这里需要通过迭代算法来精确求出 vπ1; 对于 Value iteration,则只是进行一次带入求解。 |
| 5) Policy: | π2=argmaxπ(rπ+γPπvπ1) | π2′=argmaxπ(rπ+γPπv1) | |
| ⋮ | ⋮ | ⋮ | ⋮ |
20240811010933显然,在求解 Bellman equation 中,Value iteration 只是进行了一步求解,而 Policy iteration 进行了无穷多步来进行了真实的求解 state value,显然在现实运行算法中是无法做到的。
因此 Truncated policy iteration algorithm 就是进行迭代 n 步来求解。

20240811011334