首先谈一下应用场景——在拟合的时候进行应用
什么是拟合?你有一堆数据点,我有一个函数,但是这个函数的很多参数是未知的,我只知道你的这些数据点都在我的函数上,因此我可以用你的数据点来求我的函数的未知参数。例如:matlab中的fit函数
最小二乘法天生就是用来求拟合的,看函数和数据点的逼近关系。它通过最小化误差的平方和寻找数据的最佳函数匹配进行求解。

拟合我们可以认为是一种试探性的方法,这种方法在计算机出来以前很多情况下是不可能实现的,为什么,因为公式涉及了大量的迭代过程,也就是我想要通过数据点求函数的参数,没有解析解能够直接代入数据求得参数,而是通过一点一点的摸索尝试,最终得到最小误差也就是最好拟合。最具有代表性的就是暴风法,把所有可能的结果都带进去,找到最好的拟合。然后聪明的人类不想这么鲁莽,并且这么无目的地寻找,于是人们开始研究参数向什么方向迭代是最好的,于是便出现了梯度方向等一系列方法。

有最速下降法、Newton 法、GaussNewton(GN)法、Levenberg-Marquardt(LM)算法等。

方法 介绍
最速下降法 负梯度方向,收敛速度慢
Newton 法 保留泰勒级数一阶和二阶项,二次收敛速度,但每步都计算Hessian矩阵,复杂
GN法 目标函数的Jacobian 矩阵近似H矩阵,提高算法效率,但H矩阵不满秩则无法迭代
LM法 信赖域算法,解决H矩阵不满秩或非正定,






通过对比的形式想必大家已经记住了这一堆优化的方法,很多情况下使用中都是优化方法的改进方法,因此掌握了这些方法,改进方法也不是太难了。
这里还想说明一点上面的最速下降法,很多人都在问的一个问题,为什么最速下降方向取的负梯度方向???为什么?这个可以看我们求导数的时候(梯度和导数的关系完美解析在我之前的博文中),

其实我们从图中不难看出,左侧,y随着x增加时,导数为正,因此导数的方向我们可以定义为指向x正方向,x与导数同向也就是x也逐渐增加时,函数是增大的。右侧,y随x增加而较小,导数为负,我们这里还定义导数的方向此时指向x负半轴,因此x沿负方向减小时,函数值是逐渐增大的,这里需要记住和注意,沿着导数方向,我们的函数值是逐渐增大的。
解释清了上面一点,我们就可以再升几维,在一维时我们的方向只能谈论左右,而上升到二维时,我们的方向就成了平面的360度了,此时就引出了梯度,下图是二维梯度

其实我们还是可以看出,梯度就是由导数组成的,完全可以说成是多维导数,而在一维导数存在的性质,上升了维度,我们的本质是不变的,因此我们只需要沿着每个维度的导数方向变化,我们的函数值就会增加。这里有个证明,沿梯度是增加最快的,我们可以引入方向导数,方向导数定义的在点P,沿某一方向的变化率。
求变化率我们就需要公平一点,各方向变化的尺寸是相同的,可以写一个圆,
半径为
ρ=(Δx)2+(Δy)2\rho =\sqrt{{{\left( \Delta x \right)}^{2}}+{{\left( \Delta y \right)}^{2}}}ρ=(Δx)2+(Δy)2​
变化为
f(x+Δx,y+Δy)−f(x,y)ρ\frac{f\left( x+\Delta x,y+\Delta y \right)-f\left( x,y \right)}{\rho }ρf(x+Δx,y+Δy)−f(x,y)​
变化率为(率这里需要加极限的概念,为什么?因为我们无法容忍一个我们没有明确定义数值的量 ρ\rhoρ)
lim⁡ρ→0 f(x+Δx,y+Δy)−f(x,y)ρ\underset{\rho \to 0}{\mathop{\lim }}\,\frac{f\left( x+\Delta x,y+\Delta y \right)-f\left( x,y \right)}{\rho }ρ→0lim​ρf(x+Δx,y+Δy)−f(x,y)​
其中
f(x+Δx,y+Δy)−f(x,y)=∂f∂x⋅Δx+∂f∂y⋅Δy+∘(ρ)f\left( x+\Delta x,y+\Delta y \right)-f\left( x,y \right)=\frac{\partial f}{\partial x}\centerdot \Delta x+\frac{\partial f}{\partial y}\centerdot \Delta y+\circ \left( \rho \right)f(x+Δx,y+Δy)−f(x,y)=∂x∂f​⋅Δx+∂y∂f​⋅Δy+∘(ρ)

