第18章:学习与控制的结合
本章概述
传统控制理论依赖精确的数学模型和解析方法,而机器学习则通过数据驱动的方式处理复杂系统。本章探讨如何将两者优势结合,构建既具有理论保证又能处理复杂现实场景的智能控制系统。我们将介绍迭代学习控制、强化学习与最优控制的深层联系、基于学习的模型预测控制,以及神经网络控制器的验证方法。通过AlphaGo等案例,展示学习与控制结合的强大威力。
18.1 迭代学习控制(Iterative Learning Control, ILC)
18.1.1 基本概念与动机
迭代学习控制是一种通过重复执行相同任务来改善控制性能的方法。与传统反馈控制不同,ILC利用前次迭代的完整轨迹信息来更新控制律,特别适合重复性任务。
考虑一个需要在有限时间区间 $[0, T]$ 上重复执行的任务。第 $k$ 次迭代的系统动态为:
\[\begin{cases}
x_{k+1}(t) = f(x_k(t), u_k(t), t) \\
y_k(t) = g(x_k(t), t) \\
x_k(0) = x_0
\end{cases}\]
其中 $u_k(t)$ 是第 $k$ 次迭代的控制输入,目标是使输出 $y_k(t)$ 跟踪期望轨迹 $y_d(t)$。
18.1.2 ILC更新律设计
P型学习律
最简单的ILC更新律是P型(比例型):
\[u_{k+1}(t) = u_k(t) + \Gamma e_k(t)\]
其中 $e_k(t) = y_d(t) - y_k(t)$ 是跟踪误差,$\Gamma$ 是学习增益矩阵。
D型学习律
D型(微分型)学习律利用误差的导数信息:
\[u_{k+1}(t) = u_k(t) + \Gamma \dot{e}_k(t)\]
这种方法对高频误差更敏感,可以更快地改善瞬态响应。
PD型学习律
结合P型和D型的优点:
\[u_{k+1}(t) = u_k(t) + \Gamma_p e_k(t) + \Gamma_d \dot{e}_k(t)\]
18.1.3 收敛性分析
对于线性时不变系统:
\(\begin{cases}
\dot{x}_k(t) = Ax_k(t) + Bu_k(t) \\
y_k(t) = Cx_k(t)
\end{cases}\)
使用P型学习律时,误差动态满足:
\(e_{k+1}(t) = (I - \Gamma CB)e_k(t) + \text{高阶项}\)
收敛条件是:
\(\rho(I - \Gamma CB) < 1\)
其中 $\rho(\cdot)$ 表示谱半径。这要求学习增益的选择必须使系统矩阵的所有特征值都在单位圆内。
18.1.4 鲁棒ILC设计
实际系统存在模型不确定性和扰动,需要设计鲁棒的ILC算法。考虑带有不确定性的系统:
\[y_k(t) = G(q)[u_k(t)] + d_k(t)\]
其中 $G(q)$ 是带有不确定性的传递算子,$d_k(t)$ 是重复性扰动。
鲁棒ILC设计引入滤波器 $Q(q)$:
\(u_{k+1}(t) = Q(q)[u_k(t)] + L(q)[e_k(t)]\)
其中 $Q(q)$ 是鲁棒性滤波器(通常选择为低通滤波器),$L(q)$ 是学习滤波器。
18.1.5 实际应用考虑
初始条件一致性
ILC要求每次迭代的初始条件相同或相近。实际中可以通过:
- 设计复位控制器确保初始状态一致
- 使用初始状态学习补偿初始误差
- 采用λ-范数优化处理初始条件变化
迭代域稳定性
除了时域稳定性,还需考虑迭代域稳定性:
- 单调收敛:$|e_{k+1}| \leq \gamma |e_k|$,其中 $\gamma < 1$
- 渐近收敛:$\lim_{k→∞} e_k(t) = 0$
存储与计算需求
ILC需要存储完整轨迹信息,对于高维系统或长时间任务,存储需求可能很大。解决方案包括:
- 采样数据ILC:只在关键时刻更新
- 基础函数参数化:用少量参数表示轨迹
- 压缩感知技术:利用轨迹稀疏性
18.2 强化学习与最优控制的联系
18.2.1 数学框架的统一
强化学习(RL)和最优控制在数学本质上高度相关。考虑连续时间最优控制问题:
\[J = \int_0^{\infty} e^{-\gamma t} r(x(t), u(t)) dt\]
对应的Hamilton-Jacobi-Bellman (HJB)方程为:
\(\gamma V(x) = \max_u \{r(x,u) + \nabla_x V(x)^T f(x,u)\}\)
在RL框架下,这对应于连续时间的Bellman方程:
\(\gamma V(x) = \max_a \{r(x,a) + \mathbb{E}[\nabla_x V \cdot \dot{x}|x,a]\}\)
两者的核心都是求解值函数 $V(x)$ 和最优策略 $\pi^*(x)$。
18.2.2 方法论对比
| 方面 |
最优控制 |
强化学习 |
| 模型要求 |
需要精确模型 $f(x,u)$ |
无需模型,通过交互学习 |
| 求解方法 |
解析/数值求解HJB/Riccati |
值迭代/策略梯度/Actor-Critic |
| 收敛保证 |
理论保证收敛到最优 |
渐近收敛,依赖于探索 |
| 计算复杂度 |
维数灾难(状态维度) |
样本复杂度高 |
| 适用范围 |
简单动态,凸优化问题 |
复杂环境,非线性系统 |
18.2.3 线性二次问题的桥梁
线性二次调节器(LQR)问题展示了两种方法的深刻联系。对于系统:
\(\dot{x} = Ax + Bu\)
代价函数:
\(J = \int_0^{\infty} (x^TQx + u^TRu) dt\)
最优控制解通过代数Riccati方程获得:
\(A^TP + PA - PBR^{-1}B^TP + Q = 0\)
\(u^* = -R^{-1}B^TPx\)
在RL框架下,可以通过策略迭代求解:
- 策略评估:给定策略 $K_k$,求解Lyapunov方程得到值函数
- 策略改进:$K_{k+1} = R^{-1}B^TP_k$
两种方法在LQR问题上等价,但RL方法不需要知道系统矩阵 $A, B$。
18.2.4 函数逼近与深度强化学习
当状态空间高维或连续时,需要使用函数逼近。深度强化学习使用神经网络逼近值函数或策略:
\[V(x) \approx V_{\theta}(x) = \text{NeuralNetwork}(x; \theta)\]
这带来了新的挑战:
- 逼近误差:函数逼近引入的误差可能破坏收敛性
- 稳定性丧失:不当的网络结构可能导致控制不稳定
- 样本效率:深度网络需要大量样本才能有效学习
18.2.5 探索与利用的权衡
最优控制假设模型已知,无需探索。而RL必须平衡探索(收集信息)和利用(优化性能):
- ε-贪婪策略:以概率ε选择随机动作
- 高斯噪声探索:$u = \pi(x) + \mathcal{N}(0, \sigma^2)$
- Thompson采样:基于后验分布的不确定性进行探索
- 好奇心驱动:通过内在奖励鼓励探索未知状态
控制理论可以指导探索策略设计:
- 使用持续激励条件确保参数可辨识性
- 利用可控性格拉姆矩阵评估状态空间覆盖
- 基于信息论的主动探索(最大化信息增益)
18.3 基于学习的模型预测控制
18.3.1 学习增强的MPC框架
传统MPC依赖精确模型,而实际系统模型往往不完美。基于学习的MPC通过数据改善模型和控制性能:
┌─────────────┐
│ 环境/系统 │
└──────┬──────┘
│ 数据 (x,u,x')
▼
┌─────────────┐
│ 模型学习 │ ← 高斯过程/神经网络
└──────┬──────┘
│ 预测模型
▼
┌─────────────┐
│ MPC优化 │
│ min J(x,u) │
│ s.t. 约束 │
└──────┬──────┘
│ 最优控制
▼
返回到系统
18.3.2 高斯过程MPC (GP-MPC)
高斯过程提供了模型不确定性的概率表示,特别适合MPC:
系统模型:
\(x_{t+1} = f(x_t, u_t) + w_t\)
其中 $f$ 未知,使用GP建模:
\(f \sim \mathcal{GP}(\mu(x,u), k(x,u,x',u'))\)
GP提供预测均值和方差:
\(\mu_{t+1} = \mu(x_t, u_t)\)
\(\sigma_{t+1}^2 = k(x_t,u_t,x_t,u_t) + \sigma_n^2\)
鲁棒MPC公式化:
\(\begin{aligned}
\min_{u_0,...,u_{N-1}} & \sum_{t=0}^{N-1} l(x_t, u_t) + V_f(x_N) \\
\text{s.t. } & x_{t+1} = \mu(x_t, u_t) \\
& g(x_t) + \beta \sigma_t \leq 0 \quad \text{(概率约束)}
\end{aligned}\)
其中 $\beta$ 控制约束满足的置信度。
18.3.3 神经网络动态模型
深度神经网络可以学习复杂的非线性动态:
\[x_{t+1} = f_{\theta}(x_t, u_t) = \text{DNN}([x_t; u_t]; \theta)\]
训练目标:
\(\theta^* = \arg\min_{\theta} \sum_{i=1}^{N} \|x_{i+1} - f_{\theta}(x_i, u_i)\|^2 + \lambda \|\theta\|^2\)
挑战与解决方案:
- 泛化能力:使用集成模型或贝叶斯神经网络量化不确定性
- 物理一致性:引入物理约束的损失项或架构设计
- 可微分性:确保模型可微以支持基于梯度的MPC求解
18.3.4 残差学习与混合模型
结合物理模型和学习模型的优势:
\[x_{t+1} = f_{\text{nom}}(x_t, u_t) + f_{\text{res}}(x_t, u_t)\]
其中:
- $f_{\text{nom}}$:基于物理的标称模型(可能简化或不准确)
- $f_{\text{res}}$:学习的残差模型,补偿模型误差
优点:
- 保留物理直觉和结构
- 减少学习负担
- 提高泛化能力
- 更好的样本效率
18.3.5 在线学习与自适应
实时更新模型以应对系统变化:
递归最小二乘(RLS)更新
对于线性参数化模型:
\(P_{t+1} = P_t - \frac{P_t \phi_t \phi_t^T P_t}{\lambda + \phi_t^T P_t \phi_t}\)
\(\theta_{t+1} = \theta_t + P_{t+1} \phi_t (y_{t+1} - \phi_t^T \theta_t)\)
在线高斯过程
使用稀疏GP或局部GP模型实现在线更新:
- 滑动窗口:只保留最近的数据点
- 诱导点方法:选择代表性数据点
- 局部模型:在当前状态附近构建局部GP
18.4 神经网络控制器的验证
18.4.1 验证的必要性与挑战
神经网络控制器在复杂任务上表现出色,但其黑箱特性带来安全隐患:
- 不可解释性:难以理解决策逻辑
- 脆弱性:对输入扰动敏感
- 无保证:缺乏稳定性和性能的理论保证
验证目标:
- 稳定性验证:证明闭环系统稳定
- 安全性验证:确保状态始终在安全区域内
- 鲁棒性验证:对扰动和不确定性的容忍度
- 性能验证:满足性能指标要求
18.4.2 基于Lyapunov的验证方法
寻找Lyapunov函数证明神经网络控制器的稳定性:
对于系统 $\dot{x} = f(x, \pi_{\theta}(x))$,寻找 $V(x)$ 满足:
- $V(x) > 0, \forall x \neq 0$
- $V(0) = 0$
- $\dot{V}(x) = \nabla V^T f(x, \pi_{\theta}(x)) < 0$
方法:
- SOS(Sum-of-Squares)编程:将Lyapunov条件转化为半定规划
- 神经Lyapunov函数:同时学习控制器和Lyapunov函数
- 反例引导:通过反例迭代改进Lyapunov候选
18.4.3 可达性分析
计算系统在神经网络控制下的可达集:
前向可达集:
\(\mathcal{R}_t = \{x(t) | x(0) \in \mathcal{X}_0, u(s) = \pi_{\theta}(x(s)), s \in [0,t]\}\)
方法:
- 区间分析:使用区间算术传播不确定性
- 多面体方法:用多面体过近似可达集
- Hamilton-Jacobi可达性:求解HJ偏微分方程
18.4.4 形式化验证技术
SMT(Satisfiability Modulo Theories)求解
将验证问题编码为逻辑公式:
\(\forall x \in \mathcal{X}_{\text{safe}}: \pi_{\theta}(x) \in \mathcal{U}_{\text{safe}} \land f(x, \pi_{\theta}(x)) \in \mathcal{X}_{\text{safe}}\)
使用SMT求解器(如Z3)验证或找到反例。
抽象解释
构建神经网络的抽象域,过近似网络行为:
- 区间抽象:每个神经元输出的区间边界
- 多面体抽象:线性约束描述激活模式
- Zonotope抽象:仿射变换的紧凑表示
18.4.5 验证感知的训练
在训练过程中考虑验证目标:
\[\mathcal{L} = \mathcal{L}_{\text{task}} + \lambda_{\text{verify}} \mathcal{L}_{\text{verify}}\]
其中验证损失可以是:
- Lyapunov损失:$\mathcal{L}_{\text{verify}} = \max(0, \dot{V}(x))$
- 障碍函数损失:确保状态远离不安全区域
- 鲁棒性损失:最小化对抗扰动的影响
18.5 案例研究:AlphaGo的蒙特卡洛树搜索与价值网络
18.5.1 问题设定与挑战
围棋的复杂性:
- 状态空间:~$10^{170}$ 种可能的棋盘配置
- 分支因子:平均每步有~250种合法走法
- 游戏长度:平均~150步
传统方法的局限:
- 完全搜索不可行(计算复杂度太高)
- 手工特征难以捕捉围棋的复杂模式
- 传统评估函数难以准确评估局面
18.5.2 AlphaGo的架构设计
AlphaGo结合了深度学习和树搜索,体现了学习与控制的完美结合:
策略网络 p_σ(a|s) ──┐
├──→ MCTS ──→ 选择动作
价值网络 v_θ(s) ────┘ ↑
│
快速走子策略 p_π
关键组件:
- 策略网络:预测专家走法的概率分布
- 价值网络:评估棋盘局面的胜率
- MCTS:结合网络输出进行树搜索
- 快速走子:轻量级策略用于模拟
18.5.3 蒙特卡洛树搜索(MCTS)算法
MCTS通过模拟来评估动作的价值,是一种在线规划方法:
# MCTS的四个阶段
def mcts_iteration(root):
# 1. 选择(Selection)
node = root
while node.is_fully_expanded() and not node.is_terminal():
node = select_child(node) # 使用UCB公式
# 2. 扩展(Expansion)
if not node.is_terminal():
child = node.expand() # 添加新子节点
node = child
# 3. 模拟(Simulation)
value = rollout(node) # 使用快速策略模拟到终局
# 4. 回传(Backpropagation)
while node is not None:
node.update(value) # 更新访问次数和价值估计
node = node.parent
UCB(Upper Confidence Bound)选择公式:
\(a^* = \arg\max_a \left( Q(s,a) + c \sqrt{\frac{\ln N(s)}{N(s,a)}} \right)\)
其中:
- $Q(s,a)$:动作价值估计
- $N(s)$:状态访问次数
- $N(s,a)$:动作访问次数
- $c$:探索常数
18.5.4 神经网络与MCTS的结合
AlphaGo创新性地将神经网络集成到MCTS中:
先验概率指导
使用策略网络输出作为先验:
\(P(s,a) = p_{\sigma}(a|s)\)
修改UCB公式:
\(a^* = \arg\max_a \left( Q(s,a) + c \cdot P(s,a) \cdot \frac{\sqrt{N(s)}}{1 + N(s,a)} \right)\)
价值估计增强
结合价值网络和模拟结果:
\(V(s) = (1-\lambda) v_{\theta}(s) + \lambda v_{\text{rollout}}(s)\)
渐进宽化
限制每个节点的扩展,只考虑高概率动作:
- 初始只扩展top-k动作
- 随着访问增加逐渐扩展更多动作
18.5.5 自我对弈与强化学习
AlphaGo Zero完全通过自我对弈学习,展示了强化学习的力量:
训练流程:
- 自我对弈:使用当前网络进行MCTS生成对局
- 数据收集:记录状态、MCTS改进的策略、最终结果
- 网络训练:最小化损失函数
\(\mathcal{L} = (z - v_{\theta}(s))^2 - \pi^T \log p_{\sigma}(s) + c\|\theta\|^2\)
- 网络评估:新网络vs旧网络,胜率超过阈值则更新
关键洞察:
- MCTS提供了策略改进算子
- 神经网络提供了函数逼近
- 自我对弈提供了无限的训练数据
- 整个系统形成了策略迭代的变体
18.5.6 控制理论视角的分析
从控制理论角度看AlphaGo:
动态规划联系
MCTS本质上是近似动态规划:
- 状态空间:棋盘配置
- 动作空间:合法走法
- 奖励函数:终局时的输赢(+1/-1)
- 值函数:通过MCTS估计的 $Q(s,a)$
最优性与收敛性
- MCTS在访问次数趋于无穷时收敛到最优策略
- 神经网络提供了值函数的紧凑表示
- 自我对弈确保了策略的单调改进
探索与利用
- UCB公式自然平衡探索与利用
- 神经网络先验加速了有效探索
- 渐进宽化控制了搜索复杂度
这个案例完美展示了如何将控制理论(树搜索、动态规划)与深度学习(神经网络函数逼近)结合,解决超大规模的序贯决策问题。
18.6 前沿专题:可微分物理仿真与控制协同设计
18.6.1 可微分仿真的概念
传统的物理仿真器是前向计算工具,而可微分仿真器允许通过自动微分计算梯度:
\[\frac{\partial \mathcal{L}}{\partial \theta} = \frac{\partial \mathcal{L}}{\partial x_T} \cdot \frac{\partial x_T}{\partial \theta}\]
其中 $\theta$ 可以是:
- 控制参数
- 系统参数(质量、摩擦系数等)
- 设计参数(机器人形态、连杆长度等)
关键技术:
- 自动微分:通过计算图自动计算梯度
- 隐式微分:处理接触、碰撞等不连续现象
- 伴随方法:高效计算长时间轨迹的梯度
18.6.2 控制与设计的联合优化
可微分仿真使得同时优化控制策略和系统设计成为可能:
\[\min_{\theta_{\text{control}}, \theta_{\text{design}}} \mathcal{L}(x, u, \theta_{\text{design}})\]
应用场景:
- 机器人形态优化:同时优化机器人结构和控制器
- 材料属性设计:优化软体机器人的刚度分布
- 传感器配置:确定最优的传感器位置和数量
18.6.3 接触丰富任务的处理
接触和碰撞的不连续性是可微分仿真的主要挑战:
解决方法:
- 平滑接触模型:用连续函数近似接触力
- 随机平滑:通过随机扰动平滑不连续性
- 凸松弛:将接触约束松弛为凸优化问题
示例:抓取任务的可微分建模
\(F_{\text{contact}} = k_n \max(0, -d)^{3/2} + k_t \tanh(v_t/v_0)\)
其中 $d$ 是穿透深度,$v_t$ 是切向速度,使用光滑函数避免不可微点。
18.6.4 实际应用案例
软体机器人控制
利用可微分仿真优化软体机器人的形态和控制:
- 优化执行器位置
- 设计非均匀刚度分布
- 学习复杂的协调运动模式
接触丰富操作
通过可微分仿真学习灵巧操作:
本章小结
本章探讨了学习与控制的深度融合,主要内容包括:
-
迭代学习控制(ILC):通过重复执行改善性能,特别适合周期性任务。关键是设计合适的学习律并保证收敛性。
-
强化学习与最优控制的联系:两者在数学本质上高度相关,都求解Bellman方程。区别在于模型需求和求解方法。
-
基于学习的MPC:使用机器学习方法(GP、神经网络)学习系统模型,提高MPC的适应性和鲁棒性。
-
神经网络控制器验证:通过Lyapunov方法、可达性分析、形式化验证等技术,为神经网络控制器提供安全保证。
-
AlphaGo案例:展示了深度学习与树搜索的完美结合,体现了函数逼近与在线规划的协同。
-
可微分仿真:实现控制与设计的联合优化,为复杂系统的协同设计开辟新途径。
关键公式回顾:
- ILC更新律:$u_{k+1}(t) = u_k(t) + \Gamma e_k(t)$
- HJB方程:$\gamma V(x) = \max_u {r(x,u) + \nabla_x V^T f(x,u)}$
- GP-MPC不确定性:$x_{t+1} \sim \mathcal{N}(\mu(x_t,u_t), \sigma^2(x_t,u_t))$
- UCB选择:$a^* = \arg\max_a (Q(s,a) + c\sqrt{\ln N(s)/N(s,a)})$
练习题
基础题
习题18.1 ILC收敛性分析
考虑线性系统 $y_k = Gu_k$,其中 $G$ 是系统的脉冲响应矩阵。使用P型学习律 $u_{k+1} = u_k + \gamma e_k$。
a) 推导误差的迭代关系
b) 给出收敛的充要条件
c) 如何选择最优的学习增益 $\gamma$?
提示
考虑误差 $e_k = y_d - y_k$,将学习律代入系统方程,分析误差的演化。收敛条件与矩阵 $(I - \gamma G)$ 的谱半径有关。
答案
a) 误差迭代关系:
$e_{k+1} = y_d - y_{k+1} = y_d - Gu_{k+1} = y_d - G(u_k + \gamma e_k) = e_k - \gamma Ge_k = (I - \gamma G)e_k$
b) 收敛充要条件:
系统收敛当且仅当 $\rho(I - \gamma G) < 1$,其中 $\rho(\cdot)$ 表示谱半径。
c) 最优学习增益:
最小化收敛速度,选择 $\gamma^* = \frac{2}{\lambda_{\max}(G) + \lambda_{\min}(G)}$,使得收敛速度最快。
习题18.2 LQR与强化学习等价性
证明对于线性系统的LQR问题,策略迭代算法收敛到与代数Riccati方程相同的解。
提示
从任意稳定策略开始,交替进行策略评估(求解Lyapunov方程)和策略改进(贪婪更新),证明序列单调收敛。
答案
策略迭代步骤:
1. 策略评估:给定 $K_i$,求解Lyapunov方程得到 $P_i$
$(A-BK_i)^TP_i + P_i(A-BK_i) + Q + K_i^TRK_i = 0$
2. 策略改进:$K_{i+1} = R^{-1}B^TP_i$
3. 单调性:可以证明 $J(K_{i+1}) \leq J(K_i)$,且等号成立当且仅当 $K_i$ 是最优策略
4. 收敛性:由于代价有下界(正定),单调递减序列必然收敛。收敛点满足 $K = R^{-1}B^TP$,其中 $P$ 满足代数Riccati方程。
习题18.3 GP-MPC不确定性传播
在GP-MPC中,如何将单步预测的不确定性传播到多步预测?考虑系统 $x_{t+1} = f(x_t, u_t)$,其中 $f \sim \mathcal{GP}$。
提示
使用矩匹配或粒子方法传播高斯分布通过非线性函数。考虑均值和协方差的递推关系。
答案
不确定性传播方法:
1. **矩匹配(Moment Matching)**:
- 输入分布:$x_t \sim \mathcal{N}(\mu_t, \Sigma_t)$
- 预测均值:$\mu_{t+1} = \mathbb{E}[f(x_t, u_t)] \approx \int f(\mu(x), u_t) \mathcal{N}(x|\mu_t, \Sigma_t) dx$
- 预测协方差:$\Sigma_{t+1} = \text{Var}[f(x_t, u_t)] + \Sigma_{\text{noise}}$
2. **线性化传播**:
- 在均值点线性化:$f(x, u) \approx f(\mu, u) + \nabla_x f|_{\mu}(x - \mu)$
- 协方差传播:$\Sigma_{t+1} = \nabla_x f \cdot \Sigma_t \cdot \nabla_x f^T + \sigma^2(x_t, u_t)$
3. **粒子方法**:
- 采样粒子 $\{x_t^{(i)}\}$ 表示分布
- 通过GP传播每个粒子
- 从传播后的粒子估计统计量
挑战题
习题18.4 神经网络Lyapunov函数设计
设计一个算法,同时学习神经网络控制器 $u = \pi_{\theta}(x)$ 和Lyapunov函数 $V_{\phi}(x)$,保证闭环稳定性。
提示
构造联合优化问题,在Lyapunov条件约束下最小化控制代价。使用惩罚方法或拉格朗日方法处理约束。
答案
联合学习算法:
1. **优化目标**:
$$\min_{\theta, \phi} \mathbb{E}_{x \sim \mathcal{D}} [l(x, \pi_{\theta}(x))]$$
约束条件:
- $V_{\phi}(x) > 0, \forall x \neq 0$
- $V_{\phi}(0) = 0$
- $\nabla V_{\phi}^T f(x, \pi_{\theta}(x)) < -\alpha V_{\phi}(x)$
2. **损失函数设计**:
$$\mathcal{L} = \mathcal{L}_{\text{control}} + \lambda_1 \mathcal{L}_{\text{positive}} + \lambda_2 \mathcal{L}_{\text{decrease}}$$
其中:
- $\mathcal{L}_{\text{control}} = \mathbb{E}[x^TQx + u^TRu]$
- $\mathcal{L}_{\text{positive}} = \mathbb{E}[\max(0, \epsilon - V_{\phi}(x))]$
- $\mathcal{L}_{\text{decrease}} = \mathbb{E}[\max(0, \dot{V}_{\phi} + \alpha V_{\phi})]$
3. **训练策略**:
- 交替优化:固定 $\theta$ 优化 $\phi$,固定 $\phi$ 优化 $\theta$
- 使用反例采样:重点采样违反Lyapunov条件的状态
- 渐进增加约束权重 $\lambda_1, \lambda_2$
4. **验证**:
- 在训练后使用SMT求解器验证Lyapunov条件
- 如发现反例,将其加入训练集继续优化
习题18.5 MCTS与动态规划的关系
证明:当MCTS的访问次数趋于无穷时,其值估计收敛到动态规划的解。
提示
使用大数定律和递归关系,证明MCTS的值估计收敛到Bellman方程的不动点。
答案
收敛性证明:
1. **MCTS值更新**:
$$Q_n(s,a) = \frac{1}{n} \sum_{i=1}^n R_i(s,a)$$
其中 $R_i$ 是第 $i$ 次模拟的返回值。
2. **大数定律应用**:
当 $n \to \infty$:
$$Q_n(s,a) \to \mathbb{E}[R(s,a)] = r(s,a) + \gamma \sum_{s'} P(s'|s,a)V^*(s')$$
3. **UCB选择收敛性**:
UCB项 $c\sqrt{\ln N(s)/N(s,a)} \to 0$ 当 $N(s,a) \to \infty$
因此动作选择收敛到贪婪:
$$\lim_{n \to \infty} \pi_{\text{MCTS}}(s) = \arg\max_a Q^*(s,a)$$
4. **值函数收敛**:
由于MCTS在每个状态都收敛到最优动作,值估计满足:
$$V_{\text{MCTS}}(s) \to V^*(s) = \max_a Q^*(s,a)$$
这正是动态规划的Bellman最优方程的解。
5. **收敛速度**:
收敛速度为 $O(1/\sqrt{n})$,由中心极限定理决定。
习题18.6 可微分MPC实现
实现一个可微分的MPC控制器,使得可以通过梯度下降优化MPC的超参数(如权重矩阵Q、R)。
提示
使用KKT条件的隐式微分,或者展开优化迭代并通过计算图反向传播。
答案
可微分MPC实现方案:
1. **MPC问题定义**:
$$u^* = \arg\min_u \sum_{t=0}^{N-1} (x_t^TQ(\theta)x_t + u_t^TR(\theta)u_t)$$
s.t. $x_{t+1} = Ax_t + Bu_t$
2. **通过KKT条件求导**:
KKT条件:
$$\nabla_u L(u^*, \lambda^*) = 0$$
$$g(u^*) = 0$$
对参数 $\theta$ 求导:
$$\begin{bmatrix} \nabla_{uu}L & \nabla_u g^T \\ \nabla_u g & 0 \end{bmatrix} \begin{bmatrix} du/d\theta \\ d\lambda/d\theta \end{bmatrix} = -\begin{bmatrix} \nabla_{u\theta}L \\ \nabla_{\theta}g \end{bmatrix}$$
3. **展开优化算法**:
```python
def differentiable_mpc(x0, theta, num_iterations=100):
Q, R = parse_parameters(theta)
u = torch.zeros(N, m, requires_grad=True)
for _ in range(num_iterations):
# 前向模拟
x = rollout(x0, u, A, B)
# 计算代价
cost = compute_cost(x, u, Q, R)
# 梯度步
grad = torch.autograd.grad(cost, u)[0]
u = u - learning_rate * grad
return u
```
4. **端到端训练**:
```python
def train_mpc_parameters(theta_init, data):
theta = theta_init.requires_grad_(True)
optimizer = torch.optim.Adam([theta])
for x0_true, x_desired in data:
u = differentiable_mpc(x0_true, theta)
x_final = simulate(x0_true, u)
loss = ||x_final - x_desired||^2
optimizer.zero_grad()
loss.backward()
optimizer.step()
return theta
```
5. **实际考虑**:
- 使用warm start加速MPC求解
- 限制优化迭代次数以保证可微性
- 添加正则化确保Q、R保持正定
常见陷阱与错误
Gotcha 1:ILC的初始条件敏感性
问题:ILC假设每次迭代初始条件相同,实际中很难保证。
解决:
- 使用初始条件学习(Initial Condition Learning)
- 采用λ-范数而非2-范数评估性能
- 设计鲁棒的复位控制器
Gotcha 2:神经网络控制器的分布偏移
问题:训练分布与部署分布不同导致性能下降。
解决:
- 使用DAgger(Dataset Aggregation)迭代收集数据
- 领域随机化增强泛化能力
- 在线微调适应新环境
Gotcha 3:GP-MPC的计算复杂度
问题:GP的计算复杂度为O(n³),不适合实时控制。
解决:
- 使用稀疏GP或局部GP模型
- 预计算GP预测,在线查表
- 使用神经网络蒸馏GP模型
Gotcha 4:强化学习的样本效率
问题:纯RL方法需要大量交互数据,实际系统难以承受。
解决:
- 结合模型知识减少探索需求
- 使用模拟器预训练
- 采用迁移学习利用相关任务经验
Gotcha 5:验证的保守性
问题:形式化验证方法往往过于保守,限制了性能。
解决:
- 使用概率验证而非最坏情况验证
- 分层验证:核心安全性严格验证,性能指标宽松验证
- 运行时监控补充离线验证
Gotcha 6:可微分仿真的数值稳定性
问题:长时间仿真的梯度可能爆炸或消失。
解决:
- 使用梯度裁剪
- 采用检查点技术减少内存并稳定梯度
- 分段优化而非端到端优化
最佳实践检查清单
系统设计阶段
算法选择
学习组件设计
验证与测试
部署与维护
性能优化