DP用来解决MDPs的planning问题,主要解决途径有policy iteration和value iteration。
目录:
IntroductionPolicy EvaluationPolicy IterationValue IterationExtensions to Dynamic ProgrammingContract Mapping注意:当已知MDPs的状态转移矩阵时,环境模型就已知了,此时可看为planning问题。
基于当前的policy计算出每个状态的value function。
Iterative Policy Evaluation,策略迭代估计 问题:评估一个给定的策略解决方法:迭代,贝尔曼期望备份, v1→v2→⋯→vπ 采用同步备份解决过程分为2步
policy evaluation 基于当前的policy计算每个状态的value function
Policy Improvement 基于当前的value function,采用贪心算法来找到当前最优秀的policy
eg: Given a policy π
evaluate the policy π: vπ(s)=E[Rt+1+γRt+2+⋯|St=s] improve the policy by acting greedy with respect to vπ : π′=greedy(vπ)注意:该策略略迭代过程总是会收敛到最优策略 π∗ 。
Value Iteration in MDPs 最优化原理:当且仅当任何从状态s能达到的状态s’都能在当前状态下取得最优的value时,那么状态s也能在当前的policy下获得最优的value。即 vπ(s)=v∗(s) 。
任何最优策略都可以被细分为两部分:
最优的第一个action A∗ 接下来后续状态s’下的最优策略Deterministic Value Iteration 如果已知子问题的最优解 v∗(s′) ,则可以通过第一个Bellman Optimality Equation将 v∗(s) 也求出来,因此从终点向起点推导就可以推出所有的状态最优值。
v∗(s)← maxa∈ARsa+γ∑s′∈SPss′av∗(s′) Value Iteration通过迭代的方法,通过这一步的 vk(s′) 更新下一步的 vk+1(s) ,不断迭代,最终收敛到最优的 v∗ 。*注意:中间生成的value function不对应任何policy。
Policy Iteration和Value Iteration有什么本质区别?为什么一个叫policy iteration,一个叫value iteration呢? 原因其实很好理解,policy iteration使用bellman方程来更新value,最后收敛的value 即 vπ 是当前policy下的value值(所以叫做对policy进行评估),目的是为了后面的policy improvement得到新的policy。而value iteration是使用bellman 最优方程来更新value,最后收敛得到的value即 v∗ 就是当前state状态下的最优的value值。因此,只要最后收敛,那么最优的policy也就得到的。因此这个方法是基于更新value的,所以叫value iteration。从上面的分析看,value iteration较之policy iteration更直接。不过问题也都是一样,需要知道状态转移函数p才能计算。本质上依赖于模型,而且理想条件下需要遍历所有的状态,这在稍微复杂一点的问题上就基本不可能了。针对MDPs要解决的2个问题,有如下解决办法: 针对prediction 目标是在已知policy下得到收敛的value function,因此针对问题不断迭代计算Bellman Expectation Equation就足够了。针对control 需要同时获得最优的policy,那么在Iterative policy evaluation基础上加入一个选择policy的过程就行。此外,通过value iteration在得到最优的value function后推导出最优policy。整理:
问题贝尔曼方程解决算法PredictionBellman Expectation EquationIterative Policy EvaluationControlBellman Expectation Equation & Greedy Policy ImprovementPolicy IterationControlBellman Optimality EquationValue Iteration压缩映射定理为本节的主要数学依据,解释了为何value iteration收敛于 v∗ ,为何Policy Evaluation收敛于 vπ ,为何Policy Iteration收敛于 v∗ 。