第2章:参数估计基础

各位工程师朋友,大家好。今天我们来聊聊自适应控制里最核心的一块基石——参数估计。

说实话,我刚开始做自适应控制那会儿,总觉得参数估计就是个数学游戏。直到有一次,我在现场调试一个电机驱动系统,参数一变,整个系统就抖得像筛糠一样。那时候我才真正明白:没有可靠的参数估计,自适应控制就是空中楼阁。

这一章,我会带大家把参数估计的几种主流方法过一遍。包括最小二乘法(离线版和递归版)、梯度下降法、极大似然估计,还有怎么评价这些方法的好坏。嗯,内容不少,但都是干货。

2.1 为什么需要参数估计?

先问个问题:你手头有个系统,比如一个加热炉,它的数学模型是已知的,但里面的参数——热容、热阻——会随着时间变化。怎么办?

答案就是:在线估计这些参数,然后根据估计值调整控制器。这就是自适应控制的基本思路。

参数估计说白了,就是根据系统的输入输出数据,反向推算出系统的内部参数。我习惯把它比作「盲人摸象」——你摸到的数据是局部的,但你要猜出整头大象的样子。

2.2 最小二乘法(Least Squares)

最小二乘法是参数估计里最经典的方法,没有之一。我当年读研时,导师第一堂课就说:「最小二乘法,你必须闭着眼睛都能写出来。」

2.2.1 离线最小二乘法

先看离线版本。假设我们有一个线性系统:

y(t) = φ(t)ᵀθ + e(t)

其中 y(t) 是输出,φ(t) 是回归向量(包含过去的输入输出),θ 是待估参数,e(t) 是噪声。

我们收集了 N 组数据,想找到一组 θ,让预测误差的平方和最小。数学上就是:

J(θ) = Σ [y(t) - φ(t)ᵀθ]²

求导令其为零,得到解析解:

θ̂ = (ΦᵀΦ)⁻¹ ΦᵀY

这个公式看起来简单,但实际用起来有几个坑。我曾经在一个项目中,直接用这个公式算一个 10 阶系统的参数,结果矩阵 ΦᵀΦ 的条件数大得吓人,算出来的参数完全不能用。

⚠️ 注意: 矩阵 ΦᵀΦ 必须可逆。如果数据不够丰富,或者输入信号缺乏激励,这个矩阵就是奇异的。我建议你在计算前先检查一下条件数。

2.2.2 递归最小二乘法(RLS)

离线方法有个致命问题:它需要全部历史数据。对于在线系统,数据是源源不断来的,你不可能每次都重新算一遍。

递归最小二乘法(RLS)就是解决这个问题的。它的核心思想是:用上一时刻的估计值,加上当前新数据的修正,得到新的估计值。

RLS 的递推公式如下:

K(t) = P(t-1)φ(t) / [λ + φ(t)ᵀP(t-1)φ(t)]
θ̂(t) = θ̂(t-1) + K(t)[y(t) - φ(t)ᵀθ̂(t-1)]
P(t) = [I - K(t)φ(t)ᵀ]P(t-1) / λ

这里 λ 是遗忘因子,取值范围通常在 0.95 到 0.99 之间。λ 越小,算法对最新数据越敏感,但估计值的波动也越大。

💡 经验之谈: 我一般把遗忘因子设成 0.98。如果系统参数变化很快,我会降到 0.95。但千万别低于 0.9,否则估计值会像喝醉了酒一样乱晃。

2.3 梯度下降法

梯度下降法是最小二乘法的一种替代方案。它不追求一步到位,而是沿着误差曲面的梯度方向,一步步往下走。

更新公式很简单:

θ(t+1) = θ(t) - μ ∇J(θ(t))

其中 μ 是步长(学习率),∇J 是目标函数的梯度。

对于线性系统,梯度可以写成:

∇J(θ) = -2 Σ φ(t)[y(t) - φ(t)ᵀθ]

所以更新公式变成:

