【Matlab】LM迭代估计法

news2024/11/18 14:34:18

简介

在最近的传感器校准算法学习中,有一些非线性的代价函数求解使用最小二乘法很难求解,使用LM算法求解会简单许多,因此学习了一下LM算法的基础记录一下。

LM 优化迭代算法时一种非线性优化算法,可以看作是梯度下降与高斯牛顿法的结合,综合了两者的优点。

对于一个最小二乘的问题,如下:

其中 y(i) 为第 i 组数据的真实值或理论真实值,fi(θ) 为第 i 组数据的预测值,目的就是找到一组 θ,使得代价函数达到最小值。通常,需要指定一个初始 θ0,不断优化迭代,产生 θ1,θ2 ,最终收敛到最优值 θ。

在收敛的过程中,需要两个参数,收敛方向与收敛步长:

h 为收敛方向

α 为收敛步长

雅可比矩阵

在后续 LM 的迭代计算中,需要用到雅可比矩阵,雅可比矩阵的简易理解过程如下:

在 n 维空间中的向量,假设 x 与 y 的映射关系为 y:

以上的映射关系用 F 表示。

那么雅可比矩阵就可以写作:

雅可比矩阵的意义就在于,假设 p 是向量中的一个点,F 在点 p 处是可微的,那么雅可比矩阵 J(p) 就是这点的导数,定义一个 x,当 x 足够接近 p 时,就可以得到:

F(x) ≈ F(p) + J(p) * (x - p)

F(x) - F(p) ≈ J(p) * (x - p)

即:

Δy ≈ J(p) * Δx

转化为微分:

dy = J(p) dx

将上述的微分与雅可比矩阵展开:

雅可比矩阵与 LM 代价函数的关系

LM 代价函数,对 θ 求偏导,就是一个雅可比矩阵,雅可比矩阵的更新在 LM 算法中,非常关键。

LM算法的步骤

LM算法的迭代公式

LM算法的迭代可以理解为结合了梯度下降与高斯牛顿的优点,因此其迭代公式可以对比观察。

梯度下降

dot(J) 就是 J 的一阶倒数

高斯牛顿

高斯牛顿在牛顿迭代的基础上,使用了雅可比矩阵的平方,使得求解更快,但如果初始值不在最优解附近,则求解就可能出错:

f 表示代价函数中的残差,J 表示雅可比矩阵

LM算法

由于 J_T*J 在某些情况下是不可逆的,因此 LM 增加了一个系数 λ*I (I 为单位矩阵) ,以此来保证等式左边是一定可逆的,就可以求解所有的情况:

1)当 λ 设置的比较大时,就相当于是梯度下降,适合当前的估计参数距离最优解比较远的情况

2)当 λ 设置的比较小时,就相当于高斯牛顿,适合估计参数距离最优解比较近的情况

因此在 LM 算法中,需要根据情况来调整 λ 的值来得到最优解

步骤

通常遵循以下步骤:

1.采样n组数据,定义代价函数,如下所示:

fi 表示模型对第 i 个样本的预测值, y 表示真实值或者理论真实值。

2.初始化参数向量,需要初始化模型的估计参数 θ,可以随机初始化或根据经验设置初值

3.计算雅可比矩阵,即代价函数关于估计参数向量 θ 的雅可比矩阵:

4.计算初始代价函数值,将初始估计参数 θ 带入

5.设置 LM 算法的参数,包括初始阻尼因子 λ ,最大迭代次数,迭代精度,收敛步长等

6.迭代更新参数向量,雅可比矩阵(有一些简单的情况雅可比矩阵只与采样值有关,就可以只计算一次),这里将收敛补偿设置为1,即α = 1

之后更新新的估计参数:

使用新的估计参数带入代价函数 F,计算新的代价函数是否更小,如果更小则接受更新,否则,拒绝更新,并增大 λ:

λ = 10 * λ

如果新的参数更优,则将 λ 减小:

λ = 0.1 * λ

