首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

关于梯度下降法、牛顿法、高斯-牛顿、LM方法的总结

  • 24-03-09 02:02
  • 2908
  • 10833
blog.csdn.net

线性最小二乘问题,我们可以通过理论推导可以得到其解析解,但是对于非线性最小二乘问题,则需要依赖迭代优化的方法,。
梯度下降主要是从一阶目标函数的一阶导推导而来的,形象点说,就是每次朝着当前梯度最大的方向收敛;二牛顿法是二阶收敛,每次考虑收敛方向的时候,还会考虑下一次的收敛的方向是否是最大(也就是梯度的梯度)。可以参考下图:


红线为牛顿法,绿线为梯度下降。

高斯-牛顿和LM法则主要是针对非线性最小二乘问题提出的解决方案。由于牛顿法需要求解二阶导,也就是hessian matrix,运算量大,不利于实现,,所以通常在牛顿法的基础上用去掉二阶项,用一阶项来近似二阶导,从而保证了计算效率。LM方法,则是由于高斯-牛顿方法在计算时需要保证矩阵的正定性,于是引入了一个约束,从而保证计算方法更具普适性。

1.梯度下降与牛顿法[2]
梯度下降法:
梯度是上升最快的方向,那么如果我想下山,下降最快的方向呢,当然是逆着梯度了(将一点附近的曲面近似为平面),这就是梯度下降法,由于是逆着梯度,下降最快,又叫最速下降法。(一句话就是,朝着梯度方向收敛,可以参考梯度的定义)

迭代公式:
b=a−γ∇F(a) ,γ是步长。

牛顿法:
最优化问题中,牛顿法首先则是将问题转化为求 f‘(x) = 0 这个方程的根。
首先得到一个初始解 x0,
一阶展开:f′(x)≈f‘(x0)+(x-x0)f″(x0)
令f‘(x0)+(x-x0)f″(x0)=0
求解得到x,相比于x0,f‘(x)<f′(x0)

总结一下,就是牛顿法对目标函数的一阶导再求导,即可算出收敛的方向。

优缺点:
梯度法:又称最速下降法,是早期的解析法,收敛速度较慢。
牛顿法:收敛速度快,但不稳定,计算也较困难。

2.高斯牛顿和LM方法
推导过程可以参考
http://iyenn.com/rec/2011807.html
http://fourier.eng.hmc.edu/e176/lectures/NM/node36.html
http://blog.csdn.net/dsbatigol/article/details/12448627

需要注意的是 高斯牛顿方法 在求解hessian matrix时 做了一个简化

目标函数可以简写:
S=∑mi=1r2i

梯度向量在方向上的分量:
gj=2∑mi=1ri∂ri∂βj (1)

Hessian 矩阵的元素则直接在梯度向量的基础上求导:
Hjk=2∑mi=1(∂ri∂βj∂ri∂βk+ri∂2ri∂βj∂βk).

高斯牛顿法的一个小技巧是,将二次偏导省略,于是:
Hjk≈2∑mi=1JijJik (2)

将(1)(2)改写成 矩阵相乘形式:
g=2Jr⊤r,H≈2Jr⊤Jr.

Levenberg-Marquardt方法:
高斯-牛顿法中为了避免发散,有两种解决方法
1.调整下降步伐:βs+1=βs+α Δ.0<α<1
2.调整下降方向:(JTJ+λD)Δ=JTr

λ→+∞时:Δ/λ→JTr,即方向和梯度方向一样,变成了梯度下降法。

相反,如果λ为0,就变成了高斯牛顿法。
Levenberg-Marquardt方法的好处在于可以调节:
如果下降太快,使用较小的λ,使之更接近高斯牛顿法
如果下降太慢,使用较大的λ,使之更接近梯度下降法

此外,高斯牛顿法中涉及求逆矩阵的操作,(JTJ) 加入λ 也可以保证该矩阵为一个正定矩阵。

【reference】:
[1]http://fourier.eng.hmc.edu/e176/lectures/NM/node36.html 【理论推导很完善】
[2].http://blog.csdn.net/dsbatigol/article/details/12448627

有关梯度下降法:
http://www.cnblogs.com/shixiangwan/p/7532858.html
https://www.zhihu.com/question/19723347
http://www.cnblogs.com/maybe2030/p/5089753.html
梯度下降与牛顿法:
https://www.cnblogs.com/shixiangwan/p/7532830.html

注:本文转载自blog.csdn.net的Mr_Mike_Li的文章"https://blog.csdn.net/wuaini_1314/article/details/79562400"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top