两边同时除以ρ\rhoρ
f(x+Δx,y+Δy)−f(x,y)ρ=∂f∂x⋅Δxρ+∂f∂y⋅Δyρ+∘(ρ)ρ=∂f∂x⋅cos⁡θ+∂f∂y⋅sin⁡θ+∘(ρ)ρ\begin{aligned} & \frac{f\left( x+\Delta x,y+\Delta y \right)-f\left( x,y \right)}{\rho }=\frac{\partial f}{\partial x}\centerdot \frac{\Delta x}{\rho }+\frac{\partial f}{\partial y}\centerdot \frac{\Delta y}{\rho }+\frac{\circ \left( \rho \right)}{\rho } \\ & =\frac{\partial f}{\partial x}\centerdot \cos \theta +\frac{\partial f}{\partial y}\centerdot \sin \theta +\frac{\circ \left( \rho \right)}{\rho } \end{aligned}​ρf(x+Δx,y+Δy)−f(x,y)​=∂x∂f​⋅ρΔx​+∂y∂f​⋅ρΔy​+ρ∘(ρ)​=∂x∂f​⋅cosθ+∂y∂f​⋅sinθ+ρ∘(ρ)​​
lim⁡ρ→0 f(x+Δx,y+Δy)−f(x,y)ρ=∂f∂x⋅cos⁡θ+∂f∂y⋅sin⁡θ\underset{\rho \to 0}{\mathop{\lim }}\,\frac{f\left( x+\Delta x,y+\Delta y \right)-f\left( x,y \right)}{\rho }=\frac{\partial f}{\partial x}\centerdot \cos \theta +\frac{\partial f}{\partial y}\centerdot \sin \thetaρ→0lim​ρf(x+Δx,y+Δy)−f(x,y)​=∂x∂f​⋅cosθ+∂y∂f​⋅sinθ
上式可以进一步改写为
lim⁡ρ→0 f(x+Δx,y+Δy)−f(x,y)ρ=∂f∂x⋅cos⁡θ+∂f∂y⋅sin⁡θ={∂f∂x,∂f∂y}⋅(cos⁡θ,sin⁡θ)=∣gradf(x,y)∣cos⁡(gradf(x,y),(cos⁡θ,sin⁡θ))\begin{aligned} & \underset{\rho \to 0}{\mathop{\lim }}\,\frac{f\left( x+\Delta x,y+\Delta y \right)-f\left( x,y \right)}{\rho }=\frac{\partial f}{\partial x}\centerdot \cos \theta +\frac{\partial f}{\partial y}\centerdot \sin \theta \\ & =\left\{ \frac{\partial f}{\partial x},\frac{\partial f}{\partial y} \right\}\centerdot \left( \cos \theta ,\sin \theta \right) \\ & =\left| gradf\left( x,y \right) \right|\cos \left( gradf\left( x,y \right),\left( \cos \theta ,\sin \theta \right) \right) \end{aligned}​ρ→0lim​ρf(x+Δx,y+Δy)−f(x,y)​=∂x∂f​⋅cosθ+∂y∂f​⋅sinθ={∂x∂f​,∂y∂f​}⋅(cosθ,sinθ)=∣gradf(x,y)∣cos(gradf(x,y),(cosθ,sinθ))​
可以看出要想cos值最大,gradf(x,y)和(cosθ,sinθ)需要同方向,而(cosθ,sinθ)就是我们下一步将要行进的方向。
到此便可以说,我们行进的方向和我们的梯度方向一致时,函数增长最快,方向相反时,函数下降最快。

有一个文献写的不错,推荐一下,不过说明,本文并没有进行参考

Wilamowski, B. M., & Yu, H. (2010). Improved computation for Levenberg–Marquardt training. IEEE transactions on neural networks, 21(6), 930-937.

