提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
梯度, 一阶梯度,二阶梯度,高斯牛顿优化. 后三者与前面可能没有太大关系.
提示:以下是本篇文章正文内容,下面内容可供参考
命题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.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) .
结论:
偏导数一定是方向导数,方向导数不一定是偏导数
在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.
让求解导数为零的问题,变成了一个不断寻找增量使函数不断下降的过程。直到某个时刻增量非常小,无法使得函数下降,则算法收敛.目标函数达到了极小,也就完成了寻找极小值的过程。
将目标函数在x附近进行泰勒展开:
对于目标函数做了一阶近似 , 把一个非线性函数 f 线性成了一次函数 , 这种近似自然是极其不准确的 最速下降法基本思想 : 最速下降方向 : 负梯度方向 ; 步长 : 精确搜索 . \color{#00F}{对于目标函数做了一阶近似,把一个非线性函数f线性成了一次函数,这种近似自然是极其不准确的}\\ \color{#F00}{最速下降法基本思想: ~~~~ 最速下降方向:负梯度方向; 步长:精确搜索.} 对于目标函数做了一阶近似,把一个非线性函数f线性成了一次函数,这种近似自然是极其不准确的最速下降法基本思想: 最速下降方向:负梯度方向;步长:精确搜索.
局部最优点为x*,当前位置为xk. 圆圈是目标函数的等高线.
x垂直于等高线的方向是目前所处位置的最速下降方向,这也是函数在该点出的梯度或者导数方向(其实是梯度的反方向),每次迭代都沿着梯度方向前进.
优点:最速下降求解简单,只需求解一阶导数
缺点: 但是梯度方向一开始并不一定指向全局最小值,如图所示.因此在实际中,最速下降法很可能走出一条及其曲折的路线,导致其收敛速度很慢,不实用.
将目标函数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的列向量
最速下降法和牛顿法虽然直观,但使用中存在一些缺点.
—最速下降法过于贪婪,容易走出锯齿线路,增加迭代次数.
—牛顿法迭代次数少,但需要计算复杂的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可逆.
参考:梯度的几何意义
SLAM 非线性优化