Skip to content

自适应控制 = 控制器自己学习参数 ​

一、控制论本质 ​

自适应控制:当被控对象 G(s) 的参数未知或在变化时,控制器在线辨识 G(s) 并自动调整控制律。

            ┌─────────────────────────────┐
            │   自适应控制器               │
   r(t) ──→ │  ┌─────────┐   ┌─────────┐  │ ──→ u(t) ──→ G(s, θ) ──→ y(t)
            │  │ 辨识器  │ → │ 控制器  │  │                  ↑
            │  │ 估 θ̂(t)│   │ C(s,θ̂) │  │                  │
            │  └─────────┘   └─────────┘  │                  │
            │       ↑                      │                  │
            │       └──── y(t) 反馈 ───────┼──────────────────┘
            └─────────────────────────────┘

关键属性:

  • 双环结构:内环是普通反馈,外环是参数自适应
  • 辨识器估计 G(s) 的参数 θ̂(t)
  • 控制器根据 θ̂(t) 调整自身参数
  • 系统主动适应环境变化

两种自适应:

自镇定(Self-Oscillation / Adaptive Stabilization):
  - 目标:系统在参数变化下保持稳定
  - 方法:在线调整控制律维持稳定性
  
自最优(Self-Optimal / Model Reference Adaptive):
  - 目标:跟踪参考模型的行为
  - 方法:调整参数使系统行为逼近参考

二、钱学森原话 ​

钱学森 Ch 18 引言: "自适应控制系统是这样一种系统: 它能在被控对象参数发生较大范围变化的情况下, 自动地调整控制律的参数, 使系统仍能满足设计要求。"

钱学森 Ch 18: "自适应控制系统的设计必须解决两个问题: (1)在线辨识被控对象的参数; (2)在线调整控制律。 这两个问题都是困难的,但也是工程上迫切需要的。"

三、软件工程对位 ​

自适应控制场景软件工程实例
自适应限流阈值根据历史 QPS 自动调整
K8s HPA副本数根据实际负载自动调整
机器学习模型参数根据数据自动更新(=最典型的自适应)
A/B 测试自动调参根据转化率自动调整流量分配
自动数据库调优缓冲池大小根据查询模式自动调整
CDN 智能调度调度策略根据实时延迟自动调整
自适应缓存 TTLTTL 根据访问模式自动调整
自动扩缩容资源根据流量自动伸缩

共同特征:

  • 业务环境在变化
  • 固定参数的最优解不再是"最优"
  • 需要在线学习和自动调整

四、调用的 L 层方法论 ​

方法论在自适应中的角色
self-stabilizing-adaptive(自镇定与自适应)自适应的具体实现
dynamic-programming(动态规划)在线最优决策
extremum-seeking(自寻最优)无模型在线寻优
optimal-control(最优控制)离线最优的理论基础

五、实战案例 ​

案例 1:自适应限流 ​

普通限流:阈值 = 10000(固定)
  问题:业务增长,10000 已不够
  问题:流量低峰,10000 浪费

自适应限流:
  阈值(t) = base + α · error_rate(t) + β · p99(t)
  
  在线调整:
  - 错误率高 → 阈值降
  - P99 高 → 阈值降
  - 资源空闲 → 阈值升
  
  实现:滑动窗口 + 反馈调节

案例 2:K8s HPA ​

目标:CPU = 70%
当前:CPU = 30%(低负载)

传统(固定规则):
  if CPU > 70%: scale_up
  if CPU < 30%: scale_down
  问题:阈值固定,无法适应业务变化

自适应:
  desired_replicas = ceil(current_replicas · target_util / current_util)
  + 平滑(避免震荡)
  + 滞回(避免边界抖动)
  + 预测(提前扩容)

案例 3:机器学习模型在线学习 ​

传统 ML:
  训练(离线)→ 部署(固定)→ 推理
  问题:数据分布变化(drift)→ 模型失效

自适应 ML(在线学习):
  训练(在线)→ 部署(持续)→ 推理
              ↑__________________↓
              新数据持续训练
  
  对应到控制论:
  - 辨识器 = 训练任务
  - 控制器 = 推理模型
  - 自适应 = 持续训练

六、自适应的工程挑战 ​

挑战 1:辨识的精度

参数估计需要:
  - 持续激励(输入信号足够丰富)
  - 足够数据
  - 计算资源

软件对位:
  - 流量必须持续有变化
  - 历史数据足够
  - 计算资源(在线训练)

挑战 2:稳定性的证明

理论难点:
  - 辨识器和控制器互相影响
  - 整体稳定性难以证明

工程实践:
  - 慢自适应(慢调整)
  - 加投影(限制参数范围)
  - 加死区(小变化不调整)

挑战 3:辨识与控制的时间常数

辨识要快于参数变化
控制要快于系统响应

软件对位:
  - 模型更新频率 > 业务变化频率
  - 控制频率 > 业务响应频率

七、设计原则 ​

原则 1:慢自适应

调整步长:α ∈ (0, 0.1)  ← 一次只调一点
避免:α = 0.5+  ← 容易震荡

软件对位:渐进式发布 + 灰度

原则 2:加约束

参数投影:θ ∈ [θ_min, θ_max]
死区:|ΔJ| < δ 不调整

软件对位:限流上下界 + 阈值滞回

原则 3:可观测

必须能测量被控对象的状态
否则无法在线辨识

软件对位:业务可观测性建设

八、反模式 ​

反模式症状应该改用
快自适应系统震荡慢自适应 + 死区
无约束自适应参数发散加投影 + 边界
无可观测性自适应无依据先建可观测性
冷启动自适应初始数据不足退化为固定参数

九、何时升级到其他结构 ​

升级到协调控制:

  • 单点自适应不够
  • 多子系统协调

降级到固定参数控制:

  • 业务环境稳定
  • 自适应成本太高

十、控制结构对位(供业务主题引用) ​

本结构被调用:

  • themes/architecture-evolution:ML 平台 = 自适应
  • themes/system-stability:自适应限流 = 自适应

本结构调用:

  • self-stabilizing-adaptive:自镇定理论
  • dynamic-programming:在线最优
  • extremism-seeking:无模型寻优
  • optimal-control:离线最优理论

总结 ​

自适应控制 = 让系统自己学习。当业务场景是:

  • 环境在持续变化
  • 固定参数会失效
  • 有可观测性和计算资源

用自适应:现代系统的"自学习"能力。

关键:

  • 慢自适应(避免震荡)
  • 加约束(避免发散)
  • 可观测(自适应有依据)
  • 接受成本(在线学习的代价)

从名家方法论与工程化思路中蒸馏出自己的工程体系。