Dynamic Programming
- 整体性->子问题最优解 devide and conquer
- MDP问题和Bellman方程可以通过DP来求解
- 解决planning问题
- Input: MDP(S, A, P, R, γ) or _Π
- Output:value function v_Π
- for Prediction vs for Control
Policy Evaluation
- 对已知的pollicy进行评估
- 通过期望形式的Bellman方程迭代
- v_1 -> v_2 -> …… -> v_Π
- 每次迭代都会使用到所有的状态
- s在k+1次迭代的value是由s’状态在k次迭代的value值带入Bellman迭代方程得出的
- Random policy vs Greedy policy
Policy Iteration
- Given a policy Π -> 让它变得更好
- step 1. 评估这个policy Π
- step 2. Improve -> 在evaluation结果中挑选好的policy : Π’ = greedy(v_Π)
- Thm: 通过迭代一定会收敛于一个最优的policy
- 迭代 -> 高出评估 -> 更新policy -> 迭代 -> ……
- 迭代的improvement终止 -> 满足Bellman最优方程 -> v_Π = max q_Π(s, a) -> v_Π = v_* 最优
- 引入一个停止条件
- k次迭代后停止 —— simple
Value Iteration
- 后向感应方法 -> if we knew the solution to subproblems v_*(s’)
- 回溯法 vs 同步动态规划(generally)
- value迭代的时间复杂度:O(mn²) (m个action, n个state)
- q迭代的时间复杂度:O(m²n²)
Extensions
更为高效的算法:异步DP
- In-place DP:每个state的计算都使用最新value,即不全是叶子节点,还有已迭代的根节点
- 优先级排序:误差(两次迭代差值)大的状态,具有更高的优先级
- real-time DP:真实环境中,agent真正到达的状态是我们更加关心的