第1章:参数自适应调整基础
1.1 参数估计的基本概念
各位同学,咱们今天聊聊参数估计。说白了,就是通过系统的输入输出数据,把模型里那些未知的系数给揪出来。
我刚开始做自适应控制那会儿,总觉得参数估计是个黑盒子。后来踩过几次坑才明白——参数估计的本质,就是让模型输出尽量贴近真实系统的输出。
举个例子。你有个电机,想控制它的转速。你建了个模型:
y(k) = a·y(k-1) + b·u(k-1)
这里的 a 和 b 就是未知参数。你给电机加电压 u,测转速 y,然后想办法把 a 和 b 算出来。这就是参数估计。
核心要点:参数估计需要三个要素——模型结构、输入输出数据、估计算法。缺一不可。
我个人习惯把参数估计分成两类:
- 离线估计:数据全部采集完,一次性算参数。适合系统特性变化慢的场合。
- 在线估计:边采集数据边更新参数。自适应控制里用的就是这种。
嗯,这里要注意:在线估计对算法的实时性要求很高。你算得太慢,控制周期都过了,参数还没更新完,那就麻烦了。
1.2 最小二乘法原理
最小二乘法,名字听着挺唬人。其实核心思想就一句话:让误差的平方和最小。
为什么会用平方?我当年也问过这个问题。绝对值不行吗?行,但平方函数处处可导,数学上处理起来方便。说白了,就是图个省事。
咱们来看个具体例子。假设你有个系统:
y(k) = θ·φ(k) + e(k)
其中 θ 是待估参数,φ(k) 是已知的回归量,e(k) 是噪声。你采集了 N 组数据,想找到最优的 θ̂。
最小二乘法给出的答案是:
θ̂ = (ΦᵀΦ)⁻¹ ΦᵀY
这个公式你肯定见过。但我要提醒你——矩阵求逆是个坑。
避坑指南:我曾经在一个项目中,ΦᵀΦ 矩阵接近奇异,求逆结果直接炸了。后来加了正则化项才稳住。所以,数据量不够或者激励不充分时,别硬算最小二乘。
你想想看,如果 ΦᵀΦ 不可逆,说明你的数据没有提供足够的信息来唯一确定参数。这时候需要:
- 增加数据量
- 改变输入信号(比如加个伪随机序列)
- 或者改用带约束的估计算法
1.3 递推最小二乘法
离线最小二乘有个硬伤——每次有新数据,都得重新算一遍。这在自适应控制里根本行不通。
递推最小二乘法(RLS)就是来解决这个问题的。它的思路很简单:用旧参数加上修正项,得到新参数。
RLS 的核心公式长这样:
θ̂(k) = θ̂(k-1) + K(k)·[y(k) - φᵀ(k)·θ̂(k-1)]
K(k) = P(k-1)·φ(k) / [λ + φᵀ(k)·P(k-1)·φ(k)]
P(k) = [I - K(k)·φᵀ(k)]·P(k-1) / λ
看着有点复杂?咱们拆开看:
- θ̂(k):当前时刻的参数估计值
- K(k):增益矩阵,决定修正力度
- P(k):协方差矩阵,反映估计的不确定性
- λ:遗忘因子,控制历史数据的权重
个人经验:遗忘因子 λ 的取值很关键。λ=1 时,所有数据权重相同,适合时不变系统。λ<1 时,越老的数据权重越小,适合时变系统。我一般从 λ=0.98 开始调,效果不好再微调。
RLS 的好处是计算量小,每次迭代只需要 O(n²) 次运算(n 是参数个数)。而且收敛速度快,比梯度下降法快多了。
但 RLS 也有坑。我记得有一次,系统突然受到大扰动,RLS 的参数直接飞了。后来加了数据饱和限制才稳住。
注意:RLS 对数值稳定性敏感。如果 P 矩阵出现负定,算法就崩了。建议用 UD 分解或平方根滤波来增强稳定性。
知识体系总览
下面这张图,是我画的本章节知识结构。你看一眼,心里就有谱了。
本章小结
咱们这一章,把参数自适应调整的底子打好了。你记住三件事:
- 参数估计就是用数据反推模型参数
- 最小二乘法让误差平方和最小,但要注意矩阵求逆的坑
- 递推最小二乘法适合在线应用,遗忘因子是调参的关键
说实话,这些概念我当年学的时候也觉得抽象。但后来做项目,一个个坑踩过来,才真正理解它们的价值。你刚开始接触,别着急,慢慢来。
一句话总结:参数估计是自适应控制的「眼睛」,没有准确的参数,再好的控制器也是瞎指挥。