提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
梯度, 一阶梯度,二阶梯度,高斯牛顿优化. 后三者与前面可能没有太大关系.
提示:以下是本篇文章正文内容,下面内容可供参考
一、梯度
1.1丶方向
1.1.1丶平面上的方向 平面向量 u ⃗ ≠ 0 平面向量\vec{u}≠0 平面向量u=0
1.2梯度的几何意义
命题1.1: 曲面 F ( x , y , z ) = 0 在其上任意一点的法向量为 N = ( F x , F y , F z ) . 曲面F(x,y,z)=0在其上任意一点的法向量为N=(F_x,F_y,F_z). 曲面F(x,y,z)=0在其上任意一点的法向量为N=(Fx,Fy,Fz).
例如:
x
2
+
y
2
−
Z
2
−
1
=
0
在点
(
1
,
1
,
1
)
处的法向量
x^2+y^2-Z^2-1=0 ~~~在点(1,1,1)处的法向量
x2+y2−Z2−1=0 在点(1,1,1)处的法向量
计算出来的法向量为(2,2,-2) 起点为(1,1,1) 终点为(3,3,-1)
命题1.2
二元函数 z = f ( x , y ) 的图像上的法向量为 N = ( f x , f y , − 1 ) 二元函数z=f(x,y)的图像上的法向量为N=(f_x,f_y,-1) 二元函数z=f(x,y)的图像上的法向量为N=(fx,fy,−1)
命题1.3
设 e , x 2 是两个线性无关 ( 不共线 ) 的向量 , e 是单位向量 , 则 ( 1 ) x 2 ⋅ e 是向量 x 2 在向量 e 上的投影 ( 射影 ) ; ( 2 ) ( x 2 ⋅ e ) e 是向量 x 2 在向量 e 上的投影向量 ( 射影向量 ) ; ( 3 ) x 2 − ( x 2 ⋅ e ) e 与向量 e 正交 , 从而它是 x 2 向 e 的正交补空间上的投影向量 设e,x_2是两个线性无关(不共线)的向量,e是单位向量,则~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\ (1)x_2·e是向量x_2在向量e上的投影(射影);~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\ (2)(x_2·e)e是向量x_2在向量e上的投影向量(射影向量);~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\ (3)x_2-(x_2·e)e与向量e正交,从而它是x_2向e的正交补空间上的投影向量 设e,x2是两个线性无关(不共线)的向量,e是单位向量,则 (1)x2⋅e是向量x2在向量e上的投影(射影); (2)(x2⋅e)e是向量x2在向量e上的投影向量(射影向量); (3)x2−(x2⋅e)e与向量e正交,从而它是x2向e的正交补空间上的投影向量
命題1.4:
二元函数 z = f ( x , z ) 在任意一点 ( x 0 , y 0 ) 的梯度 g r a d f 等于此二元函数图像上点 ( x 0 , y 0 , f ( x 0 , y 0 ) ) 的法向量 N 在 x O y 平面上的投影向量 . 二元函数z=f(x,z)在任意一点(x_0,y_0)的梯度gradf等于此二元函数图像上点(x_0,y_0,f(x_0,y_0))的法向量N在xOy平面上的投影向量. 二元函数z=f(x,z)在任意一点(x0,y0)的梯度gradf等于此二元函数图像上点(x0,y0,f(x0,y0))的法向量N在xOy平面上的投影向量.
黑色向量就是在点B上的法向量,红色向量为梯度向量.就是法向量在xOy面上的投影
梯度
定义:设函数f(x,y)在平面区域D内有一阶连续偏导数,对于每一点P(x0,y0)∈D,都可得出向量:
f x ′ ( x 0 , y 0 ) i ⃗ + f y ′ ( x 0 , y 0 ) j ⃗ . 称该向量为函数 f ( x , y ) 在点 P 0 ( x 0 , y 0 ) 的梯度 , 记做 g r a d f ( x 0 , y 0 ) 或 ∇ f ( x 0 , y 0 ) , 即 g r a d f ( x 0 , y 0 ) = f x ′ ( x 0 , y 0 ) i ⃗ + f y ′ ( x 0 , y 0 ) j ⃗ . f'_x(x_0,y_0)\vec{i}+f'_y(x_0,y_0)\vec{j}.称该向量为函数f(x,y)在点P_0(x_0,y_0)的梯度,记做gradf(x_0,y_0)或∇f(x_0,y_0),\\ 即 gradf(x_0,y_0)=f'_x(x_0,y_0)\vec{i}+f'_y(x_0,y_0)\vec{j}. fx′(x0,y0)i+fy′(x0,y0)j.称该向量为函数f(x,y)在点P0(x0,y0)的梯度,记做gradf(x0,y0)或∇f(x0,y0),即gradf(x0,y0)=fx′(x0,y0)i+fy′(x0,y0)j.
1.2 方向导数
命题1.5
设 z = f ( x , y ) 是一个二元函数 , l = ( a , b ) 为一个方向 , 则函数 z 沿方向 l 的方向导数 : δ z δ l = δ f δ x c o s α + δ f δ y c o s β , 这里 c o s α = a a 2 + b 2 , c o s β = b a 2 + b 2 设z=f(x,y)是一个二元函数,l=(a,b)为一个方向,则函数z沿方向l的方向导数: \\ \frac{\delta z }{\delta l}= \frac{\delta f }{\delta x}cos\alpha+ \frac{\delta f }{\delta y}cos\beta,\\这里cos\alpha=\frac{a}{\sqrt{a^2+b^2}},cos\beta=\frac{b}{\sqrt{a^2+b^2}} 设z=f(x,y)是一个二元函数,l=(a,b)为一个方向,则函数z沿方向l的方向导数:δlδz=δxδfcosα+δyδfcosβ,这里cosα=a2+b2a,cosβ=a2+b2b
推论1.1
二元函数 z = f ( x , y ) 在点 ( x 0 , y 0 ) 沿单位方向 l 0 的方向导数 δ z δ l 0 就是 f ( x , y ) 在点 ( x 0 , y 0 ) 的梯度 g r a d f ( x 0 , y 0 ) 在单位向量 l 0 上的投影 . ( 方向导数的绝对值就是梯度在单位向量上的投影向量的模长 ) 二元函数z=f(x,y)在点(x_0,y_0)沿单位方向l_0的方向导数\frac{\delta z}{\delta l_0}就是f(x,y)在点(x_0,y_0)的梯度gradf(x_0,y_0)在单位向量l_0上的投影.(方向导数的绝对值就是梯度在单位向量上的投影向量的模长) 二元函数z=f(x,y)在点(x0,y0)沿单位方向l0的方向导数δl0δz就是f(x,y)在点(x0,y0)的梯度gradf(x0,y0)在单位向量l0上的投影.(方向导数的绝对值就是梯度在单位向量上的投影向量的模长)
推论1.2
设二元函数 z = f ( x , y ) 在点 ( x 0 , y 0 ) 可微 , j = ( 0 , 1 ) 是 x 轴 y 轴的单位方向 , 则 : δ f δ x ∣ ( x 0 , y 0 ) = δ z δ i ∣ ( x 0 , y 0 ) , δ f δ y ∣ ( x 0 , y 0 ) = δ z δ j ∣ ( x 0 , y 0 ) . 设二元函数z=f(x,y)在点(x_0,y_0)可微,j=(0,1)是x轴y轴的单位方向,则:\\ \frac{\delta f}{\delta x}|_{(x_0,y_0)}=\frac{\delta z}{\delta i}|_{(x_0,y_0)}, ~~ \frac{\delta f}{\delta y}|_{(x_0,y_0)}=\frac{\delta z}{\delta j}|_{(x_0,y_0)}\ . 设二元函数z=f(x,y)在点(x0,y0)可微,j=(0,1)是x轴y轴的单位方向,则:δxδf∣(x0,y0)=δiδz∣(x0,y0), δyδf∣(x0,y0)=δjδz∣(x0,y0) .
结论:
偏导数一定是方向导数,方向导数不一定是偏导数
u的模长就是方向导数, l1=(1,0)的方向投影向量的模长. 其中l1就是单位方向向量
二、求解非线性最小二乘
在SLAM中由于早生的存在,当我们把估计轨迹和地图带入SLAM的运动,观测方程时,等号并不会成立. 此时就要调整状态估计,是的误差最小化.
先考虑简单情况的问题:
min
x
F
(
x
)
=
1
2
∣
∣
f
(
x
)
∣
∣
2
2
x
∈
R
n
.
f
是任意标量非线性函数
f
(
x
)
.
R
2
→
R
.
\min_xF(x)=\frac{1}{2}||f(x)||_2^2 ~~x∈R^n.f是任意标量非线性函数f(x).~~~~~~~~~\mathbb R^2 \to \R.
xminF(x)=21∣∣f(x)∣∣22 x∈Rn.f是任意标量非线性函数f(x). R2→R.
当f很简单时, 令目标函数的导数为零,然后求解最优值.
δ
F
δ
x
=
0
导数为零的极值
,
可能是极大值
,
极小值或鞍点处的值
,
.
则只需比较这些函数值大小即可
.
\frac{\delta F}{\delta x}=0 ~~~~ 导数为零的极值,可能是极大值,极小值或鞍点处的值,.则只需比较这些函数值大小即可.
δxδF=0 导数为零的极值,可能是极大值,极小值或鞍点处的值,.则只需比较这些函数值大小即可.
当f复杂时:
δ
F
δ
x
=
0
难求或者
δ
F
δ
x
=
0
难解
\frac{\delta F}{\delta x}=0 ~~难求或者\frac{\delta F}{\delta x}=0~~难解
δxδF=0 难求或者δxδF=0 难解
则需要使用迭代的方式求解:(从一个初始值出发,不断优化当前的优化变量,使得目标函数下降)
1 丶给定某个初始值 x 0 2 丶对于第 k 次迭代寻找一个增量 Δ x k , 使得 ∣ ∣ f ( x k + Δ x k ) ∣ ∣ 2 2 达到最小值 . 其中 Δ x k 如何寻找是重点 3 丶若 Δ x k 足够小 , 则停止 4 丶否则 , 令 x k + 1 = x k + Δ x k , 返回 2. 1丶给定某个初始值x_0 \\ 2丶对于第k次迭代寻找一个增量\Delta x_k,使得||f(x_k+\Delta x_k)||_2^2达到最小值.\color{#F00}{其中\Delta x_k如何寻找是重点} \color{#000}\\ 3丶若\Delta x_k足够小,则停止\\ 4丶否则,令x_{k+1}=x_k+\Delta x_k, 返回2. 1丶给定某个初始值x02丶对于第k次迭代寻找一个增量Δxk,使得∣∣f(xk+Δxk)∣∣22达到最小值.其中Δxk如何寻找是重点3丶若Δxk足够小,则停止4丶否则,令xk+1=xk+Δxk,返回2.
让求解导数为零的问题,变成了一个不断寻找增量使函数不断下降的过程。直到某个时刻增量非常小,无法使得函数下降,则算法收敛.目标函数达到了极小,也就完成了寻找极小值的过程。
2.1 一阶梯度
将目标函数在x附近进行泰勒展开:
对于目标函数做了一阶近似
,
把一个非线性函数
f
线性成了一次函数
,
这种近似自然是极其不准确的
最速下降法基本思想
:
最速下降方向
:
负梯度方向
;
步长
:
精确搜索
.
\color{#00F}{对于目标函数做了一阶近似,把一个非线性函数f线性成了一次函数,这种近似自然是极其不准确的}\\ \color{#F00}{最速下降法基本思想: ~~~~ 最速下降方向:负梯度方向; 步长:精确搜索.}
对于目标函数做了一阶近似,把一个非线性函数f线性成了一次函数,这种近似自然是极其不准确的最速下降法基本思想: 最速下降方向:负梯度方向;步长:精确搜索.
局部最优点为x*,当前位置为xk. 圆圈是目标函数的等高线.
x垂直于等高线的方向是目前所处位置的最速下降方向,这也是函数在该点出的梯度或者导数方向(其实是梯度的反方向),每次迭代都沿着梯度方向前进.
优点:最速下降求解简单,只需求解一阶导数
缺点: 但是梯度方向一开始并不一定指向全局最小值,如图所示.因此在实际中,最速下降法很可能走出一条及其曲折的路线,导致其收敛速度很慢,不实用.
2.2 二阶梯度
将目标函数F在x附近进行泰勒展开,并保留二阶梯度.
F
(
x
k
+
Δ
x
k
)
≈
F
(
x
k
)
+
J
(
x
k
)
T
Δ
x
k
+
1
2
Δ
x
k
T
H
(
x
k
)
Δ
x
k
.
F(x_k+\Delta x_k)≈F(x_k)+J(x_k)^T\Delta x_k+\frac{1}{2}\Delta x_k^TH(x_k)\Delta x_k.
F(xk+Δxk)≈F(xk)+J(xk)TΔxk+21ΔxkTH(xk)Δxk.
增量的解(求上式关于Δx的导数并令其为零):
J
+
H
Δ
x
=
0
→
H
Δ
x
=
−
J
J+H\Delta x=0 \to H\Delta x=-J
J+HΔx=0→HΔx=−J
求解增量时只需解线性方程组:
d
=
H
−
1
∇
f
(
x
)
牛顿法 仅依赖于目标函数的二阶导
,
在很多情况下是不现实的
d=H^{-1} \nabla f(x)~~~\color{#0F0}{牛顿法}~~仅依赖于目标函数的二阶导,在很多情况下是不现实的
d=H−1∇f(x) 牛顿法 仅依赖于目标函数的二阶导,在很多情况下是不现实的
考虑得到的牛顿方向一定是下降方向吗?
如果
H
不是正定矩阵
{
H
的逆矩阵求不出来
存在特征值为
0
−
∇
f
(
x
k
)
T
⋅
d
k
=
−
∇
f
(
x
k
)
T
H
−
1
∇
f
(
x
k
)
无法判断是否小于
0
存在特征值为负
如果H不是正定矩阵\begin{cases} H的逆矩阵求不出来&存在特征值为0\\ -\nabla f(x_k)^T ·d_k=\\ -\nabla f(x_k)^TH^{-1}\nabla f(x_k)无法判断是否小于0& 存在特征值为负 \end{cases}
如果H不是正定矩阵⎩
⎨
⎧H的逆矩阵求不出来−∇f(xk)T⋅dk=−∇f(xk)TH−1∇f(xk)无法判断是否小于0存在特征值为0存在特征值为负
当H满足较好的性质时(正定矩阵),牛顿法是可行的。
d
X
T
A
X
d
X
=
(
A
+
A
T
)
X
其中
A
为
n
×
n
的矩阵
,
x
为
n
×
1
的列向量
\frac{dX^TAX}{dX}=(A+A^T)X \ \ \ \ \ 其中A为n×n的矩阵, x为n×1的列向量
dXdXTAX=(A+AT)X 其中A为n×n的矩阵,x为n×1的列向量
2.3 高斯牛顿算法
最速下降法和牛顿法虽然直观,但使用中存在一些缺点.
—最速下降法过于贪婪,容易走出锯齿线路,增加迭代次数.
—牛顿法迭代次数少,但需要计算复杂的H矩阵.并且H不一定是正定矩阵.
一阶泰勒展开:
f
(
x
+
∇
x
)
≈
f
(
x
)
+
J
T
∇
x
.
其中
J
(
x
)
T
是
f
(
x
)
关于
x
的导数
.
f(x+\nabla x)≈f(x)+J^T\nabla x.~~~其中J(x)^T是f(x)关于x的导数.
f(x+∇x)≈f(x)+JT∇x. 其中J(x)T是f(x)关于x的导数.
需要解这个最小二乘问题:
Δ
x
∗
=
a
r
g
min
Δ
x
1
2
∣
∣
f
(
x
)
+
J
(
x
)
T
Δ
x
∣
∣
2
\Delta x^*=arg \min_{\Delta x}\frac{1}{2} || f(x)+J(x)^T\Delta x||^2
Δx∗=argΔxmin21∣∣f(x)+J(x)TΔx∣∣2
1
2
∣
∣
f
(
x
)
+
J
(
x
)
T
Δ
x
∣
∣
2
=
1
3
(
∣
∣
f
(
x
)
∣
∣
2
2
+
2
f
(
x
)
J
(
x
)
T
Δ
x
+
Δ
x
T
J
(
x
)
J
(
x
)
T
Δ
x
)
上式关于
Δ
x
求导
,
并令其为
0
J
(
x
)
f
(
x
)
+
J
(
x
)
J
T
(
x
)
Δ
x
=
0
;
\frac{1}{2} || f(x)+J(x)^T\Delta x||^2=\frac{1}{3}(||f(x)||_2^2+2f(x)J(x)^T\Delta x+\Delta x^TJ(x)J(x)^T\Delta x)\\ \color{#00F}{上式关于\Delta x求导,并令其为0} \\J(x)f(x)+J(x)J^T(x)\Delta x=0;
21∣∣f(x)+J(x)TΔx∣∣2=31(∣∣f(x)∣∣22+2f(x)J(x)TΔx+ΔxTJ(x)J(x)TΔx)上式关于Δx求导,并令其为0J(x)f(x)+J(x)JT(x)Δx=0;
J
(
x
)
J
T
(
x
)
Δ
x
⏟
H
(
x
)
=
−
J
(
x
)
f
(
x
)
⏟
g
(
x
)
→
H
Δ
x
=
g
用
J
T
J
作为牛顿法中二阶
H
矩阵的近似
.
\underbrace{J(x)J^T(x)\Delta x} _{H(x)}=\underbrace{-J(x)f(x)}_{g(x)}\to H\Delta x=g\\ 用J^TJ作为牛顿法中二阶H矩阵的近似.
H(x)
J(x)JT(x)Δx=g(x)
−J(x)f(x)→HΔx=g用JTJ作为牛顿法中二阶H矩阵的近似.
高斯牛顿法用J的表达式近似了H
步骤:
1. 给定初始值 x 0 2. 对于第 K 次迭代 , 求出当前的雅可比矩阵 J ( x k ) 和误差 f ( x k ) 3. 求解增量方程 : H Δ x k = g . → Δ x k = H − 1 g . 4. 若 Δ x k 足够小 , 则停止 , 否则令 H k + 1 = x k + Δ x k , 返回 2 1.给定初始值x_0\\2.对于第K次迭代,求出当前的雅可比矩阵J(x_k)和误差f(x_k)\\ 3.求解增量方程:H\Delta x_k=g.\to\Delta x_k=H^{-1}g.\\ 4.若\Delta x_k足够小,则停止,否则令H_{k+1}=x_k+\Delta x_k,返回2 1.给定初始值x02.对于第K次迭代,求出当前的雅可比矩阵J(xk)和误差f(xk)3.求解增量方程:HΔxk=g.→Δxk=H−1g.4.若Δxk足够小,则停止,否则令Hk+1=xk+Δxk,返回2
优点:不用求海森矩阵
缺点;H半正定,也无法保证H可逆.