一阶梯度$二阶梯度$高斯牛顿算法

3 篇文章 0 订阅
2 篇文章 0 订阅

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

梯度, 一阶梯度,二阶梯度,高斯牛顿优化. 后三者与前面可能没有太大关系.


提示:以下是本篇文章正文内容,下面内容可供参考

一、梯度

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+y2Z21=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)x2e是向量x2在向量e上的投影(射影);                                                     (2)(x2e)e是向量x2在向量e上的投影向量(射影向量);                                (3)x2(x2e)e与向量e正交,从而它是x2e的正交补空间上的投影向量
在这里插入图片描述
命題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))的法向量NxOy平面上的投影向量.
在这里插入图片描述
在这里插入图片描述
黑色向量就是在点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+b2 a,cosβ=a2+b2 b
在这里插入图片描述

推论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)xy轴的单位方向,:δ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  xRn.f是任意标量非线性函数f(x).         R2R.
当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=0HΔx=J
求解增量时只需解线性方程组: d = H − 1 ∇ f ( x )     牛顿法  仅依赖于目标函数的二阶导 , 在很多情况下是不现实的 d=H^{-1} \nabla f(x)~~~\color{#0F0}{牛顿法}~~仅依赖于目标函数的二阶导,在很多情况下是不现实的 d=H1f(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)Tdk=f(xk)TH1f(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     其中An×n的矩阵,xn×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)+JTx.   其中J(x)Tf(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Δx2
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Δx2=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=gJTJ作为牛顿法中二阶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=H1g.4.Δxk足够小,则停止,否则令Hk+1=xk+Δxk,返回2

优点:不用求海森矩阵
缺点;H半正定,也无法保证H可逆.


总结

参考:梯度的几何意义
SLAM 非线性优化

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值