状态空间模型(SSM)

news2024/11/20 22:40:05

论文:A new approach to linear filtering and prediction problems http://160.78.24.2/Public/Kalman/Kalman1960.pdf

状态空间模型介绍

术语状态空间模型具有非常广泛的含义,它简单地表示任何具有潜在状态的循环过程的概念。 它已被用来指代不同学科中的许多不同概念,包括马尔可夫决策过程 (MDP)(强化学习(Hafner 等人,2020))、动态因果建模(DCM)(计算神经科学(Friston、Harrison 和 Penny 2003) ))、卡尔曼滤波器(控制(Kalman 1960))、隐马尔可夫模型(HMM)和线性动力系统(LDS)(机器学习)以及循环(有时是卷积)模型(深度学习)。
状态空间模型是一种描述动态系统行为的数学模型,它使用一组一阶微分方程(连续时间系统)或差分方程(离散时间系统)来表示系统的内部状态的演化,同时用另一组方程来描述系统状态和输出之间的关系。这些方程可以表示为矩阵和向量的形式,以处理多变量系统。
在状态空间表述中,系统由下面的两个方程组定义。SSM将一个1-D的输入向量 u ( t ) u(t) u(t)映射为一个N-D的潜在状态变量 x ( t ) x(t) x(t),然后再映射为一个1-D的输出向量 y ( t ) y(t) y(t)我们的目标是将这个SSM作为黑盒转化为深度模型,其中参数F、D、M、G通过梯度下降等方法学习,并且参数G可以省略,因为参数G的作用类似残差网络的跳跃链接。

  1. 状态方程
    x ′ ( t ) = F x ( t ) + D u ( t ) + ω ( t ) x'(t) = Fx(t) + Du(t) + \omega(t) x(t)=Fx(t)+Du(t)+ω(t)** 公式(1) **
    这个方程描述了系统内部状态 x ( t ) x(t) x(t)随时间的演化。这里:
  • x ( t ) x(t) x(t) 是系统状态变量,包含所有必要的变量来描述系统在任意时刻的状况,是一个 n n n维向量。
  • x ′ ( t ) x'(t) x(t) x ( t ) x(t) x(t) 关于时间的微分,表示系统状态的变化率。
  • F F F 是系统矩阵,描述了系统状态之间的关系,以及它们如何随时间自然演化(无控制输入时),是一个 n × n n \times n n×n矩阵。
  • u ( t ) u(t) u(t) 是控制输入向量,表示外部输入或控制信号的影响,是一个 m m m维向量,并且 m ≤ n m \le n mn
  • D D D 是输入矩阵,描述了控制输入如何影响系统状态,是一个 n × m n \times m n×m矩阵。
  • ω ( t ) \omega(t) ω(t)是过程噪声,它代表系统内部的不确定性,一般假设为高斯噪声。
  1. 观测方程
    y ( t ) = M x ( t ) + G u ( t ) + e ( t ) y(t) = Mx(t) + Gu(t) + e(t) y(t)=Mx(t)+Gu(t)+e(t)** 公式(2)**
    这个方程描述了系统的输出 y ( t ) y(t) y(t) 如何依赖于系统状态和控制输入。这里:
  • y ( t ) y(t) y(t)是输出向量或者观测向量,包含所有的测量或观测到的变量,是一个 p p p维向量,并且 p ≤ n p \le n pn矩阵。
  • M M M是输出矩阵,描述了系统状态如何影响输出,是一个 p ≤ n p \le n pn矩阵。
  • G G G是直达传递矩阵(在很多实际系统中,这个矩阵通常是零或者不显著),表示控制输入直接对输出的影响,是一个 n × m n \times m n×m矩阵。
  • e ( t ) e(t) e(t)是测量噪声,它代表了测量过程中的不确定性或误差,一般假设为高斯噪声。

用下图可以说明这个过程。
image.png

状态空间模型离散化

