skip to content
[Jimjimu Notes]

Chapter 4: Value Iteration and Policy Iteration

/ 6 min read

Table of Contents

Value iteration algorithm

Step1: Policy update

给定初始向量v0v_0,迭代计算由vkv_k算出πk+1\pi_{k+1}

Matrix form:

πk+1=argmaxπ(rπ+γPπvk)\pi_{k+1} = \arg\max_{\pi} (r_{\pi} + \gamma P_{\pi} v_k)

(注意,矩阵形式不好理解的点在于,必须要知道初始π0\pi_0才能继续迭代,实际计算的时候我们根本不需要用到PπP_{\pi}矩阵,因此矩阵形式只是数学表示, 实际算法实现使用下面的element wise)

The elementwise form :

πk+1(s)=argmaxπaπ(as)(rp(rs,a)r+γsp(ss,a)vk(s))qk(s,a),sS\pi_{k+1}(s) = \arg\max_{\pi} \sum_a \pi(a|s) \underbrace{\left( \sum_r p(r|s,a) r + \gamma \sum_{s'} p(s'|s,a) {\color{red}v_k(s')} \right)}_{{\color{red}q_k(s,a)}}, \quad s \in \mathcal{S}

这里我们可以看到只要知道vkv_k , 由于p(rs,a),r,γ,p(ss,a)p(r|s,a),r,\gamma,p(s'|s,a)都是环境和已知变量,因此可以直接算出qkq_k,进而算出πk+1\pi_{k+1}

The optimal policy solving the above optimization problem is

πk+1(as)={1a=ak(s)0aak(s){\color{blue}\pi_{k+1}(a|s) = \begin{cases} 1 & a = a^*_k(s) \\ 0 & a \neq a^*_k(s) \end{cases}}

where ak(s)=argmaxaqk(a,s){\color{blue}a^*_k(s) = \arg\max_a q_k(a,s)}. πk+1\pi_{k+1} is called a greedy policy, since it simply selects the greatest q-value.

Step 2: Value update

因为上面我们算出了πk+1\pi_{k+1},利用已知的vkv_k,然后继续迭代

The elementwise form of

vk+1=rπk+1+γPπk+1vkv_{k+1} = r_{\pi_{k+1}} + \gamma P_{\pi_{k+1}} v_k

(注意这里的vkv_k不是严格的state value了,它只是一组向量,因为不满足贝尔曼公式)

is

vk+1(s)=aπk+1(as)(rp(rs,a)r+γsp(ss,a)vk(s))qk(s,a),sSv_{k+1}(s) = \sum_a {\color{red}\pi_{k+1}(a|s)} \underbrace{\left( \sum_r p(r|s,a) r + \gamma \sum_{s'} p(s'|s,a) {\color{red}v_k(s')} \right)}_{{\color{red}q_k(s,a)}}, \quad s \in \mathcal{S}

Since πk+1\pi_{k+1} is greedy, the above equation is simply

vk+1(s)=maxaqk(a,s){\color{blue}v_{k+1}(s) = \max_a q_k(a,s)}

Pseudocode

Procedure summary:

vk(s)qk(s,a)greedy policy πk+1(as)new value vk+1=maxaqk(s,a)v_k(s) \to q_k(s,a) \to \text{greedy policy } \pi_{k+1}(a|s) \to \text{new value } v_{k+1} = \max_a q_k(s,a)
Algorithm 1 Value iteration algorithm
Require:The probability model p(rs,a)p(r|s,a) and p(ss,a)p(s'|s,a) for all (s,a)(s,a) are known
Ensure:Optimal state value and optimal policy solving the Bellman optimality equation
Initialize v0v_0
While vkv_k has not converged (vkvk1>threshold\|v_k - v_{k-1}\| > \text{threshold}), for the kkth iteration, do
For every state sSs \in \mathcal{S}, do
For every action aA(s)a \in \mathcal{A}(s), do
q-value: qk(s,a)=rp(rs,a)r+γsp(ss,a)vk(s)q_k(s,a) = \sum_r p(r|s,a) r + \gamma \sum_{s'} p(s'|s,a) v_k(s')
Maximum action value: ak(s)=argmaxaqk(a,s)a^*_k(s) = \arg\max_a q_k(a,s)
Policy update: πk+1(as)=1\pi_{k+1}(a|s) = 1 if a=aka = a^*_k, and πk+1(as)=0\pi_{k+1}(a|s) = 0 otherwise
Value update: vk+1(s)=maxaqk(a,s)v_{k+1}(s) = \max_a q_k(a,s)
end for
end while

Policy iteration algorithm

给定一个初始策略π0\pi_0

Step1: policy evaluation (PE)

根据迭代我们现在已经有了πk\pi_k , 通过解贝尔曼啊方程得到这个策略对应的state value vπkv_{\pi_k}

vπk=rπk+γPπkvπkv_{\pi_k} = r_{\pi_k} + \gamma P_{\pi_k} v_{\pi_k}

解这个方程在chapter2说过需要用迭代法,设vπk(j)v_{\pi_k}^{(j)}为第jj次迭代估计的vπkv_{\pi_k}值,不断迭代让vπk(j)vπk,jv_{\pi_k}^{(j)} \rightarrow v_{\pi_k},\quad j \rightarrow \infty

  • Matrix-vector form: vπk(j+1)=rπk+γPπkvπ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

  • Elementwise form:

vπk(j+1)(s)=aπk(as)(rp(rs,a)r+γsp(ss,a)vπk(j)(s)),sSv_{\pi_k}^{(j+1)}(s) = \sum_a \pi_k(a|s) \left( \sum_r p(r|s,a) r + \gamma \sum_{s'} p(s'|s,a) {\color{red}v_{\pi_k}^{(j)}(s')} \right), \quad s \in \mathcal{S}

Stop when jj is sufficiently large or vπk(j+1)vπk(j)\|v_{\pi_k}^{(j+1)} - v_{\pi_k}^{(j)}\| is sufficiently small.

Step 2: policy improvement (PI)

  • Matrix-vector form: πk+1=argmaxπ(rπ+γPπvπk)\pi_{k+1} = \arg\max_\pi (r_\pi + \gamma P_\pi {\color{red}v_{\pi_k}})

  • Elementwise form:

πk+1(s)=argmaxπaπ(as)(rp(rs,a)r+γsp(ss,a)vπk(s))qπk(s,a),sS.\pi_{k+1}(s) = \arg\max_\pi \sum_a \pi(a|s) \underbrace{\left( \sum_r p(r|s,a) r + \gamma \sum_{s'} p(s'|s,a) {\color{red}v_{\pi_k}(s')} \right)}_{q_{\pi_k}(s,a)}, \quad s \in \mathcal{S}.

Here, qπk(s,a)q_{\pi_k}(s,a) is the action value under policy πk\pi_k. Let

ak(s)=argmaxaqπk(a,s)a^*_k(s) = \arg\max_a q_{\pi_k}(a,s)

Then, the greedy policy is

πk+1(as)={1a=ak(s),0aak(s).\pi_{k+1}(a|s) = \begin{cases} 1 & a = a^*_k(s), \\ 0 & a \neq a^*_k(s). \end{cases}

Pseudocode

Algorithm 2 Policy iteration algorithm
Require:The probability model p(rs,a)p(r|s,a) and p(ss,a)p(s'|s,a) for all (s,a)(s,a) are known
Ensure:Optimal state value and optimal policy
Initialize π0\pi_0
While vπkv_{\pi_k} has not converged, for the kkth iteration, do
// Policy evaluation
Initialize an arbitrary vπk(0)v_{\pi_k}^{(0)}
While vπk(j)v_{\pi_k}^{(j)} has not converged, for the jjth iteration, do
For every state sSs \in \mathcal{S}, do
vπk(j+1)(s)=aπk(as)[rp(rs,a)r+γsp(ss,a)vπk(j)(s)]v_{\pi_k}^{(j+1)}(s) = \sum_a \pi_k(a|s) \left[ \sum_r p(r|s,a) r + \gamma \sum_{s'} p(s'|s,a) v_{\pi_k}^{(j)}(s') \right]
end for
end while
// Policy improvement
For every state sSs \in \mathcal{S}, do
For every action aAa \in \mathcal{A}, do
qπk(s,a)=rp(rs,a)r+γsp(ss,a)vπk(s)q_{\pi_k}(s,a) = \sum_r p(r|s,a) r + \gamma \sum_{s'} p(s'|s,a) v_{\pi_k}(s')
end for
ak(s)=argmaxaqπk(s,a)a^*_k(s) = \arg\max_a q_{\pi_k}(s,a)
πk+1(as)=1\pi_{k+1}(a|s) = 1 if a=aka = a^*_k, and πk+1(as)=0\pi_{k+1}(a|s) = 0 otherwise
end for
end while

Truncated policy iteration algorithm

Compare value iteration and policy iteration

alt text

如图:

  • 策略迭代先有一个初始策略π0\pi_0,然后根据π0\pi_0算出对应的state value vπ0v_{\pi_0}, 用vπ0v_{\pi_0}来greedy更新π1\pi_1, 根据 π1\pi_1又可以解贝尔曼方程(迭代法)得到vπ1v_{\pi_1}
  • 值迭代需要一个初始v0v_0,为了可比设为vπ0v_{\pi_0} , 根据v0v_0贪心算出π1\pi_1 , 用π1,v0\pi_1,v_0 迭代算出v1v_1
  • 注意右边comments: vπ1v1v_{\pi_1} \ge v_{1} , 注意看红色的公式,两边都作用同一个策略 π1\pi_1 的 Bellman operator
Tπ1(v)=rπ1+γPπ1vT_{\pi_1}(v) = r_{\pi_1}+\gamma P_{\pi_1}v

由于 Pπ1P_{\pi_1} 的元素都是非负概率,因此这个算子具有单调性:

xyTπ1(x)Tπ1(y)x\ge y \quad\Longrightarrow\quad T_{\pi_1}(x)\ge T_{\pi_1}(y)

,因此vπ1vπ0vπ1v1v_{\pi_1} \ge v_{\pi_0} \Rightarrow v_{\pi_1} \ge v_1

或者也可以理解成,策略迭代是对于Pπ1P_{\pi_1}迭代很多次的代的vπ1v_{\pi_1},而v1v_1只是迭代一次得到的结果

下一步,如果我们把策略迭代的这一步红色公式vπ1=rπ1+γPπ1vπ1v_{\pi_1} = r_{\pi_1}+\gamma P_{\pi_1}v_{\pi_1}迭代解法中的vπ1(0):=v0v_{\pi_1}^{(0)} := v_0 ,如图

alt text

Pseudocode

Algorithm 3 Truncated policy iteration algorithm
Require:The probability model p(rs,a)p(r|s,a) and p(ss,a)p(s'|s,a) for all (s,a)(s,a) are known
Ensure:Optimal state value and optimal policy
Initialize π0\pi_0
While vkv_k has not converged, for the kkth iteration, do
// Policy evaluation
Initialize vk(0)=vk1v_k^{(0)} = v_{k-1}, maximum iteration jtruncatej_{\text{truncate}}
While j<jtruncatej < j_{\text{truncate}}, do
For every state sSs \in \mathcal{S}, do
vk(j+1)(s)=aπk(as)[rp(rs,a)r+γsp(ss,a)vk(j)(s)]v_k^{(j+1)}(s) = \sum_a \pi_k(a|s) \left[ \sum_r p(r|s,a) r + \gamma \sum_{s'} p(s'|s,a) v_k^{(j)}(s') \right]
end for
end while
Set vk=vk(jtruncate)v_k = v_k^{(j_{\text{truncate}})}
// Policy improvement
For every state sSs \in \mathcal{S}, do
For every action aA(s)a \in \mathcal{A}(s), do
qk(s,a)=rp(rs,a)r+γsp(ss,a)vk(s)q_k(s,a) = \sum_r p(r|s,a) r + \gamma \sum_{s'} p(s'|s,a) v_k(s')
end for
ak(s)=argmaxaqk(s,a)a^*_k(s) = \arg\max_a q_k(s,a)
πk+1(as)=1\pi_{k+1}(a|s) = 1 if a=aka = a^*_k, and πk+1(as)=0\pi_{k+1}(a|s) = 0 otherwise
end for
end while

Convergence

alt text

Truncated Policy Iteration(截断策略迭代),可以理解为:

Value Iteration 和 Policy Iteration 的中间形态\boxed{\text{Value Iteration 和 Policy Iteration 的中间形态}}
  • Policy Iteration 每次更新 policy 后,会把新 policy 的 value 几乎算到完全收敛;
  • Value Iteration 只算一步就立刻重新更新 policy;
  • Truncated Policy Iteration 则折中一下,只算有限 jj 步,然后就更新 policy。
Value Iterationj=1Truncated PIjPolicy Iteration\text{Value Iteration} \quad \underbrace{\longleftarrow}_{j=1} \quad \text{Truncated PI} \quad \underbrace{\longrightarrow}_{j\to\infty} \quad \text{Policy Iteration}