非线性最小二乘问题的数值方法 —— 从牛顿迭代法到高斯-牛顿法 (II)

Title: 非线性最小二乘问题的数值方法 —— 从牛顿迭代法到高斯-牛顿法 (II)

姊妹博文

非线性最小二乘问题的数值方法 —— 从牛顿迭代法到高斯-牛顿法 (I)

非线性最小二乘问题的数值方法 —— 从牛顿迭代法到高斯-牛顿法 (II) ⟵ \longleftarrow 本篇

非线性最小二乘问题的数值方法 —— 从牛顿迭代法到高斯-牛顿法 (III)

非线性最小二乘问题的数值方法 —— 从牛顿迭代法到高斯-牛顿法 (IV)


目录

I.引言
II.牛顿迭代法解非线性方程
    1.一元非线性方程形式的牛顿迭代法
    2.高维非线性方程组形式的牛顿迭代法
    3.牛顿迭代法的雅可比矩阵
III.牛顿迭代法解非线性最小二乘问题
    1.从方程问题到最小二乘问题的演化
    2.最小二乘问题 Jacobian 矩阵的推导
    3.最小二乘问题 Jacobian 矩阵的性质
        A.维度
        B.整体 Hessian 矩阵
        C.局部 Hessian 矩阵
        D.Jacobian 矩阵/Hessian 矩阵
        E.Hessian 矩阵的对称性
IV.高斯-牛顿法解非线性最小二乘问题
    1.高斯-牛顿法的获得
    2.高斯-牛顿法的优势
    3.高斯-牛顿法的解读 —— 优化观点
V.最小二乘法与高斯的贡献
VI.总结
参考文献


[点击回到上一章节]

II. 牛顿迭代法解非线性方程

1. 一元非线性方程形式的牛顿迭代法

第一次学牛顿迭代法是在大学的 “数值计算方法” 课上, 用来求非线性函数的根/零点, 也就是对应的非线性方程的解[1].

该方法的原理如 Fig. 1 所示. 牛顿迭代法的最终目的是求函数 y = f ( x ) y=f(x) y=f(x) 的零点 (假设零点存在的情况下), 即满足 f ( x ∗ ) = 0 f(x^{\ast})=0 f(x)=0 x ∗ x^{\ast} x.

初始:

因为不知道 x ∗ x^{\ast} x 的确切值, 先猜测一个初始值 x [ 0 ] x_{[0]} x[0], 显然 ∣ f ( x [ 0 ] ) ∣ > ε \left|f(x_{[0]})\right|>\varepsilon f(x[0]) >ε (其中 ε \varepsilon ε 为一个判断函数值接近于 0 的门限值).

迭代1:

