第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框架下,可以通过策略迭代求解:

  1. 策略评估:给定策略 $K_k$,求解Lyapunov方程得到值函数
  2. 策略改进:$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 验证的必要性与挑战

神经网络控制器在复杂任务上表现出色,但其黑箱特性带来安全隐患:

  • 不可解释性:难以理解决策逻辑
  • 脆弱性:对输入扰动敏感
  • 无保证:缺乏稳定性和性能的理论保证

验证目标:

  1. 稳定性验证:证明闭环系统稳定
  2. 安全性验证:确保状态始终在安全区域内
  3. 鲁棒性验证:对扰动和不确定性的容忍度
  4. 性能验证:满足性能指标要求

18.4.2 基于Lyapunov的验证方法

寻找Lyapunov函数证明神经网络控制器的稳定性:

对于系统 $\dot{x} = f(x, \pi_{\theta}(x))$,寻找 $V(x)$ 满足:

  1. $V(x) > 0, \forall x \neq 0$
  2. $V(0) = 0$
  3. $\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_π

关键组件:

  1. 策略网络:预测专家走法的概率分布
  2. 价值网络:评估棋盘局面的胜率
  3. MCTS:结合网络输出进行树搜索
  4. 快速走子:轻量级策略用于模拟

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完全通过自我对弈学习,展示了强化学习的力量:

训练流程:

  1. 自我对弈:使用当前网络进行MCTS生成对局
  2. 数据收集:记录状态、MCTS改进的策略、最终结果
  3. 网络训练:最小化损失函数 $$\mathcal{L} = (z - v_{\theta}(s))^2 - \pi^T \log p_{\sigma}(s) + c|\theta|^2$$

  4. 网络评估:新网络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 接触丰富任务的处理

接触和碰撞的不连续性是可微分仿真的主要挑战:

解决方法:

  1. 平滑接触模型:用连续函数近似接触力
  2. 随机平滑:通过随机扰动平滑不连续性
  3. 凸松弛:将接触约束松弛为凸优化问题

示例:抓取任务的可微分建模 $$F_{\text{contact}} = k_n \max(0, -d)^{3/2} + k_t \tanh(v_t/v_0)$$ 其中 $d$ 是穿透深度,$v_t$ 是切向速度,使用光滑函数避免不可微点。

18.6.4 实际应用案例

软体机器人控制

利用可微分仿真优化软体机器人的形态和控制:

  • 优化执行器位置
  • 设计非均匀刚度分布
  • 学习复杂的协调运动模式

接触丰富操作

通过可微分仿真学习灵巧操作:

  • 多指抓取策略
  • 工具使用技能
  • 装配任务规划

本章小结

本章探讨了学习与控制的深度融合,主要内容包括:

  1. 迭代学习控制(ILC):通过重复执行改善性能,特别适合周期性任务。关键是设计合适的学习律并保证收敛性。

  2. 强化学习与最优控制的联系:两者在数学本质上高度相关,都求解Bellman方程。区别在于模型需求和求解方法。

  3. 基于学习的MPC:使用机器学习方法(GP、神经网络)学习系统模型,提高MPC的适应性和鲁棒性。

  4. 神经网络控制器验证:通过Lyapunov方法、可达性分析、形式化验证等技术,为神经网络控制器提供安全保证。

  5. AlphaGo案例:展示了深度学习与树搜索的完美结合,体现了函数逼近与在线规划的协同。

  6. 可微分仿真:实现控制与设计的联合优化,为复杂系统的协同设计开辟新途径。

关键公式回顾:

  • 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)$
  1. 损失函数设计: $$\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})]$
  1. 训练策略: - 交替优化:固定 $\theta$ 优化 $\phi$,固定 $\phi$ 优化 $\theta$ - 使用反例采样:重点采样违反Lyapunov条件的状态 - 渐进增加约束权重 $\lambda_1, \lambda_2$

  2. 验证: - 在训练后使用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)$$

  1. 值函数收敛: 由于MCTS在每个状态都收敛到最优动作,值估计满足: $$V_{\text{MCTS}}(s) \to V^*(s) = \max_a Q^*(s,a)$$ 这正是动态规划的Bellman最优方程的解。

  2. 收敛速度: 收敛速度为 $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. 展开优化算法

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
  1. 端到端训练
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
  1. 实际考虑: - 使用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:可微分仿真的数值稳定性

问题:长时间仿真的梯度可能爆炸或消失。 解决

  • 使用梯度裁剪
  • 采用检查点技术减少内存并稳定梯度
  • 分段优化而非端到端优化

最佳实践检查清单

系统设计阶段

  • [ ] 明确是否需要模型:有模型用控制,无模型用学习
  • [ ] 评估数据可用性:数据充足考虑学习方法
  • [ ] 确定安全要求:安全关键系统需要形式化验证
  • [ ] 分析任务特性:重复性任务适合ILC,变化环境适合自适应

算法选择

  • [ ] 线性系统优先考虑LQR/MPC等成熟方法
  • [ ] 非线性系统评估是否可以局部线性化
  • [ ] 高维系统考虑函数逼近和降维
  • [ ] 不确定性大时使用鲁棒或自适应方法

学习组件设计

  • [ ] 选择合适的函数逼近器(GP适合小数据,NN适合大数据)
  • [ ] 设计合理的特征和状态表示
  • [ ] 确定在线学习还是离线学习
  • [ ] 考虑探索策略和安全约束

验证与测试

  • [ ] 仿真环境充分测试
  • [ ] 设计退化模式和安全边界
  • [ ] 实施运行时监控
  • [ ] 准备人工接管机制

部署与维护

  • [ ] 记录关键决策和假设
  • [ ] 监控性能指标和异常
  • [ ] 定期更新模型和参数
  • [ ] 保持可解释性和可调试性

性能优化

  • [ ] profile计算瓶颈
  • [ ] 考虑模型压缩和加速
  • [ ] 评估精度与速度权衡
  • [ ] 利用并行化和硬件加速