将状态空间模型从连续过程转换为离散过程是控制理论和信号处理中的一个常见任务,因为数字计算机和微控制器通常只能处理离散时间信号。为了在数字设备上实现卡尔曼滤波器,我们需要将连续时间下的状态空间模型离散化。
连续时间状态空间模型通常表示为微分方程的形式:
x ˙ ( t ) = A ( t ) x ( t ) + B ( t ) u ( t ) \dot{\mathbf{x}}(t) = \mathbf{A}(t) \mathbf{x}(t) + \mathbf{B}(t) \mathbf{u}(t) x˙(t)=A(t)x(t)+B(t)u(t)
y ( t ) = C ( t ) x ( t ) + D ( t ) u ( t ) \mathbf{y}(t) = \mathbf{C}(t) \mathbf{x}(t) + \mathbf{D}(t) \mathbf{u}(t) y(t)=C(t)x(t)+D(t)u(t)
这里, x ( t ) \mathbf{x}(t) x(t) 是状态向量, u ( t ) \mathbf{u}(t) u(t) 是输入向量, y ( t ) \mathbf{y}(t) y(t)是输出向量, A ( t ) \mathbf{A}(t) A(t), B ( t ) \mathbf{B}(t) B(t), C ( t ) \mathbf{C}(t) C(t), 和 D ( t ) \mathbf{D}(t) D(t) 分别是系统矩阵。
离散化过程涉及以下步骤:

  1. 采样时间的选择
  • 确定一个合适的采样时间间隔 Δ t \Delta t Δt,这个时间间隔要基于系统动态特性以及所需的控制精度。
  1. 离散化系统矩阵
  • 使用适当的数值方法将连续系统矩阵 A ( t ) \mathbf{A}(t) A(t) B ( t ) \mathbf{B}(t) B(t) 转换为离散矩阵 A d \mathbf{A}_d Ad_ 和 _ B d \mathbf{B}_d Bd。最常见的方法是指数映射(也称为矩阵指数):
    A d = e A Δ t \mathbf{A}_d = e^{\mathbf{A}\Delta t} Ad=eAΔt
    B d = ( ∫ 0 Δ t e A τ d τ ) B \mathbf{B}_d = (\int{0}^{\Delta t} e^{\mathbf{A}\tau} d\tau) \mathbf{B} Bd=(0ΔteAτdτ)B
  • 这些公式适用于时间不变系统。对于时间变化系统,需要更复杂的积分或数值分析方法。
  1. 离散化状态和输出方程
  • 确定的离散时间点 t k = k Δ t t_k = k\Delta t tk=kΔt 上的状态和输出方程可以表示为:
    x [ k + 1 ] = A d x [ k ] + B d u [ k ] \mathbf{x}[k+1] = \mathbf{A}_d \mathbf{x}[k] + \mathbf{B}_d \mathbf{u}[k] x[k+1]=Adx[k]+Bdu[k]
    y [ k ] = C d x [ k ] + D d u [ k ] \mathbf{y}[k] = \mathbf{C}_d \mathbf{x}[k] + \mathbf{D}_d \mathbf{u}[k] y[k]=Cdx[k]+Ddu[k]
  • 其中, C d \mathbf{C}_d Cd_和 _ D d \mathbf{D}_d Dd 通常可以直接等同于连续时间模型中的 C \mathbf{C} C D \mathbf{D} D,除非输出方程也涉及时间的导数。

一旦连续系统被转换为离散系统,就可以使用离散时间的卡尔曼滤波器来估计系统的状态。注意,离散化过程必须保留系统的关键动态特性,而且采样时间必须遵守奈奎斯特采样定理,以避免混叠现象。
用下图可以说明这个过程。
image.png

卡尔曼滤波器

我们可以使用卡尔曼滤波器解决状态空间方程。
卡尔曼滤波器用于解决状态空间模型中的估计问题时,分为两个阶段:预测阶段和更新阶段。状态空间模型通常由两个方程定义:状态方程和观测方程。
状态方程描述了系统状态的时间演化,通常形式为:
x k = F k x k − 1 + B k u k + w k \mathbf{x}_k = \mathbf{F}_k \mathbf{x}_{k-1} + \mathbf{B}_k \mathbf{u}_k + \mathbf{w}_k xk=Fkxk1+Bkuk+wk
其中,

  • x k \mathbf{x}_k xk 是时间点 (k) 的状态向量。
  • F k \mathbf{F}_k Fk是状态转移矩阵,描述了状态如何从时间 k − 1 k-1 k1 k k k 转移。
  • B k \mathbf{B}_k Bk_是控制输入矩阵,将控制向量 _ u k \mathbf{u}_k uk 的影响加入状态转移。
  • w k \mathbf{w}_k wk 是系统过程噪声,通常假设为高斯白噪声。

观测方程描述了如何从状态向量得到观测量,形式为:
z k = H k x k + v k \mathbf{z}_k = \mathbf{H}_k \mathbf{x}_k + \mathbf{v}_k zk=Hkxk+vk
其中,

  • z k \mathbf{z}_k zk 是时间点 (k) 的观测向量。
  • H k \mathbf{H}_k Hk 是观测矩阵,将状态空间映射到观测空间。
  • v k \mathbf{v}_k vk是观测噪声,通常也假设为高斯白噪声。

