第二课:动态规划

1.什么是动态规划?

  • 之前提到解决序列决策问题有两种手段----学习与规划
  • 当前有一个精确的环境模型时,可以用动态规划去解
  • 编程算法中也有动态规划的概念,与其相似
  • 总的来说,就是将问题分解成子问题,通过解决子问题,来解决原问题

动态:针对序列问题

规划:优化,得到策略

  • 贝尔曼方程是关键

2.动态规划可以解决什么问题?

动态规划是一种解决问题的方法,什么样的问题能使用动态规划去解?

这样的问题具有以下两种性质:

  • 最优结构:①满足最优原理;②最优的解可以被分解成子问题的最优解
  • 交叠式子问题:①子问题能够被多次重复;②子问题的解要能够被缓存并再利用

恰好MDP就满足这两个性质:

  • 贝尔曼方程是递归的形式,把问题分解成子问题
  • 值函数有效的存储了子问题的解,并能够再利用

3.强化学习中的动态规划

使用动态规划解决强化学习问题时,要求知道MDP的所有元素

针对评价:

针对优化:

4.动态规划的其他应用:

  • 动态规划不仅仅用来解强化学习问题,是运筹学的一个分支。
  • 分类有:线性动规,区域动规,树形动规,背包问题等、
  • 应用例子:最短路径问题,二分查找树,网络流优化问题等。

5.策略评价问题

利用贝尔曼期望方程的迭代式策略评价:

算法 1 同步备份下的迭代式策略评价算法

  1.  for k = 1, 2, · · · do
  2.      for 所有的状态 s ∈ S do
  3.          使用迭代式更新值函数 vk+1(s)
  4.      end for 
  5.  end for

6.策略评价的例子

  • 假设γ=1;
  • 14个普通状态,2个终止状态
  • 走出边界的动作会导致状态不变
  • 在走到终止状态前,任何动作都会导致-1的奖励
  • 给定一随机策略,π(a|s) = 0.25, ∀s, a