1.什么是动态规划?
- 之前提到解决序列决策问题有两种手段----学习与规划
- 当前有一个精确的环境模型时,可以用动态规划去解
- 编程算法中也有动态规划的概念,与其相似
- 总的来说,就是将问题分解成子问题,通过解决子问题,来解决原问题
动态:针对序列问题
规划:优化,得到策略
- 贝尔曼方程是关键
2.动态规划可以解决什么问题?
动态规划是一种解决问题的方法,什么样的问题能使用动态规划去解?
这样的问题具有以下两种性质:
- 最优结构:①满足最优原理;②最优的解可以被分解成子问题的最优解
- 交叠式子问题:①子问题能够被多次重复;②子问题的解要能够被缓存并再利用
恰好MDP就满足这两个性质:
- 贝尔曼方程是递归的形式,把问题分解成子问题
- 值函数有效的存储了子问题的解,并能够再利用
3.强化学习中的动态规划
使用动态规划解决强化学习问题时,要求知道MDP的所有元素
针对评价:
针对优化:
4.动态规划的其他应用:
- 动态规划不仅仅用来解强化学习问题,是运筹学的一个分支。
- 分类有:线性动规,区域动规,树形动规,背包问题等、
- 应用例子:最短路径问题,二分查找树,网络流优化问题等。
5.策略评价问题
利用贝尔曼期望方程的迭代式策略评价:
算法 1 同步备份下的迭代式策略评价算法
- for k = 1, 2, · · · do
- for 所有的状态 s ∈ S do
- 使用迭代式更新值函数 vk+1(s)
- end for
- end for
6.策略评价的例子
- 假设γ=1;
- 14个普通状态,2个终止状态
- 走出边界的动作会导致状态不变
- 在走到终止状态前,任何动作都会导致-1的奖励
- 给定一随机策略,π(a|s) = 0.25, ∀s, a