Skip to content

Commit e34a507

Browse files
committed
Updates dl/reinforcement/dynamic-programming.md
Auto commit by GitBook Editor
1 parent 44b2c95 commit e34a507

File tree

2 files changed

+61
-4
lines changed

2 files changed

+61
-4
lines changed
8.04 KB
Loading

dl/reinforcement/dynamic-programming.md

Lines changed: 61 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
* 解决复杂问题的一种方法。将多阶过程分解为一些列单阶段问题,逐个求解,最后结合起来以解决这类过程优化问题。
55
* 同时,将这些子问题的解保存起来,如果下一次遇到了相同的子问题,则不需要重新计算子问题的解。
66
2. **DP主要用于解决含有以下两点特性的问题**
7-
7+
88
* 最优子结构:最优解能被分解为子问题,最优应用原则
99
* 覆盖子问题:子问题多次出现,子问题的解可以被缓存和重复利用
10+
1011
3. MDPs满足上述两条性质
11-
12+
1213
* 贝尔曼等式给出递归分解形式,可以切分成子问题。
1314
* 值函数存储和重复利用可行解,即保存了子问题的解**=>**可以通过DP求解MDPs
15+
1416
4. 应用:用于MDP中的决策问题
1517

1618
针对MDP,切分的子问题就是在每个状态下应该选择哪个action。同时,这一时刻的子问题取决于上一时刻的子问题选择了哪个action。
@@ -24,7 +26,7 @@
2426
基于当前的policy计算出每个状态的value function。
2527

2628
1. **Iterative Policy Evaluation,策略迭代估计**
27-
29+
2830
* 问题:评估一个给定的策略
2931
* 解决方法:迭代,贝尔曼期望备份,
3032
v1→v2→⋯→vπ
@@ -48,8 +50,63 @@ evaluate the policy π:vπ\(s\)=E\[Rt+1+γRt+2+⋯\|St=s\]
4850

4951
improve the policy by acting greedy with respect to vπ:π′=greedy\(\)
5052

51-
注意:**该策略略迭代过程总是会收敛到最优策略π∗。**
53+
注意:**该策略略迭代过程总是会收敛到最优策略π∗。**
54+
55+
56+
57+
## **4. Value Iteration** {#4-value-iteration}
58+
59+
1. **Value Iteration in MDPs**
60+
最优化原理:当且仅当任何从状态s能达到的状态s’都能在当前状态下取得最优的value时,那么状态s也能在当前的policy下获得最优的value。即vπ\(s\)=v∗\(s\)
61+
62+
任何最优策略都可以被细分为两部分:
63+
64+
* 最优的第一个action A∗
65+
* 接下来后续状态s’下的最优策略
66+
67+
2. **Deterministic Value Iteration**
68+
如果已知子问题的最优解v∗\(s′\),则可以通过第一个Bellman Optimality Equation将v∗\(s\)也求出来,因此从终点向起点推导就可以推出所有的状态最优值。
69+
70+
![](/assets/deterministic-value-iteration.png)
71+
72+
Value Iteration通过迭代的方法,通过这一步的vk\(s′\)更新下一步的vk+1\(s\),不断迭代,最终收敛到最优的v∗。
73+
74+
75+
76+
**\*注意:中间生成的value function不对应任何policy。**
77+
78+
1. **Policy Iteration和Value Iteration有什么本质区别?为什么一个叫policy iteration,一个叫value iteration呢?**
79+
80+
* 原因其实很好理解,policy iteration使用bellman方程来更新value,最后收敛的value 即vπ是当前policy下的value值(所以叫做对policy进行评估),目的是为了后面的policy improvement得到新的policy。
81+
* 而value iteration是使用bellman 最优方程来更新value,最后收敛得到的value即v∗就是当前state状态下的最优的value值。因此,只要最后收敛,那么最优的policy也就得到的。因此这个方法是基于更新value的,所以叫value iteration。
82+
* 从上面的分析看,value iteration较之policy iteration更直接。不过问题也都是一样,需要知道状态转移函数p才能计算。本质上依赖于模型,而且理想条件下需要遍历所有的状态,这在稍微复杂一点的问题上就基本不可能了。
83+
2. 针对MDPs要解决的2个问题,有如下解决办法:
84+
* 针对prediction
85+
目标是在已知policy下得到收敛的value function,因此针对问题不断迭代计算Bellman Expectation Equation就足够了。
86+
* 针对control
87+
需要同时获得最优的policy,那么在Iterative policy evaluation基础上加入一个选择policy的过程就行。此外,通过value iteration在得到最优的value function后推导出最优policy。
88+
89+
整理:
90+
91+
| 问题 | 贝尔曼方程 | 解决算法 |
92+
| :--- | :--- | :--- |
93+
| Prediction | Bellman Expectation Equation | Iterative Policy Evaluation |
94+
| Control | Bellman Expectation Equation & Greedy Policy Improvement | Policy Iteration |
95+
| Control | Bellman Optimality Equation | Value Iteration |
96+
97+
98+
**5. DP的一些扩展**
99+
100+
1. **Asynchronous Dynamics Programming 异步动态规划**
101+
那么上面的算法的核心是更新每个状态的value值。那么可以通过运行多个实例同时采集样本来实现异步更新。而基于异步更新的思想,DeepMind出了一篇不错的paper:Asynchronous Methods for Deep Reinforcement Learning该文对于Atari游戏的效果得到大幅提升。
102+
2. **Full-Width Backups &Sample Backups**
103+
3. **Approximate DP**
104+
105+
---
106+
107+
## **6. Contraction Mapping 压缩映射** {#6-contraction-mapping-压缩映射}
52108

109+
压缩映射定理为本节的主要数学依据,解释了为何value iteration收敛于v∗,为何Policy Evaluation收敛于vπ,为何Policy Iteration收敛于v∗。
53110

54111

55112

0 commit comments

Comments
 (0)