动态规划求解强化学习任务——价值迭代
目录
前面部分介绍了策略改进定理的理论推导和策略迭代求解策略 π \pi π的具体算法过程,本节将介绍动态规划求解强化学习任务最后一个模块——价值迭代。
回顾 - 策略迭代
在整体介绍中介绍了策略迭代共包含2个步骤:
- 策略评估(Policy Iteration)
给定一个策略 π \pi π,求出它的最优价值函数 V π ( s ) V_\pi(s) Vπ(s); - 策略改进(Policy Improvement)
基于策略评估给出的 V π ( s ) → V_\pi(s) \to Vπ(s)→ 使用贪心策略,获取收益最大的动作作为新的策略 π ( s ) \pi(s) π(s)
重复执行策略评估和策略改进,直到获取最优策略 π \pi π,迭代结束。
策略迭代缺陷
在整个迭代过程中,策略评估(迭代解) 本身就是一个迭代过程,即便使用了策略改进定理优化了计算最优价值函数的过程,但仍改变不了其循环嵌套循环的本质。
为了优化掉这个嵌套循环的过程,我们将介绍价值迭代。
价值迭代
价值迭代介绍
针对策略迭代中策略评估过程中的缺陷,思考如何优化策略评估步骤;
首先回顾策略评估的算法过程:
输入 | 初始策略: π ( a ∣ s ) \pi(a \mid s) π(a∣s),动态特性函数: p ( s ′ , r ∣ s , a ) p(s',r\mid s,a) p(s′,r∣s,a),奖励: r r r,折扣系数: γ \gamma γ |
---|---|
初始化操作 (Initialization operation) |
1. 对 ∀ s ∈ S \forall s \in \mathcal S ∀s∈S,初始化状态价值函数:如 V ( s ) = 0 V(s) = 0 V(s)=0; 2.设置一个阈值 θ \theta θ,将其设置为很小的实数值,如 θ = 0.01 \theta=0.01 θ=0.01 |
策略评估 (Policy Evaluation) |
1. repeat 对每一轮策略评估: k = 1 , 2 , . . . k=1,2,... k=1,2,... 2. δ ← 0 \delta \gets 0 δ←0 3. for 每个状态 s s s do: 4. v ← V ( s ) \mathcal v \gets V(s) v←V(s) 5. V ( s ) ← ∑ a ∈ A π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ V ( s ′ ) ] V(s) \gets \sum_{a \in \mathcal A}\pi(a \mid s) \sum_{s',r}p(s',r \mid s,a) [r + \gamma V(s')] V(s)←∑a∈Aπ(a∣s)∑s′,rp(s′,r∣s,a)[r+γV(s′)] 6. δ ← m a x ( δ , ∣ v − V ( s ) ∣ ) \delta \gets max(\delta, \mid \mathcal v - V(s) \mid) δ←max(δ,∣v−V(s)∣) 7. end for 8. until δ < θ \delta < \theta δ<θ |
输出结果 | V ( s ) V(s) V(s) |
通过上述的算法过程,我们发现:
在计算新的 V π ( s ) V_\pi(s) Vπ(s)过程中,使用贝尔曼期望方程 → \to → 加权平均方法进行迭代;
计算加权平均方法是从整个策略本身对状态价值函数计算的结果。但在迭代过程中,中间过程中的价值函数并不是我们关心的对象,而只有最终迭代收敛后的 V ∗ ( s ) , π ∗ ( a ∣ s ) V_*(s),\pi_*(a \mid s) V∗(s),π∗(a∣s)才是我们关注的最终结果。
因此,如何优化策略迭代中循环嵌套循环的情况?提出一种解决方案:对策略评估进行截断:
从常规思路考虑,假设某一次迭代的策略改进结果为 π \pi π,进入下一次的策略评估时,仍然需要上述算法通过迭代的方式求解精确的最优价值函数 V ∗ ( s ) V_*(s) V∗(s),这种方式实际上只要进行迭代,它必然会向最优价值函数方向更新,并且迭代次数越高,可优化的信息可能就越少(最优价值函数在更新过程中增长的越慢)
总而言之,通过大规模的迭代只是得到一个比较精确的中间过程的价值函数是很不划算的;
截断策略评估使用的方式
在策略评估的迭代过程中仅进行一步后直接进行策略改进;
根据贝尔曼方程满足的不动点定理 → \to → 即便只是更新了一步,但它仍然产生了一个优于更新前的价值函数。
它具体是如何更新这一步的呢?
贝尔曼最优方程 → \to → 干脆选择一个最优动作对应的状态-动作价值函数进行更新;
V k + 1 ( s ) = max a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ V k ( s ′ ) ] V_{k+1}(s) = \mathop{\max}\limits_{a} \sum_{s',r}p(s',r \mid s,a)[r + \gamma V_k(s')] Vk+1(s)=amaxs′,r∑p(s′,r∣s,a)[r+γVk(s′)]
继续观察:
- 首先从数值角度来观察 V k + 1 ( s ) V_{k+1}(s) Vk+1(s)结果,在之前介绍的贝尔曼最优方程一节中提到,期望(加权平均)值小于最大值。因此,取最大值方式相比于期望方式必然更新的幅度更大一些;
- 从准确性角度观察 V k + 1 ( s ) V_{k+1}(s) Vk+1(s)结果,这个结果相比于期望方式求解结果必然更加粗糙一些。因为期望方式求解结果中存在策略的权重比例,而最大值方式默认这个权重比例为:
π ∗ ( a ∣ s ) = { 1 i f a = arg max a ∈ A q π ∗