《强化学习与最优控制》第 1.1 节 · 确定性动态规划
这是全书的起点。Bertsekas 从最简单的确定性有限阶段问题出发,建立动态规划的数学框架。理解这一节是理解后续所有近似方法的前提——因为近似是对精确方法的近似。
一、问题的数学描述
一个确定性动态规划问题由以下要素组成:
动态系统方程
xk+1=fk(xk,uk),k=0,1,…,N−1
- k:离散时刻(阶段)
- xk:系统状态,属于状态空间 Sk
- uk:控制(决策变量),属于控制约束集 Uk(xk)
- fk:系统方程,描述状态如何演化
- N:时域(总阶段数)
费用函数
总费用 = 各阶段费用之和 + 终止费用:
J(x0;u0,…,uN−1)=gN(xN)+k=0∑N−1gk(xk,uk)
- gk(xk,uk):第 k 阶段的费用
- gN(xN):终止费用
最优值
J∗(x0)=u0,…,uN−1minJ(x0;u0,…,uN−1)
注意符号:Bertsekas 用 J 表示费用函数,用 min 表示最小化。这与 Sutton & Barto 用 V 表示值函数、max 表示最大化是等价的(取负号即可转换)。
二、动态规划算法(核心)
DP 的核心思想是递归分解:把 N 阶段问题分解为 N 个单阶段问题。
从终端向始端反向计算
第 N 步(终止条件):
JN∗(xN)=gN(xN)
第 k 步(递归方程,即贝尔曼方程):
Jk∗(xk)=uk∈Uk(xk)min[gk(xk,uk)+Jk+1∗(fk(xk,uk))]
这个方程的含义非常直观:
当前状态 x_k 的最优费用 = min [ 当前阶段费用 + 未来的最优费用 ]
u_k
最优策略:在每个状态 xk 处,选择取得上述最小值的控制 uk∗。
学习心得:DP 算法是反向计算的——从最后一步 N 开始,逐步向前推到第 0 步。这和很多人直觉中"从前往后推"相反。原因是:要决定当前怎么做,必须先知道"如果到了下一步,最优怎么做"。
三、为什么 DP 有效?——最优性原理
DP 算法背后的原理是贝尔曼的最优性原理:
最优策略具有如下性质:无论初始状态和初始决策是什么,剩余的决策必须构成一个关于由初始决策产生的状态的最优策略。
用数学语言说:如果 {u0∗,…,uN−1∗} 是从 x0 出发的最优控制序列,那么 {u1∗,…,uN−1∗} 是从 x1=f0(x0,u0∗) 出发的最优控制序列。
这个原理看似"显然",但它的威力在于:把一个 N 维联合优化问题分解为 N 个一维优化问题,计算量从指数级降为多项式级。
四、离散最优控制 = 最短路径问题
Bertsekas 给出了一个优美的几何解释:任何确定性有限状态有限阶段问题都可以表示为有向无环图中的最短路径问题。
阶段0 阶段1 阶段2 ... 阶段N 终止
●──────→●──────→●──────→...───→●──────→ ●(虚拟终止节点)
│ │ │ │
x_0 x_1 x_2 x_N
- 节点 = 状态
- 边 = 状态-控制对 (xk,uk),边的权重 = 阶段费用 gk(xk,uk)
- 最优控制 = 从初始节点到终止节点的最短路径
学习心得:这个等价关系非常重要。它意味着:
- 组合优化问题(如 TSP、调度)都可以用 DP 框架来描述
- DP 算法本质上就是在图上做反向最短路径计算
- 当状态空间太大时(指数级),精确 DP 不可行——这就是强化学习要解决的问题
五、连续空间最优控制
当状态空间是连续的(如欧几里得空间 ℜn),DP 算法的形式不变,但计算上面临新挑战:
- Jk∗(xk) 是连续函数,无法用表格存储
- 需要离散化或参数化近似
经典例子是线性二次型问题(LQP):
xk+1=Axk+Buk
J=k=0∑N−1(xk′Qxk+uk′Ruk)+xN′QNxN
这类问题有解析解(Riccati 方程),是最优控制理论的核心内容。
六、Q 因子形式
Bertsekas 引入了 Q 因子(Q-factors)作为 DP 的等价表达形式:
Qk∗(xk,uk)=gk(xk,uk)+Jk+1∗(fk(xk,uk))
即:在状态 xk 执行控制 uk 后,当前费用加上未来最优费用。
由此,最优费用和最优策略可以表示为:
Jk∗(xk)=uk∈Uk(xk)minQk∗(xk,uk)
uk∗(xk)=arguk∈Uk(xk)minQk∗(xk,uk)
Q 因子版本的 DP 递归:
Qk∗(xk,uk)=gk(xk,uk)+uk+1∈Uk+1(fk(xk,uk))minQk+1∗(fk(xk,uk),uk+1)
为什么需要 Q 因子? 后面讲 Q 学习时就知道:Q 因子直接关联"状态-控制对"而非仅"状态",使得无模型方法成为可能——不需要知道系统方程 fk,只需要采样 (xk,uk,xk+1) 三元组就能更新 Q 因子。
七、DP 的根本局限
Bertsekas 在本节末尾点明了全书动机:
DP 算法需要对所有状态 xk 计算 Jk∗(xk)。当状态空间很大时(即所谓的维数灾难),这不可行。
| 问题类型 |
状态数量 |
DP 可行性 |
| 5×5 网格世界 |
25 |
✅ 轻松 |
| 国际象棋 |
∼1040 |
❌ 不可能 |
| 围棋 |
∼10170 |
❌ 不可能 |
| 连续状态空间 |
∞ |
❌ 不可能 |
强化学习的本质就是:在 DP 框架下,用近似方法来应对状态空间过大的问题。
评论(0)