本文目录导读:

这是个很核心的问题。系统辨识需要的先验知识没有“固定数量”,而是取决于你想要达到的辨识质量、能够接受的实验成本,以及系统的复杂程度。 可以说,它是一个在“已知”和“未知”之间进行权衡的艺术。
我们可以把需要的先验知识分为几个层次,从“基本必需”到“精益求精”:
第一层次:绝对必需的最基础知识(没有这些,辨识无法启动)
-
辨识目的: 你要用模型干什么?
- 控制(需要精确的动态模型)?预测(关注长期趋势)?故障诊断(关注残差)?
- 目的决定了模型的类型(如:传递函数、状态空间、神经网络)、精度要求和验证标准。
-
输入/输出信号的工程知识:
- 可测性: 哪些信号可以作为输入(你能够操作和激励的)?哪些是输出(你能观测到的)?是否存在不可测的干扰?
- 采样周期: 需要根据系统的时间常数(温度系统可能几秒到几分钟,而电机系统可能几毫秒)初步选择一个合理的采样频率,这关系到能否捕捉到系统动态。
- 信号物理范围: 输入的有效范围(如阀门的0-100%开度)、输出的量程(如温度0-200°C),这决定了激励信号的幅值设置。
-
基本的系统拓扑知识:
- 开环还是闭环? 系统是自然开环稳定,还是需要在闭环下辨识(如飞行器、化学反应器)?这直接影响辨识算法的选择(闭环辨识需要处理相关性)。
- SISO(单输入单输出)还是MIMO(多输入多输出)? 这决定了模型结构的复杂度和算法的矩阵运算规模。
-
系统关键特征的高层次猜想:
- 线性还是非线性? 系统在工作点附近近似线性吗?(小信号放大电路是线性的,而饱和、死区、摩擦则是非线性的),这决定你选用线性模型(ARX, ARMAX, 状态空间)还是非线性模型(神经网络, 模糊逻辑, Volterra级数)。
- 时不变还是时变? 系统参数是否会随时间缓慢变化(如电池老化、机械磨损)?这影响你是否需要采用自适应或在线辨识方法。
- 确定性还是随机性? 输出噪声主要是由传感器测量误差(随机)还是由外部扰动(可建模为随机过程)造成?
第二层次:显著提升辨识质量和效率的实用知识(强烈建议具备)
-
定性的动态行为描述:
- 稳定还是不稳定? 倒立摆是不稳定的。
- 是否有积分环节? 水箱的水位(积分对象)、电机的速度(非积分对象)。
- 是否有纯延迟? 管道输送、化学反应,延迟时间大概是多少量级(几秒、几十分钟)?
- 主要时间常数: 系统响应的快慢(如“秒级系统”或“小时级系统”),这直接影响实验时长和采样频率的选择。
-
干扰和噪声特性的初步认识:
- 噪声的主要频率成分? 是高频扰动(如传感器尖峰)还是低频漂移(如温度波动)?这影响滤波器设计。
- 是过程噪声还是测量噪声? 它们的相对大小和分布(高斯、均匀)?
- 是否存在可测的扰动? 如果能测量到影响输出的其他变量(如环境温度),可以将其作为“已知扰动输入”纳入模型,提高精度。
-
部分结构知识(可选但非常有用):
- 模型阶数的粗略估计: 一个二阶机械系统(质量-弹簧-阻尼)或一个一阶热系统,这让你可以从低阶模型开始尝试,避免过拟合。
- 已知的物理约束: 温度不可能为负,阀门开度在0-1之间,这些可以作为辨识算法的约束条件。
第三层次:追求最优辨识的高级先验知识(锦上添花)
-
系统的物理学/化学/经济学模型(灰盒辨识):
- 如果你能写出部分方程(基于热力学、动力学、经济学原理),可以把它作为半参数模型(如已知结构但未知参数),这样只需要辨识少量参数,实验成本低,模型泛化能力强。
- 对电机,你已知其微分方程形式 (T\dot{\omega} + \omega = Ku),只需要辨识时间常数 (T) 和增益 (K)。
-
对激励信号的深入理解:
- 知道要设计持续激励的输入信号(如PRBS、M序列、扫频信号),以充分激发系统所有动态模式。
- 知道如何选择激励信号的幅值、频率、周期,以避免非线性区或过度激励。
-
对数据质量的认知:
能识别和剔除数据中的野点、丢包、漂移等异常,并知道如何处理数据。(滤波、去趋势、重采样)
先验知识可以少到什么程度?
-
极端情况(黑箱建模): 你甚至不清楚系统内部结构,只知道“我给它一个电压,它会动一下”,你只有输入输出数据,那么你需要的最低先验知识
- 采样时间(工程经验估计)。
- 一个输入信号(比如一个方波)。
- 选择最简单的模型结构(比如ARX模型,阶数为1-3阶试错)。
- 知道系统大致是线性的(在小范围工作点)。
- 代价: 你需要非常长的、高质量的实验数据(可能几天),模型可能过拟合,泛化能力差,对噪声敏感。
-
理想情况(灰盒辨识): 你对系统有深入的物理理解,比如知道它是一个二阶RC低通滤波器,那么你的先验知识非常丰富,你只需要:
- 设计一个短时、幅值合适的激励(因为参数少)。
- 用最小二乘法快速辨识出 (R) 和 (C)。
- 模型精度高,泛化能力强。
最终结论:
- 先验知识不是“有”或“无”,而是一个“质量”和“效率”问题。
- 对于一个新手入门,建议先掌握第一层次(绝对必需)的知识。 然后通过实验设计和模型验证(残差分析、交叉验证)来逐步“学习”第二、第三层次的知识。
- 最危险的情况是以为“不需要先验知识”,没有先验知识,你可能设计出无效的实验(比如采样频率太低,或激励信号太弱),得到无用的模型,甚至错误地认为系统是线性的而实际是非线性的。
一句话总结:先验知识越少,你需要的数据就越多,模型结构需要越灵活(比如用神经网络),验证工作也越复杂;先验知识越多,你就能越高效地获得精确、可靠的模型。