现在我们来看卡尔曼滤波器如何工作:

  1. 初始化
  • 估计初始状态 x ^ 0 \hat{\mathbf{x}}_0 x^0_和初始误差协方差矩阵 _ P 0 \mathbf{P}_0 P0
  1. 预测阶段(Predict):
  • 用状态方程预测下一个状态 x ^ k − \hat{\mathbf{x}}_k^- x^k
    x ^ k − = F k − 1 x ^ k − 1 + B k − 1 u k − 1 \hat{\mathbf{x}}_k^- = \mathbf{F}_{k-1} \hat{\mathbf{x}}_{k-1} + \mathbf{B}_{k-1} \mathbf{u}_{k-1} x^k=Fk1x^k1+Bk1uk1
  • 估计预测状态的误差协方差 P k − \mathbf{P}_k^- Pk
    P k − = F k − 1 P k − 1 F k − 1 T + Q k − 1 \mathbf{P}_k^- = \mathbf{F}_{k-1} \mathbf{P}_{k-1} \mathbf{F}_{k-1}^T + \mathbf{Q}_{k-1} Pk=Fk1Pk1Fk1T+Qk1
  • 其中, Q k − 1 \mathbf{Q}_{k-1} Qk1 是过程噪声协方差矩阵,表示模型的不确定性。
  1. 更新阶段(Update):
  • 计算卡尔曼增益 K k \mathbf{K}_k Kk
    K k = P k − H k T ( H k P k − H k T + R k ) − 1 \mathbf{K}_k = \mathbf{P}_k^- \mathbf{H}_k^T (\mathbf{H}_k \mathbf{P}_k^- \mathbf{H}_k^T + \mathbf{R}_k)^{-1} Kk=PkHkT(HkPkHkT+Rk)1
  • 其中, R k \mathbf{R}_k Rk是观测噪声协方差矩阵。
  • 用观测值更新预测的状态:
    x ^ k = x ^ k − + K k ( z k − H k x ^ k − ) \hat{\mathbf{x}}_k = \hat{\mathbf{x}}_k^- + \mathbf{K}_k (\mathbf{z}_k - \mathbf{H}_k \hat{\mathbf{x}}_k^-) x^k=x^k+Kk(zkHkx^k)
  • 更新误差协方差矩阵:
    P k = ( I − K k H k ) P k − \mathbf{P}_k = (I - \mathbf{K}_k \mathbf{H}_k) \mathbf{P}_k^- Pk=(IKkHk)Pk这个过程会不断迭代,随着新的观测数据的到来,卡尔曼滤波器会继续预测和更新系统的状态。卡尔曼滤波器的优势在于它能够在存在噪声的情况下,提供实时的最优估计。此外,卡尔曼滤波器是最小均方误差(MMSE)估计的一种实现,能够确保估计误差的协方差最小化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Eslint在Vscode中使用技巧的相关技巧

ps :该文章会详细结论构建一个脚手架遇到的问题,会持续更新,请定时查看 Eslint相关​ 在vscode中使用eslint插件 在vscode中用户配置没有开启eslint.enable 在vscode中工作区配置开启eslint.enable settings.json中没有做eslint相关配置 在编写的vue…

MSSQL渗透测试

目录 mssql数据库连接提权至服务器权限 拿到目标的IP地址,我们先对IP地址进行信息收集,收集信息资产,同时使用nmap对IP地址进行扫描 nmap -sC -sV IP从扫描的结果中,我们能知道目标服务器是windows操作系统,使用的是m…

nginx 模块 高级配置

目录 一、高级配置 1.1. 网页的状态页 1.2.Nginx 第三方模块 ehco 模块 打印 1.3.变量 1.3.1 内置变量 1.3.2自定义变量 1.4.Nginx压缩功能 1.5.https 功能 1.6.自定义图标 一、高级配置 1.1. 网页的状态页 基于nginx 模块 ngx_http_stub_status_module 实现&…

协议-http协议-基础概念01-发展历程-http组成-http是什么-相关的应用-相关的协议