作函数 f ( x ) f(x) f(x) x [ 0 ] x_{[0]} x[0] 处的切线, 切线的斜率为 f ′ ( x [ 0 ] ) f^{'}(x_{[0]}) f(x[0]), 则切线方程可以写成
y − f ( x [ 0 ] ) x − x [ 0 ] = f ′ ( x [ 0 ] ) (II-1-1) \frac{y-f(x_{[0]})}{x-x_{[0]}} = f^{'}(x_{[0]}) \tag{II-1-1} xx[0]yf(x[0])=f(x[0])(II-1-1)
y = 0 y=0 y=0 时, 该切线与 x 轴相交于 x [ 1 ] x_{[1]} x[1],
x [ 1 ] = x [ 0 ] − f ( x [ 0 ] ) f ′ ( x [ 0 ] ) (II-1-2) x_{[1]} = x_{[0]} - \frac{f(x_{[0]})}{f^{'}(x_{[0]})} \tag{II-1-2} x[1]=x[0]f(x[0])f(x[0])(II-1-2)
每获得一个 x 轴上的交点, 都判断该交点是否足够接近零点.

如果如下判别式成立, 则 x [ 1 ] x_{[1]} x[1]近似看做是零点值, 完成工作.
∣ f ( x [ 1 ] ) ∣ < ε (II-1-3) \left| f(x_{[1]}) \right |< \varepsilon \tag{II-1-3} f(x[1]) <ε(II-1-3)
如判别式不成立则继续迭代计算.

迭代2:

再以新得到的 x [ 1 ] x_{[1]} x[1] 作为初始点, 作函数 f ( x ) f(x) f(x) x [ 1 ] x_{[1]} x[1] 处的切线, 并求该切线与 x 轴的交点 x [ 2 ] x_{[2]} x[2]
x [ 2 ] = x [ 1 ] − f ( x [ 1 ] ) f ′ ( x [ 1 ] ) (II-1-4) x_{[2]} = x_{[1]} - \frac{f(x_{[1]})}{f^{'}(x_{[1]})} \tag{II-1-4} x[2]=x[1]f(x[1])f(x[1])(II-1-4)
同样需要验证判别式 (类似式 (II-1-3)), 以确定是否获得目标值.

迭代3:

如此循环迭代,
x [ n ] = x [ n − 1 ] − f ( x [ n − 1 ] ) f ( x [ n − 1 ] ′ ) (II-1-5) x_{[n]} = x_{[n-1]} - \frac{f(x_{[n-1]})}{f(x^{'}_{[n-1]})} \tag{II-1-5} x[n]=x[n1]f(x[n1])f(x[n1])(II-1-5)
得到趋于 x ∗ x^{\ast} x 的序列, x [ 0 ] → x [ 1 ] → x [ 2 ] → ⋯ → x ∗ x_{[0]} \rightarrow x_{[1]} \rightarrow x_{[2]} \rightarrow \cdots \rightarrow x^{\ast} x[0]x[1]x[2]x.

结束:

只要中间迭代步满足
∣ f ( x [ n ] ) ∣ < ε (II-1-6) \left| f(x_{[n]}) \right| < \varepsilon \tag{II-1-6} f(x[n]) <ε(II-1-6)
就将 x [ n ] x_{[n]} x[n] 作为 x ∗ x^{\ast} x 的近似值, 并结束求解过程.

newton's method
Fig. 1 牛顿迭代法求非线性函数的根

2. 高维非线性方程组形式的牛顿迭代法

函数切线方程式 (II-1-1) 可以写成等价形式
f ( x ) ≈ f ( x [ i ] ) + f ′ ( x [ i ] ) ( x − x [ i ] ) (II-2-1) f(x) \approx f(x_{[i]})+ f^{'}(x_{[i]}) ({x-x_{[i]}}) \tag{II-2-1} f(x)f(x[i])+f(x[i])(xx[i])(II-2-1)
这是一元函数在 x [ i ] x_{[i]} x[i] 处的一阶泰勒近似 (A First-Order Taylor Approximation).

一元方程推广到非线性方程组为
f ( x ) = 0 (II-2-2) \mathbf{f}(\mathbf{x}) = \mathbf{0} \tag{II-2-2} f(x)=0(II-2-2)
其中 f = [ f 1 ( x 1 , x 2 , ⋯ , x n ) f 2 ( x 1 , x 2 , ⋯ , x n ) ⋮ f m ( x 1 , x 2 , ⋯ , x n ) ] \mathbf{f}=\begin{bmatrix}f_1(x_1,x_2,\cdots,x_n)\\ f_2(x_1,x_2,\cdots,x_n) \\ \vdots \\ f_m(x_1,x_2,\cdots,x_n)\end{bmatrix} f= f1(x1,x2,,xn)f2(x1,x2,,xn)fm(x1,x2,,xn) , x = [ x 1 x 2 ⋮ x n ] \mathbf{x} = \begin{bmatrix}x_1 \\ x_2\\ \vdots \\x_n \end{bmatrix} x= x1x2xn .

相应地, 推广到高维的一阶泰勒近似为
f ( x ) ≈ f ( x [ i ] ) + ∂ f ( x ) ∂ x ∣ x [ i ] ( x − x [ i ] ) (II-2-3) \mathbf{f}(\mathbf{x}) \approx \mathbf{f}(\mathbf{x}_{[i]})+ \left.\frac{\partial \mathbf{f}(\mathbf{x})}{\partial \mathbf{x}}\right|_{\mathbf{x}_{[i]}} (\mathbf{x} - \mathbf{x}_{[i]}) \tag{II-2-3} f(x)f(x[i])+xf(x) x[i](xx[i])(II-2-3)
其中 x [ i ] \mathbf{x}_{[i]} x[i] x \mathbf{x} x 的第 i 步迭代值, 写成分量形式为 x [ i ] = [ x 1 i , x 2 i , ⋯ , x n i ] T \mathbf{x}_{[i]} = \begin{bmatrix} x_1^i, x_2^i, \cdots, x_n^i\end{bmatrix}^{\rm\small T} x[i]=[x1i,x2i,,xni]T.

f ( x ) = 0 \mathbf{f}(\mathbf{x}) = \mathbf{0} f(x)=0 时, 得到迭代值
x [ i + 1 ] = x [ i ] − ( ∂ f ( x ) ∂ x ∣ x [ i ] ) + f ( x [ i ] ) (II-2-4) \mathbf{x}_{[i+1]} = \mathbf{x}_{[i]} - \left(\left.\frac{\partial \mathbf{f}(\mathbf{x})}{\partial \mathbf{x}}\right|_{\mathbf{x}_{[i]}} \right)^{+}\,\mathbf{f}(\mathbf{x}_{[i]}) \tag{II-2-4} x[i+1]=x[i](xf(x) x[i])+f(x[i])(II-2-4)
其中 ( ⋅ ) + (\cdot)^{+} ()+ 为矩阵伪逆 (The Matrix PseudoInverse).

以上即为牛顿迭代法的高维推广.

需要说明, 不管是一维情况还是高维情况下的牛顿迭代法, 都会根据实际情况而有各种变形实现以及分类讨论.

我们此处只是给出了原理性示意, 仅适用于最理想情况.


3. 牛顿迭代法的雅可比矩阵

定义 f ( x ) \mathbf{f}(\mathbf{x}) f(x) x [ i ] \mathbf{x}_{[i]} x[i] 处的雅可比矩阵 (The Jacobian Matrix)
J ( x [ i ] ) ≜ ∂ f ( x ) ∂ x ∣ x [ i ] = [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ⋯ ∂ f 1 ∂ x n ∂ f 2 ∂ x 1 ∂ f 2 ∂ x 2 ⋯ ∂ f 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ f m ∂ x 1 ∂ f m ∂ x 2 ⋯ ∂ f m ∂ x n ] x = x [ i ] (II-3-1) \mathbf{J}(\mathbf{x}_{[i]}) \triangleq \left. \frac{\partial \mathbf{f}(\mathbf{x})}{\partial \mathbf{x}}\right|_{\mathbf{x}_{[i]}} = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} &\frac{\partial f_1}{\partial x_2} &\cdots & \frac{\partial f_1}{\partial x_n}\\ \frac{\partial f_2}{\partial x_1} &\frac{\partial f_2}{\partial x_2} &\cdots & \frac{\partial f_2}{\partial x_n}\\ \vdots &\vdots &\ddots &\vdots \\ \frac{\partial f_m}{\partial x_1} &\frac{\partial f_m}{\partial x_2} &\cdots & \frac{\partial f_m}{\partial x_n}\\ \end{bmatrix}_{\mathbf{x}=\mathbf{x}_{[i]}} \tag{II-3-1} J(x[i])xf(x) x[i]= x1f1x1f2x1fmx2f1x2f2x2fmxnf1xnf2xnfm x=x[i](II-3-1)
(关于向量求导可参见机器人中常用矩阵等式-I (汇总))

则式 (II-2-4) 可以写为
x [ i + 1 ] = x [ i ] − J ( x [ i ] ) + f ( x [ i ] ) (II-3-2) \mathbf{x}_{[i+1]} = \mathbf{x}_{[i]} - \mathbf{J}(\mathbf{x}_{[i]})^{+}\,\mathbf{f}(\mathbf{x}_{[i]}) \tag{II-3-2} x[i+1]=x[i]J(x[i])+f(x[i])(II-3-2)
我们知道矩阵伪逆存在着左逆和右逆 (参考四足机器人中不同优先级任务的执行——Null-Space Projection方法), 考虑到本博客围绕着最优化问题, 数据维度 m m m > > > 参数维度 n n n, 所以此处的伪逆为左逆, 即

J + = ( J T J ) − 1 J T (II-3-3) \mathbf{J}^{+} = \left( \mathbf{J}^{\small\rm T} \mathbf{J} \right)^{\rm\small {-1}} \mathbf{J}^{\small\rm T} \tag{II-3-3} J+=(JTJ)1JT(II-3-3)
故式 (II-3-2) 可进一步写为
x [ i + 1 ] = x [ i ] − [ J ( x [ i ] ) T J ( x [ i ] ) ] − 1 J ( x [ i ] ) T f ( x [ i ] ) (II-3-4) \mathbf{x}_{[i+1]} = \mathbf{x}_{[i]} - \left[ \mathbf{J}(\mathbf{x}_{[i]})^{\small\rm T} \mathbf{J}(\mathbf{x}_{[i]}) \right]^{\rm\small {-1}} \mathbf{J}(\mathbf{x}_{[i]})^{\small\rm T} \mathbf{f}(\mathbf{x}_{[i]}) \tag{II-3-4} x[i+1]=x[i][J(x[i])TJ(x[i])]1J(x[i])Tf(x[i])(II-3-4)


[点击进入下一章节]

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

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

相关文章

uniapp Vue3 面包屑导航 带动态样式

上干货 <template><view class"bei"><view class"container"><view class"indicator"></view><!-- 遍历路由列表 --><view v-for"(item, index) in routes" :key"index" :class&quo…

听GPT 讲Rust源代码--src/tools(28)

File: rust/src/tools/clippy/clippy_lints/src/operators/identity_op.rs 文件路径 rust/src/tools/clippy/clippy_lints/src/operators/identity_op.rs 中的作用是定义了 IdentityOp 类型的 Clippy lint 规则&#xff0c;用于检查代码中是否存在不必要的恒等操作符&#xff0…

洛谷:线性表

今天开始刷洛谷&#xff0c;之前刷leetcode都是核心代码模式&#xff0c;现在突然让我用ACM模式&#xff0c;刚开始还是很不习惯的&#xff0c;但做了几道题好点了&#xff0c;只能说洛谷题的难度是比leetcode大的。 还有就是&#xff0c;STL牛逼&#xff01; 1.询问学号(vect…

具有权威性的工信部证书怎么考

工信部证书的考试流程如下&#xff1a; 选择正规报考机构&#xff1a;选择一家权威的培训机构或考试中心&#xff0c;确保其具有相应的资质和经验。 提交个人报考资料&#xff1a;根据考试机构的要求&#xff0c;提交相关的个人报考资料&#xff0c;如身份证、学历证明、工作…

【kubernetes】集群网络(一):基础篇

Flannel 1 路由表 & arp & fdb 1.1 路由表 任何网络设备都需要路由表&#xff0c;路由表用来决定&#xff0c;当收到数据包时&#xff0c;该向哪里进行转发。路由表项通常会包含以下几个字段&#xff1a; Destination&#xff1a;目的地Gateway&#xff1a;网关Mas…

【DDD领域驱动篇】如何理解领域驱动设计?

如何理解领域驱动设计? ✔️典型解析✔️扩展知识仓库✔️DDD带来的好处✔️DDD 的不足 ✔️典型解析 领域动设计(Domain-Driven Design&#xff0c;DDD)是一种软件开发方法论&#xff0c;将业务领域作为软件设计的核心&#xff0c;以便更好地满足业务需求。 DDD认为&#xff…

数据结构学习 Leetcode322 零钱兑换

关键词&#xff1a;动态规划 完全背包 记忆化搜索 一个套路&#xff1a; 01背包&#xff1a;空间优化之后dp【target1】&#xff0c;遍历的时候要逆序遍历完全背包&#xff1a;空间优化之后dp【target1】&#xff0c;遍历的时候要正序遍历 题目&#xff1a; 方法一&#xff…

【Linux】Linux服务器ssh密钥登录

ssh密码登录 ssh root地址 #需要输入密码ssh密钥登录 Linux之间密钥登录 生成公私钥 #生成公钥私钥 ssh-keygen #默认目录&#xff0c;默认密码空ssh-copy-id #拷贝ID到目标服务器 ssh-copy-id -i id_rsa.pub root192.168.8.22 ssh-copy-id -i id_rsa.pub root192.168.8.33…

把这些软件测试经典面试题!全背下来,拿offer就像喝水一样!

1、什么是兼容性测试&#xff1f;兼容性测试侧重哪些方面&#xff1f; 兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行&#xff0c;即是通常说的软件的可移植性。兼容的类型&#xff0c;如果细分的话&#xff0c;有平台的兼容&#xff0c;网络兼容&am…

C语言实验1:C程序的运行环境和运行C程序的方法

一、算法原理 这是学C语言的入门&#xff0c;并不需要很高深的知识&#xff0c;一个hello world 或者一个简单的加法即可 二、实验要求 了解所用的计算机系统的基本操作方法&#xff0c;学会独立使用该系统。 了解在该系统上如何编辑、编译、连接和运行一个C程序。 通过运…

无法连接虚拟机设备 ide1:0,因为主机上没有相应的设备。您要每次在开启此虚拟机时都尝试连接此虚拟设备吗?

Vmware报错&#xff1a; 报错原因&#xff1a; ide1:0一般是虚拟机的光驱&#xff0c;配置选项是“使用物理驱动器”&#xff0c;而宿主机可能没有安装光驱&#xff0c;故无法从驱动器上寻找 .ISO 系统文件。 解决方法: 右键点击对应的虚拟机&#xff0c;再点击“设置”按钮。…

案例195:基于微信小程序的购物商城系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

Vue3-27-路由-路径参数的简单使用

什么是路径参数 在路由配置中&#xff0c;可以将【参数】放在【路由路径】中&#xff0c; 从而实现&#xff0c;同一个 路由&#xff0c;同一个组件&#xff0c;因路径参数不同&#xff0c;可以渲染出不同的内容。特点 &#xff1a; 1、当携带不同路径参数的路由相互跳转时&am…

【论文阅读】Realtime multi-person 2d pose estimation using part affinity fields

OpenPose&#xff1a;使用PAF的实时多人2D姿势估计。 code&#xff1a;GitHub - ZheC/Realtime_Multi-Person_Pose_Estimation: Code repo for realtime multi-person pose estimation in CVPR17 (Oral) paper&#xff1a;[1611.08050] Realtime Multi-Person 2D Pose Estima…

Bind for 0.0.0.0:2379 failed: port is already allocated

1、执行命令docker-compose -p docker-apisix up -d 报错 Error response from daemon: driver failed programming external connectivity on endpoint docker-apisix-etcd-1 (2a92a0cefff9194fcd1dad4bdeabf4201d9047ec2633eda455c6e46528668af4): Bind for 0.0.0.0:2379 fa…

NLP论文阅读记录 - 02 | 2022 自动文本摘要方法:综合回顾

文章目录 前言0、论文摘要一、Introduction1.1文本摘要的要求1.2主要研究贡献 二.ATS的分类2.1基于没有。输入文档的数量2.2 基于总结方法2.3 基于输出摘要性质&#xff1a;2.4 基于摘要语言2.4.1 基于摘要算法2.5 基于摘要内容2.6 基于摘要类型2.7 基于概括域2.8 基于加工水平…

Your password does not satisfy the current policy requirements

密码策略问题异常信息&#xff1a; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements1、查看 mysql 初始的密码策略&#xff0c; 输入语句 “ SHOW VARIABLES LIKE validate_password%; ” 进行查看 2.首先需要设置密码的验证强度等级&am…

删除数据后, redis 内存占用还是很高怎么办?

现象&#xff1a; reids 做了数据删除&#xff0c;数据量不大&#xff0c;使用 top 命令看&#xff0c;发现还是占用大量内存 原因&#xff1a; 1.redis 底层内存根据内存分配器分配&#xff0c;不会立刻释放 2.redis 释放的内存空间不是连续的&#xff0c;存在碎片 内存碎…

编译错误:C4056E type of input file ‘xxx‘ unknown

最近在Proteus上面进行仿真&#xff0c;将编译后的hex文件导入到电路图中&#xff0c;进行程序运行的时候&#xff0c;Proteus报了这么一个错误&#xff1a;Error: C4065E: type of input file Pian unknown 我上网一搜&#xff0c;好像与文件名称中存在空格有关&#xff0c;导…

百度飞桨文心生态成果最新披露:开发者达1070万 模型数超86万

12月28日&#xff0c;由深度学习技术及应用国家工程研究中心主办的WAVE SUMMIT深度学习开发者大会2023在北京召开。百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰现场公布了飞桨文心五载十届最新生态成果&#xff0c;文心一言最新用户规模破1亿&#xff0c;截…