θ(t+1) = θ(t) + 2μ Σ φ(t)e(t)

梯度下降法比 RLS 简单,但收敛速度慢。我一般在参数维度很高,或者矩阵求逆太耗时的情况下才用它。

🔑 关键区别: 最小二乘法一步到位(如果矩阵可逆),梯度下降法步步为营。RLS 是两者的折中——它用递推的方式逼近最小二乘解。

2.4 极大似然估计(MLE)

极大似然估计的思路和最小二乘法不太一样。它问的是:给定观测数据,哪个参数最有可能产生这些数据?

假设噪声 e(t) 服从高斯分布 N(0, σ²),那么似然函数为:

L(θ) = Π (1/√(2πσ²)) exp(-[y(t)-φ(t)ᵀθ]²/(2σ²))

取对数后,最大化似然函数等价于最小化:

J(θ) = Σ [y(t) - φ(t)ᵀθ]²

你看,在高斯噪声假设下,极大似然估计和最小二乘法是等价的!

但 MLE 的威力在于:它不局限于高斯噪声。你可以根据实际的噪声分布,构造不同的似然函数。比如,如果噪声是拉普拉斯分布,MLE 就等价于最小绝对偏差(L1 范数)估计,对异常值更鲁棒。

⚠️ 注意: MLE 需要知道噪声的分布形式。如果你猜错了分布,估计结果可能还不如最小二乘法。我建议:除非你对噪声特性很有把握,否则先用最小二乘法。

2.5 参数估计的性能指标

有了估计方法,怎么评价它好不好?我一般看这几个指标:

指标 含义 我的经验
无偏性 估计值的期望等于真值 最小二乘法在噪声均值为零时无偏
一致性 数据越多,估计值越接近真值 RLS 和梯度下降法都有一致性
有效性 估计值的方差达到 Cramér-Rao 下界 MLE 在高斯噪声下是有效的
收敛速度 估计值收敛到真值的快慢 RLS 比梯度下降法快得多
鲁棒性 对噪声和异常值的容忍度 MLE 在正确分布假设下最鲁棒

我个人最看重的是收敛速度和鲁棒性。因为在实际系统中,参数变化往往很快,而且传感器数据里总会有一些「脏数据」。

2.6 知识体系总览

下面这张图是我自己画的,把本章的知识结构梳理了一下。你可以把它当作一个导航图。

参数估计基础:知识体系 参数估计方法 离线最小二乘法 θ̂ = (ΦᵀΦ)⁻¹ ΦᵀY 递归最小二乘法 RLS 递推公式 梯度下降法 θ ← θ - μ∇J 极大似然估计 MLE 最大化似然函数 性能指标:无偏性 | 一致性 | 有效性 | 收敛速度 | 鲁棒性 选择方法时,根据系统需求权衡这些指标 图2-1 参数估计方法分类与性能评价体系

2.7 方法对比与选择建议

说了这么多,到底该用哪个?我根据自己的经验,给个简单的选择指南:

  • 离线数据充足,计算资源不限 → 离线最小二乘法。简单、可靠、一步到位。
  • 在线系统,参数缓慢变化 → RLS。收敛快,计算量适中。
  • 参数维度极高,矩阵求逆太慢 → 梯度下降法。虽然慢,但每一步都很轻量。
  • 噪声分布已知,且非高斯 → MLE。能充分利用噪声信息。
  • 不确定噪声特性 → 先用最小二乘法。它是最安全的起点。
🔑 核心要点: 没有万能的方法。我见过太多人死磕一种方法,结果系统表现一塌糊涂。我的建议是:先跑仿真,对比几种方法的表现,再选最合适的。

好了,这一章的内容就到这里。参数估计是自适应控制的「眼睛」——没有它,你就看不清系统在怎么变。下一章我们会把这些方法用到具体的自适应控制律设计中,到时候你会看到,参数估计和控制律设计是如何配合的。


公众号:蓝海资料掘金营,微信deep3321