发展历程-http组成-http是什么-相关的应用-相关的协议 参考来源: 极客时间-透视HTTP协议(作者:罗剑锋); 01-HTTP的发展历程 1989 年,任职于欧洲核子研究中心(CERN)的蒂姆伯纳斯 - 李(Tim Ber…

前端架构: 脚手架命令行交互核心实现之inquirer和readline的应用教程

命令行交互核心实现 核心目标:实现命令行行交互,如List命令行的交互呢比命令行的渲难度要更大,因为它涉及的技术点会会更多它涉及以下技术点 键盘输入的一个监听 (这里通过 readline来实现)计算命令行窗口的尺寸清屏光标的移动输出流的静默 …

Unity的相机跟随和第三人称视角

Unity相机跟随和第三人称视角 介绍镜头视角跟随人物方向进行旋转的镜头视角固定球和人的镜头视角 思路跟随人物方向进行旋转的镜头视角固定球和人的镜头视角 镜头旋转代码人物移动的参考代码注意 介绍 最近足球项目的镜头在做改动,观察了一下实况足球的视角&#x…

3-1openflow协议原理以及应用(packet包广播风暴)实践

在Mininet中,其自带的控制器是采用是OpenFlow 1.0版本。因此如果在开发中使用mininet内置的控制器(使用端口6653),即使拓扑构建和ovs自定义时声明使用openflow13,但是由于采用的控制器版本受限,ovs与控制器…

RV32/64 特权架构 - 特权模式与指令

RV32/64 特权架构 - 特权模式与指令 1 特权模式2 特权指令2.1 mret(从机器模式返回到先前的模式)2.2 sret(从监管模式返回到先前的模式)2.3 wfi(等待中断)2.4 sfence.vma(内存屏障) …

深度学习 精选笔记(5)多层感知机

学习参考: 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考&#x…

在Ubuntu22.04 LTS上搭建Kubernetes集群

文章目录 准备工作系统准备软件包准备主机和IP地址准备 安装步骤安装前准备关闭防火墙设置服务器时区关闭 swap 分区关闭SELinux配置hosts配置文件转发 IPv4 并让 iptables 看到桥接流量 安装容器运行时安装Kubernetes配置并安装apt包初始化集群 安装calico网络插件部署应用 本…

iSH使用与优化全网整合教程【持续更新】【精华】

【最后一次更新:2023.4.​​​​​22】 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任~ iSH介绍与换源【已安装并已完成…

香港紧缺13个专业人才有哪些?香港优才计划人才清单解读!

香港紧缺13个专业人才有哪些?香港优才计划人才清单解读! 香港优才计划是香港的一项人才引进政策,目的是吸纳优秀人才来港发展定居,提高香港的国际竞争力。因此,香港优才跟香港紧缺行业息息相关。 如果是从事香港紧缺行…

Docker 常用操作命令备忘

Docker 一旦设置好了环境,日常就只要使用简单命令就可以运行和停止。 于是,我每次用的时候,都想不起来一些关键性的命令到底怎么用,特此记录。 一、镜像管理 从公有仓库拉取镜像 (对于使用苹果电脑 M1/M2/M3 芯片的 …

Rust调用同级目录中的rs文件和调用下级目录中的rs文件

一、Rust调用同级目录中的rs文件 Rust新建工程demo02,src文件夹下面新建test.rs文件,这样main.rs文件与它属于同级目录中。 关键点:导入test文件和test文件中的Ellipse模块 mod test;//导入test模块(文件) use test…

Java学习--学生管理系统(残破版)

代码 Main.java import java.util.ArrayList; import java.util.Scanner;public class Main {public static void main(String[] args) {ArrayList<Student> list new ArrayList<>();loop:while (true) {System.out.println("-----欢迎来到阿宝院校学生管理系…

一拎即走的轻薄云台投影,极米投影仪Z7X让生活幸福加倍

随着家用智能投影性能的不断升级&#xff0c;拥有便携、易用、护眼以及大屏等优势的智能投影仪已经逐步取代传统电视机&#xff0c;成为越来越多年轻人在租房、装修新家购置新电器时的第一选择。市面上的投影仪产品多如牛毛&#xff0c;对于刚接触投影仪的新手来说&#xff0c;…

iMazing2024汉化免费版苹果设备管理软件功能详解

一、软件简介 iMazing&#xff0c;被誉为Mac和PC上最佳的iOS设备管理软件&#xff0c;以其全面而细致的功能&#xff0c;赢得了全球苹果用户的喜爱。无论是备份恢复、文件传输还是设备管理&#xff0c;iMazing都能提供高效、安全、便捷的服务体验。 iMazing3Mac-最新绿色安装包…

全面升级!Apache HugeGraph 1.2.0版本发布

图数据库以独特的数据管理和分析能力&#xff0c;在企业数智化转型的过程中正在成为数据治理的核心&#xff0c;根据IDC调研显示&#xff0c;95%的企业认为图数据库是重要的数据管理工具&#xff0c;超过65%的厂商认为在业务上图数据库优于其他选择&#xff0c;尤其是在金融风控…

2024 值得推荐的免费开源 WAF

WAF 是 Web Application Firewall 的缩写&#xff0c;也被称为 Web 应用防火墙。区别于传统防火墙&#xff0c;WAF 工作在应用层&#xff0c;对基于 HTTP/HTTPS 协议的 Web 系统有着更好的防护效果&#xff0c;使其免于受到黑客的攻击。 开源 WAF 和商用 WAF&#xff08;奇安信…

气体反应瓶适用光伏光电半导体坚固耐用PFA缓冲瓶

PFA冲击瓶&#xff0c;别名特氟龙缓冲瓶、可溶性聚四氟乙烯气体反应瓶。用于气体、固体或液体间的反应实验&#xff0c;广泛应用于光电、新材料、新能源、半导体、地矿、冶金、核工业等行业。 PFA冲击瓶相对于其他材质的反应瓶&#xff0c;不易碎&#xff0c;使用更加安全&…