news 2026/6/9 16:07:05

最小二乘问题详解4:非线性最小二乘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
最小二乘问题详解4:非线性最小二乘

1. 引言

在论述最小二乘问题的时候,很多文章都喜欢用拟合直线来举例,但是在现实中像拟合直线这样的线性最小二乘问题往往不是常态,现实世界中更多是像投影成像这种非线性最小二乘问题。在本文中,我们就讲解一下非线性最小二乘问题。

不过,在继续阅读本文之前,一定要先理解之前的3篇文章,因为线性最小二乘是求解非线性最小二乘问题的基础:

《最小二乘问题详解1:线性最小二乘》

《最小二乘问题详解2:线性最小二乘求解》

《最小二乘问题详解3:线性最小二乘实例》

2. 定义

具体来说,非线性最小二乘的目标就是找到一组参数

θ

,使得非线性模型

f

(

x

;

θ

)

最好地拟合观测数据。非线性最小二乘模型通常使用如下公式来表达:

y

=

f

(

x

;

θ

)

+

ε

其中:

x

R

d

:输入变量(如坐标、时间等)

θ

R

p

:待估计参数向量

f

:

R

d

×

R

p

R

m

:非线性向量值函数

ε

:观测噪声

y

R

m

:观测输出

我们有

n

组数据:

{

(

x

i

,

y

i

)

}

n

i

=

1

同样的,非线性最小二乘的目标是最小化残差平方和:

min

θ

S

(

θ

)

=

min

θ

n

i

=

1

r

i

(

θ

)

2

=

min

θ

r

(

θ

)

2

其中:

r

i

(

θ

)

=

y

i

f

(

x

i

;

θ

)

:第

i

个样本的残差向量

r

(

θ

)

=

[

r

T

1

,

r

T

2

,

,

r

T

n

]

T

:所有残差拼成的长向量,维度

N

=

n

m

那么非线性最小二乘能不能像线性那样直接求解呢?显然是不行的。因为在线性情况下,残差是

r

=

A

θ

b

,目标函数是

A

θ

b

2

,这是一个二次函数,所以有闭式解

(

A

T

A

)

1

A

T

b

。但在非线性情况下,

r

(

θ

)

2

是一个非凸、非二次函数,无法直接求逆,也就无法计算出闭式解。更直观的说,通过非线性函数

f

(

x

;

θ

)

是无法写成类似设计矩阵

A

θ

=

b

这样的线性方程组的。

一种求解的思路是局部线性化(Local Linearization)。虽然

f

(

x

;

θ

)

是非线性的,但在当前估计

θ

k

附近,我们可以用一阶泰勒展开近似模型输出:

f

(

x

i

;

θ

)

f

(

x

i

;

θ

k

)

+

J

i

(

θ

k

)

(

θ

θ

k

)

其中:

J

i

(

θ

k

)

=

f

(

x

i

;

θ

)

θ

T

θ

=

θ

k

R

m

×

p

:第

i

个样本的模型输出对参数的雅可比块。

J

(

θ

k

)

是将所有

J

i

垂直堆叠得到的

N

×

p

矩阵(

N

=

n

m

p

为参数维度)。

代入残差定义

r

i

(

θ

)

=

y

i

f

(

x

i

;

θ

)

,得到残差的线性近似:

r

i

(

θ

)

r

i

(

θ

k

)

J

i

(

θ

k

)

(

θ

θ

k

)

对所有样本拼接成向量形式:

r

(

θ

)

r

(

θ

k

)

J

(

θ

k

)

(

θ

θ

k

)

Δ

θ

=

θ

θ

k

,则:

r

(

θ

)

r

k

J

k

Δ

θ

这是一个关于

Δ

θ

的线性模型,为非线性最小二乘求解奠定了基础。

3. 雅可比矩阵

在进行正式求解之前,我们先理解一下雅可比矩阵(Jacobian Matrix),因为它在非线性最小二乘中起着核心作用。

从泰勒展开的角度看,一元函数的一阶近似使用导数,而多元向量函数的一阶近似则使用雅可比矩阵——它是多元函数所有一阶偏导数组成的矩阵。在非线性最小二乘中,我们关注的是模型输出

f

(

x

i

;

θ

)

对参数

θ

的变化率。

对于第

i

个样本,其模型输出对参数的雅可比块为:

J

i

(

θ

)

=

f

(

x

i

;

θ

)

θ

T

R

m

×

p

m