7.更改估计参数之后,再次使用 n 组采样数据,重复 6 步骤,如果代价函数值变化小于设定的迭代精度,或达到最大迭代次数,则停止迭代,返回跌代后的参数向量 θ

使用多项式拟合例子验证

假设需要拟合一个二次多项式 f = a * x^2 + b * x + c,假设真实的多项式参数 a = 2,b = -3,c = -1,之后添加随机噪声。

按照 LM 算法的步骤,定义初始的参数估计矩阵为:

theta = [1,1,1]

收敛步长 alpha 定义为1,不变

迭代次数为 1000 次,采样 100 组 x,y 数据。

之后按照这个简化步骤,就可以迭代计算出多项式的值:

1)更新雅可比矩阵

2)计算迭代步长 h

3)判断是否更新估计参数(根据新的代价值是否变得更小),如果要更新,则将迭代步长加到上一次的估计参数矩阵 theta 中,并减小 lambda ;反之,则拒绝更新,并加大 lambda

(lambda 越小,越适合接近最优解的时候,lambda越大,越适合距离最优解较远的时候)

更新雅可比矩阵

针对此例子,雅可比的通式为:

其中,n 表示估计参数矩阵的维度,m 表示采样次数,f 表示代价函数中的预测方程:

计算之后,此多项式的雅可比矩阵为:

只是恰好这个例子的雅可比矩阵偏导求解出来是不包含代预估变量的,可以只更新一次,正常是每次迭代都需要更新的。

最终的拟合效果如下:

拟合出的估计参数与实际值也是接近的

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

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

相关文章

【linux kernel】linux media子系统分析之media控制器设备

文章目录 一、抽象媒体设备模型二、媒体设备三、Entity四、Interfaces五、Pad六、Link七、Media图遍历八、使用计数和电源处理九、link设置十、Pipeline和Media流十一、链接验证十二、媒体控制器设备的分配器API 本文基于linux内核 4.19.4,抽象媒体设备模型框架的相…

day11_类中成员之方法

成员变量是用来存储对象的数据信息的,那么如何表示对象的行为功能呢?就要通过方法来实现 方法 概念: 方法也叫函数,是一个独立功能的定义,是一个类中最基本的功能单元。把一个功能封装为方法的目的是,可…

信息安全原理与技术期末复习(如学)

文章目录 一、前言(开卷打印)二、选择题三、简答题1、简述端口扫描技术原理(P136)2、分组密码工作方式(P61)3、木马攻击(P176)4、消息认证码(P84)5、非对称密…

华为OD机试真题B卷 JavaScript 实现【删除字符串中出现次数最少的字符】,附详细解题思路

一、题目描述 删除字符串中出现次数最少的字符,如果多个字符出现次数一样则都删除。 二、输入描述 一个字符串。 三、输出描述 删除字符串中出现次数最少的字符,如果多个字符出现次数一样则都删除,如果都被删除 则换为empty。 四、解题…

机器视觉初步5-1:图像平滑专题

