最优控制与强化学习是同一个序贯决策问题的两套语言:控制界沿连续、模型已知的路线走到 HJB 与 LQR,RL 沿离散、模型未知的路线走到 Bellman 与 Q-learning。本篇建立两套词汇的逐项映射,并打开三个接口——MPC↔policy、优化器↔控制器、稳定与安全的控制式补课。

历史合流

年份事件
1950sBellman 动态规划,并命名维数灾难 curse of dimensionality
1956–60Pontryagin 极值原理确立
1960Kalman 提出 LQR,与 Kalman 滤波 组合成 LQG
1989Watkins 的 Q-learning:把 Bellman 方程改写为随机逼近更新
2013–DQN 及后续:值函数改用神经网络逼近

两个社区的分野在假设而非问题:控制假设模型已知,换来解析解与保证;RL 假设模型未知,用采样换一般性。Q-learning 之后边界基本消失——它本就可以读作自适应控制的一种。

概念词典

RL控制备注
状态 状态 即 状态空间表示 State-Space 中的
动作 控制输入 动作空间 ↔ 输入约束集
转移核 过程噪声
策略 反馈律 控制默认确定性,RL 靠随机性探索
奖励 代价 符号相反:max 奖励 ⇔ min 代价
值函数 cost-to-go 同一对象
折扣 有限时域 / 平均代价控制少用折扣,多直接约束时域
model-based RL系统辨识 + 控制器设计学动力学 = 辨识
探索噪声持续激励 persistent excitation同一现象,两个名字

MDP 即在 马尔可夫链 上加决策与奖励;反过来,带输入的马尔可夫链就是随机控制系统。

Bellman 方程与 HJB

离散 Bellman 最优方程(取 min 代价约定):

令 、,取 展开并保留一阶项,得到 HJB 方程:

Bellman 是 HJB 的时间离散化,HJB 是 Bellman 的连续极限;随机系统对应的期望形式同理。两者共享同一障碍—— 定义在整个状态空间上,这正是 Bellman 命名的维数灾难。RL 的全部意义可以概括为一句话:用采样加函数逼近绕开 的表格表示。

线性 、二次 时 HJB 有解析解:, 满足 Riccati 方程,最优策略退化为线性增益 。因此 LQR 是 RL 算法的天然公测集——Q-learning 应当从数据中收敛出同一个 :

import numpy as np
 
# 同一被控对象:双积分器 x''=u 的离散化(dt=0.1),代价 l = x'Qx + u'Ru
A = np.array([[1.0, 0.1], [0.0, 1.0]])
B = np.array([[0.005], [0.1]])
Qm, R, gamma = np.eye(2), np.array([[0.5]]), 0.95
 
# ---- 控制路线:折扣 Riccati 迭代,最优增益 K = γ(R+γB'PB)⁻¹B'PA ----
P = np.zeros((2, 2))
for _ in range(5000):
    P = Qm + gamma*A.T@P@A - gamma**2*(A.T@P@B) @ np.linalg.solve(R + gamma*B.T@P@B, B.T@P@A)
K = gamma * np.linalg.solve(R + gamma*B.T@P@B, B.T@P@A)
print("LQR gain K:", K.ravel().round(4))      # [0.8599 1.6182]
 
# ---- RL 路线:Q-learning,二次参数化 Q(x,u) = z'Hz,z = [x1, x2, u] ----
H = np.eye(3)
rng = np.random.default_rng(0)
for ep in range(5000):
    alpha = 0.5 - 0.45 * ep / 5000            # 步长退火
    x = rng.uniform(-1, 1, 2)
    for _ in range(30):
        u = rng.normal(0, 0.4) if rng.random() < 0.15 \
            else -(H[:2, 2] @ x) / H[2, 2]    # ε-greedy;贪心动作形如 u = -K x
        xn = A @ x + B.ravel() * u
        us = -(H[:2, 2] @ xn) / H[2, 2]       # 下一状态的贪心动作
        z = np.array([x[0], x[1], u])
        q = lambda zz: zz @ H @ zz
        target = x @ Qm @ x + R[0, 0]*u**2 + gamma * q([*xn, us])
        H += alpha * (target - q(z)) * np.outer(z, z) / (1 + z @ z)**2  # 归一化 TD 更新
        x = xn
K_rl = H[:2, 2] / H[2, 2]                     # 从 Q 函数读出线性增益
print("RL  gain K:", K_rl.round(4))           # [0.8599 1.6182] —— 两条路线会合

控制路线解方程,RL 路线采样逼近,殊途同归于同一个增益。

两种闭环范式:policy 与 MPC

实现 反馈控制 Feedback 有两条路:

显式 policyMPC
代表PID、LQR 增益、策略网络滚动时域优化
设计离线一次完成每步在线解有限时域问题,只执行首步
在线计算近似为零每步一次约束优化
约束处理难,饱和需专门设计状态/输入约束原生支持
模型依赖弱(PID 控制 可盲调)强,依赖预测模型

RL 的策略网络可视为 amortized planning:把 MPC 每步的在线优化预先蒸馏进参数。model-based RL 正好落在这两列之间——学出动力学后接 MPC(PETS 类),或再蒸馏成 policy(Dreamer 类)。

优化器即控制器

把 梯度下降 的迭代格式 看作以梯度为观测、以迭代点为状态的离散闭环系统,学习率 就是环路增益:

  • 学习率过大 → 迭代振荡发散,即闭环极点越过稳定边界
  • 动量 = 阻尼:heavy-ball 把一阶迭代升为二阶系统, 提供惯性并抑制高曲率方向的振荡
  • PID 对照:GD 是 P 控制,动量是 D(阻尼),Nesterov 前瞻梯度是相位超前补偿,积分项负责消除常值稳态误差
  • 学习率调参与 PID 增益整定本质同构

Lessard–Recht–Packard(2016)用鲁棒控制的积分二次约束(IQC)把各类优化器的收敛速度统一为闭环稳定性分析——优化器设计就是控制器设计。

控制给 RL 补的课:稳定与安全

RL 的最优性不等于稳定性:最大化累积奖励不保证闭环系统在 Lyapunov 意义 下稳定,训练收敛也不代表受控对象收敛。控制视角的对策:

  • 控制 Lyapunov 函数(CLF):把 写成对策略的硬约束,稳定从训练的副作用升级为显式规格
  • 控制屏障函数(CBF):保证安全集 前向不变,是 safe RL 最常用的形式化
  • 鲁棒性:sim-to-real gap 本质是模型失配,鲁棒控制处理扰动与不确定性的整套工具(、扰动抑制)可直接迁移
  • 分离原理:LQG 中估计(Kalman 滤波)与控制(LQR)解耦各自最优;belief-state RL 在 POMDP 里重新发明了这一结构

控制与 RL 的合理关系不是替代而是分工:模型结构与先验知识归控制,高维非线性与数据归学习——现代机器人栈里两者已经长在一起。