Dynamic Programming
动态规划:将大问题化解为小问题,通过求解子问题,最终得到大问题的求解方式
- 最优子结构
- 重复子问题
- 马尔可夫属性对该问题比较符合
动态规划在马尔可夫决策过程中经常是作为规划的作用
- 在预测方面:
- 在控制方面:
策略迭代
利用贝尔曼方程进行策略的迭代,从而最优化策略
例子1
在一个格子迷宫中,左上角和右下角为灰色格子,走入后获得reward为0,其他格子则为-1。第一次迭代过后,为初值,第二次迭代中,-1.7其实是-1.75进行了舍弃。比如[0][1]号格子:向上,向右,向下,都是获得reward=-1,而向左为0。所以,(0±1±1±1)/4±1=-1.75。在第三次迭代中,[0][2]个格子中,向左获得-0.7的reward,向右和向下和向上都是获得-1的reward。所以,(-0.7±1±1±1)/4±2=-2.925取整等于-2.9。
policy改进
策略迭代的整体算法思想是:先通过value function计算出
,然后利用贪心算法得到policy的改进,得到
,从而不断的迭代,得到最后的最优policy
例子2
States:两个地点,每个地点有最多20辆车
Actions:两个地点一夜之间最多可以移动5辆车
Reward:获得的钱数
Transitions:汽车的归还和需求是随机的
图中每个5,4,3等等的条状区域表示针对区域内某个点,需要从A点移动到B点的车辆数为对应的数字
与上一个迷宫问题有点类似,也是先随机定义一个policy然后利用value值进行更新改进,直到q函数计算得到结果是最大的
则满足停止条件,所得到的最后policy是最优的policy
- 任意一个最优策略可以分成两部分:
- 最优的下一步action
- 在下一个 状态空间中也有最优的策略
- 得到的一个最优化准则:
- 所有的未来的状态,从 是可达的
- policy达到最优值,根据value function,从 到
值迭代
如果我们知道子问题的答案,那么就可以通过值迭代的方法得到上一步的value function,也就是说值迭代的方法是从最终奖励开始的,并且采用逆向的方式构建
与policy迭代不同的是,值迭代只是不断地更新value function,最终获得的value function即拥有最优的policy
瞬时的value function可能并不能代表一个明确的policy
总结
拓展
三个简单的ideas对于异步动态规划:
- 替代动态规划
- 优先级变化
- 实时动态规划