在计算机视觉领域,图像平滑处理是一个重要的任务,用于降低噪声,提高图像质量。常见的图像平滑算法有均值滤波、中值滤波、高斯滤波等。本文将介绍这些算法的原理,并分别给出使用Python与Halcon实现的代码。(当前版本&a…

libface 人脸检测

于老师的项目地址GitHub - ShiqiYu/libfacedetection: An open source library for face detection in images. The face detection speed can reach 1000FPS. 关于如何使用,于老师写得很清楚: 测试代码 CMakeList.txt 和 三个face开头的cpp文件都是于老…

有趣的数学 数学建模入门一 从几个简单的示例入手

一、“变量”的概念 一个代数表达式(通常只有一个字母:x,y,z…,如果它取代了一个未知值(物理、经济、时间等),则称为“变量”。 变量的作用是占据一个值所在的位置,如果该…

设计模式之工厂方法模式笔记

设计模式之工厂方法模式笔记 说明Factory Method(工厂方法)目录UML抽象工厂示例类图咖啡抽象类美式咖啡类拿铁咖啡类 咖啡工厂接口美式咖啡工厂类拿铁咖啡工厂类 咖啡店类测试类 说明 记录下学习设计模式-工厂方法模式的写法。 Factory Method(工厂方法) 意图:定义一个用于创…

深度学习图像分类、目标检测、图像分割源码小项目

​demo仓库和视频演示: 银色子弹zg的个人空间-银色子弹zg个人主页-哔哩哔哩视频 卷积网路CNN分类的模型一般使用包括alexnet、DenseNet、DLA、GoogleNet、Mobilenet、ResNet、ResNeXt、ShuffleNet、VGG、EfficientNet和Swin transformer等10多种模型 目标检测包括…

Sourcetree 打开闪退怎么处理

问题描述:Sourcetree打开闪退,已管理员身份运行仍然闪退 解决方法; 在Sourcetree图标上右键,然后打开文件所在位置: 找到目录 xxxx\AppData\Local\Atlassian 删除箭头所指向文件即可。

2023年怎么移除微博粉丝 微博怎么批量移除粉丝方法

2023最新微博批量粉丝移除_手机微博粉丝怎么批量删除 使用微博粉丝移除工具:可以帮助用户快速批量移除粉丝。在微博管理工具中,用户可以根据自己的需要设置移除粉丝的数量,可以一键批量移除多个粉丝。此外,管理工具还提供了粉丝管…

Linux下使用Samba做域控

AI画妹子的工作先暂告一段落。毕竟戗行也是要有门槛的。 企业中使用Windows Server使用活动目录集中管理PC、服务器是很成熟的方案。突然想到,如果有一天出于某种原因不再使用微软方案了,AD该如何替代?问了一下chatGPT,它说&…

[Qt 教程之Widgets模块] —— QComboBox 组合框

Qt系列教程总目录 文章目录 一、创建QComboBox二、数据结构三、成员函数1. 添加选项2. 插入选项3. 删除选项4. 选项属性5. 当前选择的item6. 用户是否可编辑组合框7. 设置显示item的个数8. 组合框的item个数9. 添加重复的item10. 是否绘制边框11. 查找item12. 插入策略13. 大小…

NodeJS LocalDomainName⑩④

文章目录 ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘前言 L o c a l D o m a i n N a m e LocalDomainName LocalDomainName 本地域名 O p e r a t i o n P r o c e d u r e OperationProcedure OperationProced…

【MySQL】一文带你了解过滤数据

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指…

LAMP架构搭建

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、Apache服务1.apache概述2.apache的特点3.apache的软件版本4.编译安装优点5.安装步骤 二、LAMP简介与概述1.LAMP平台概述2.构建LAMP平台顺序3.各组件的主要作用 …

KafKa 3.x(一、入门)

前置:熟悉javase,熟悉linux,熟悉idea,熟悉hadoop 1. KafKa 1.1 KafKa定义 前端埋点记录用户(浏览,点赞,收藏,评论)到日志服务器,然后通过Flume&#xff08…

k8s Service服务详解

1. Service 的概念: k8s中Service定义了这样一种抽象:一个pod的逻辑分组,一种可以访问他们的策略—通常称为微服务。这一组pod能够被Service访问到,通常是通过Label Selector Service能够提供负载均衡的能力,但是在使…

第二章 逻辑代数基础--数电(期末复习笔记)

第二章 逻辑代数基础 2.1 概述 逻辑:事物间的因果关系。 逻辑运算:逻辑状态按照指定的某种因果关系进行推理的过程。 逻辑变量:用字母表示,取值只有0和1。此时,0和1不再表示数量的大小,只代表两种不同的状…

人工智能期末复习(简答)

第1章 人工智能概述 1.什么是人工智能? 人工智能(Artificial Intelligence, AI),又称机器智能(MI,Machine Intelligence), 主要研究用人工的方法和技术开发智能机器或智能系统,以模…