LM算法——列文伯格-马夸尔特算法(最速下降法,牛顿法,高斯牛顿法)(完美解释负梯度方向)相关推荐

  1. Levenberg-Marquardt(列文伯格-马夸尔特)算法

     什么是最优化? Levenberg-Marquardt算法是最优化算法中的一种.最优化是寻找使得函数值最小的参数向量.它的应用领域非常广泛,如:经济学.管理优化.网络分析 .最优设计.机械或电子 ...

  2. 高斯牛顿(Gauss Newton)、列文伯格-马夸尔特(Levenberg-Marquardt)最优化算法与VSLAM

    转载请说明出处:http://blog.csdn.net/zhubaohua_bupt/article/details/74973347 在VSLAM优化部分,我们多次谈到,构建一个关于待优化位姿的误 ...

  3. MATLAB--列文伯格LM优化算法

    1.LM函数定义 输入参数:误差函数,需要优化的形参,初值 function last_parameters = LM(fr,p_sym,parameters) % jacobin matrix Jr ...

  4. 机器学习经典算法---EM算法(一文秒懂极大释然估计和EM算法)

    目录 一.极大似然估计 1.明确极大似然函数的目的 2.通俗体现极大似然估计思想的例子 案例一: 案例二: 小结: 二.由问题引入EM算法 1.掷硬币问题: 2.掷硬币问题-升级版: 3.掷硬币问题- ...

  5. SLAM从0到1——状态估计之最小二乘问题解法:最速下降法、牛顿法、高斯牛顿法、LM法...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 学习3D视觉核心技术,扫描查看介绍,3天内无条件退款 圈里有高质量教程资料.可答疑解惑.助你高效解决问 ...

  6. 完美的扎克伯格,倒霉的Facebook

    硅谷Live / 实地探访 / 热点探秘 / 深度探讨 人设崩塌 昨天(美国时间3月21日周三),足足五天后,小扎正式在他个人的脸书主页对 Facebook 近 5000 万用户数据被第三方软件泄漏的 ...

  7. 《Social Network》中扎克伯格所做的美女照片对比选美的实现原理

    看了<Social Network>,在开场不久后,扎克伯格在哈佛宿舍#1-2-3-4-5---,侵入并获取所有人的共享照片,然后做出了一个"[color=blue]两幅美女照片 ...

  8. 扎克伯格的政治野心:2017年他想走遍美国52个州

    2017年,扎克伯格可能要花很多时间在公路上了:他在Facebook上公布了自己今年想挑战的事.今年,他想走访美国各州.拜访不同地方的人.目前他已经走访了大约20个州,也就是说,到2017年结束之前, ...

  9. 硅谷来信2,156,扎克伯格的5宗个人恩怨

    任何一个明星企业,都离不开一个强势的创始人,这个创始人也就成为了企业的名片,而他的基因也会成为公司的基因,他的特点也会成为公司的特点,无论好坏,他做事的风格也会影响整个公司的人.在这些著名企业的创始人 ...

  10. 为什么乔布斯最欣赏扎克伯格?

    苹果以做事精简极致著称,放弃了非常非常多的诱惑,扎克伯格也很擅长做减法;此外两人都极为独裁,为人却矜持克制.不过,乔布斯最欣赏的人是扎克伯格,扎克伯格却说,我想成为像比尔.盖茨那样的人. 乔布斯和扎克 ...

最新文章

  1. 转HTML中的table转为excel
  2. pycharm导入anaconda虚拟环境问题
  3. 安装hmmlearn
  4. java oracle database user dsn_跨会话序列化数据库连接
  5. DSP集成的AIC23芯片的音频接口
  6. 研究生必备自学课程!打好科研的数学基础与机器学习基础!
  7. 20200710:动态规划复习day03
  8. rk3399 aarch64 arm64 使用英特尔神经计算棒openvino
  9. 去中心化产品从趋势上的“确定性”到产品设计思路
  10. Codeforces Round 701 Multiples and Power Differences
  11. Hanoi Tower Troubles Again!
  12. 深度学习中的类别激活热图可视化
  13. 未来在哪里?我是这样看阿里大数据的
  14. CRIE: An automated analyzer for Chinese texts翻译
  15. 王小川谈创业必须突破的六大槛:人、产品、渠道、体制、资本、移动
  16. XGBoost目标函数推导
  17. 用户运营 - 用户生命周期与CLV
  18. 安全漏洞中的倚天剑——XSS跨站脚本攻击
  19. 大学物理复习笔记——静电场
  20. 智能合约未来发展方向

热门文章

  1. JavaScript入门到精通,需要掌握的技能盘点
  2. WAP PUSH介绍
  3. 控制Dell PowerEdge R720的风扇转速 (利用IPMI)
  4. ce能修改mc服务器吗,CE怎么修改DNF私服的装备。
  5. php视频系统源码,基于ThinkPHP框架仿优酷视频源码带数据,后台功能强大
  6. 计算机二级python经典真题
  7. python如何下载tushare_如何安装tushare
  8. java学习总结及心得体会
  9. 复变函数论里的欧拉公式
  10. python 求解二次规划(quadprog)