:模型输出维度(例如,二维图像坐标

(

u

,

v

)

m

=

2

p

:待估参数维度

J

i

(

θ

)

是一个

m

×

p

矩阵,表示模型输出的每个分量对每个参数的偏导数

将所有

n

个样本的雅可比块垂直堆叠,得到整体雅可比矩阵:

J

(

θ

)

=

J

1

(

θ

)

J

2

(

θ

)

J

n

(

θ

)

=

f

(

x

1

;

θ

)

θ

T

f

(

x

2

;

θ

)

θ

T

f

(

x

n

;

θ

)

θ

T

R

N

×

p

其中

N

=

n

m

4. Gauss-Newton

求解非线性最小二乘问题最基础最好理解的就是Gauss-Newton方法,它结合了牛顿法的迭代优化框架(就是高中数学中迭代逼近求解平方根的过程)和高斯的线性化思想,所以将其称为Gauss-Newton方法。它的算法流程如下:

初始化:选一个初始猜测

θ

0

迭代:对

k

=

0

,

1

,

2

,

a. 计算当前残差:

r

k

=

y

f

(

x

;

θ

k

)

b. 计算雅可比矩阵

J

k

=

J

(

θ

k

)

c. 求解线性最小二乘子问题:

min

Δ

θ

r

k

J

k

Δ

θ

2

解为:

Δ

θ

=

(

J

T

k

J

k

)

1

J

T

k

r

k

d. 更新参数:

θ

k

+

1

=

θ

k

+

Δ

θ

终止:当

Δ

θ

很小或目标函数变化很小时停止

Gauss-Newton方法的基本思路是每一步都在当前点附近做线性近似;然后走一步,走的方向是让残差平方和下降最快的方向之一;最终收敛到一个局部最小值。可能这个算法流程可能还是有点抽象,我们将其中一次迭代的过程论述的更清楚一些:

θ

k

处做一阶泰勒展开。对残差函数

r

(

θ

)

θ

k

附近线性化:

r

(

θ

)

r

(

θ

k

)

J

(

θ

k

)

(

θ

θ

k

)

Δ

θ

=

θ

θ

k

,则:

r

(

θ

)

r

k

J

k

Δ

θ

其中:

r

k

=

r

(

θ

k

)

J

k

=

J

(

θ

k

)

构造局部二次近似目标函数。代入原目标:

S

(

θ

)

=

r

(

θ

)

2

r

k

J

k

Δ

θ

2

展开:

S

(

θ

)

r

T

k

r

k

2

r

T

k

J

k

Δ

θ

+

Δ

θ

T

J

T

k

J

k

Δ

θ

这是一个关于

Δ

θ

的二次函数。

最小化这个二次函数。对

Δ

θ

求导并令导数为零:

S

(

Δ

θ

)

=

2

J

T

k

r

k

+

2

J

T

k

J

k

Δ

θ

=

0

得到正规方程(Normal Equation):

J

T

k

J

k

Δ

θ

=

J

T

k

r

k

求解 Gauss-Newton 步长。如果

J

T

k

J

k

可逆,则解为:

Δ

θ

=

(

J

T

k

J

k

)

1

J

T

k

r

k

更新参数

θ

k

+

1

=

θ

k

+

Δ

θ

看到这个过程中的正规方程了吗?这就是我们说的非线性最小二乘求解的基础是线性最小二乘的原因了,非线性最小二乘问题的每次迭代过程就是一个线性最小二乘子问题。

非线性最小二乘与线性最小二乘求解过程的对比如下:

特性 线性最小二乘 非线性最小二乘(Gauss-Newton)

模型

f

(

x

;

θ

)

=

A

θ

f

(

x

;

θ

)

任意非线性

残差

r

=

A

θ

b

r

(

θ

)

=

y

f

(

x

;

θ

)

雅可比

J

=

A

(常数)

J

(

θ

)

=

f

θ

T

(依赖

θ

θ

=

(

A

T

A

)

1

A

T

b

θ

k

+

1

=

θ

k

+

(

J

T

k

J

k

)

1

J

T

k

r

k

是否迭代 否 是

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 9:13:39

不是所有旅行都要有意义,舒服才是答案

不晓得从什么时候开始,深度游成了旅游领域的热门词语,大家都不想匆匆地游览,就希望好好感受城市的“真实灵魂。认真思索一番,所谓深度或许算是一个虚假概念我们带着自身的学识,、成见还有期待出发,所看到的…

作者头像 李华
网站建设 2026/6/7 7:58:59

基于SpringBoot+Vue的大学生就业服务平台的设计与实现

一、前言 大学生就业服务平台管理系统按照操作主体分为管理员和用户。管理员的功能包括学生档案管理、字典管理、试卷管理、试卷选题管理、试题表管理、考试记录表管理、答题详情表管理、错题表管理、法律法规管理、法律法规收藏管理、法律法规留言管理、就业分析管理、论坛管理…

作者头像 李华
网站建设 2026/6/2 21:29:59

从零开始掌握LibreCAD:免费开源CAD软件的完全使用指南

从零开始掌握LibreCAD:免费开源CAD软件的完全使用指南 【免费下载链接】LibreCAD LibreCAD is a cross-platform 2D CAD program written in C14 using the Qt framework. It can read DXF and DWG files and can write DXF, PDF and SVG files. The user interface…

作者头像 李华
网站建设 2026/6/8 21:54:25

终极指南:免费在Mac上读写NTFS磁盘的简单方法

终极指南:免费在Mac上读写NTFS磁盘的简单方法 【免费下载链接】ntfstool A ntfs tool for mac 项目地址: https://gitcode.com/gh_mirrors/nt/ntfstool 还在为Mac电脑无法写入NTFS格式的移动硬盘而头疼吗?NTFSTool这款开源工具正是为你量身定制的…

作者头像 李华
网站建设 2026/6/9 1:41:06

【CMake 】CMake 中的 target_include_directories 详解

CMake 中的 target_include_directories 详解 引言 在使用 CMake 构建 C/C 项目时,我们经常需要告诉编译器在哪里查找头文件。target_include_directories 是 CMake 中用于设置头文件搜索路径的核心命令。本文将深入探讨这个命令的用法、参数含义以及最佳实践。 …

作者头像 李华