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

LM算法——列文伯格-马夸尔特算法(最速下降法,牛顿法,高斯牛顿法)(完美解释负梯度方向)首先谈一下应用场景——在拟合的时候进行应用什么是拟合?你有一堆数据点,我有一个函数,但是这个函数的很多参数是未知的,我只知道你的这些数据点都在我的函数上,因此我可以用你的数据点来求我的函数的未知参数。例如:matlab中的fit函数最小二乘法天生就是用来求拟合的,看函数和数据点的逼近关系。它通过最小化误差的平方和寻找数据的最佳函数匹配。拟合我们可以认为是一种试探性的方法,这种方法在计算机出…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

首先谈一下应用场景——在拟合的时候进行应用
什么是拟合?你有一堆数据点,我有一个函数,但是这个函数的很多参数是未知的,我只知道你的这些数据点都在我的函数上,因此我可以用你的数据点来求我的函数的未知参数。例如: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)=xfΔx+yfΔ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)=xfρΔx+yfρΔy+ρ(ρ)=xfcosθ+yfsinθ+ρ(ρ)
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)=xfcosθ+yfsinθ
上式可以进一步改写为
lim ⁡ ρ → 0   f ( x + Δ x , y + Δ y ) − f ( x , y ) ρ = ∂ f ∂ x ⋅ cos ⁡ θ + ∂ f ∂ y ⋅ sin ⁡ θ = { ∂ f ∂ x , ∂ f ∂ y } ⋅ ( cos ⁡ θ , sin ⁡ θ ) = ∣ g r a d f ( x , y ) ∣ cos ⁡ ( g r a d f ( 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)=xfcosθ+yfsinθ={
xf,yf}
(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.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187060.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 企业网站制作的决定因素「建议收藏」

    企业网站制作的决定因素「建议收藏」企业在进行网站建站的过程中要需要很多网站相关行的内容,如何建站?我们从哪些方面将网站建设好呢?现在只要懂网页三剑客,有一台电脑、懂点技术就可以做网站了,面对现在参差不齐的建站公司,我们方如何选择,哪些因素是我们应关注的?下面就为大家谈谈几点: 因素一:网站的易用性以前找网络公司,做出的网站管理后台功能简单,导致后期维护、修改和扩展困难,甚至只能付费让制作公司维护,有一些公司制作的网站

    2025年6月19日
    6
  • java大数据开发需要掌握什么_大数据要学java吗

    java大数据开发需要掌握什么_大数据要学java吗​​​​​​你想过自己的未来规划吗?java大数据程序员只需要学到技术就行吗?1.如何成为大数据工程师Java开发是IT行业的经典岗位,行业当中存在普遍的需求,Web开发、Android开发、游戏开发等基本上Java语言是主力队伍。而进入大数据时代,Java又在大数据方向上有了用武之地,又该如何进行成长路线规划。在Java程序界流行着一种默认的说法叫黄金5年,也就是一个程序员从入职的时候开始算起,前五年的选择直接影响着整个职业生涯中的职业发展方向和薪资走向。2014年8月,阿里巴巴举办了

    2022年10月19日
    4
  • 7.PyCharm基本使用与常规设置

    7.PyCharm基本使用与常规设置文章目录0.新建Python项目0.1步骤0.2演示1.主题设置1.1步骤1.2演示2.字体大小调整2.1步骤2.2演示3.添加多个解释器3.1步骤3.2演示3.3版本切换0.新建Python项目0.1步骤第一次安装,需要创建一个项目。如果能进入到开发界面请略过。1.NewProject2.选择路径3.选择本地环境–>选择电脑安装的解释器4.取消生成main.py脚本5.create6.进入到开发界面–>close关闭推荐提示0.2演示1.主题设置1

    2022年8月28日
    2
  • Spark Streaming Join「建议收藏」

    Spark Streaming Join「建议收藏」多数据源Join思路多数据源Join大致有以下三种思路:数据源端Join,如Android/IOS客户端在上报用户行为数据时就获取并带上用户基础信息。计算引擎上Join,如用SparkStreaming、Flink做Join。结果端Join,如用HBase/ES做Join,Join键做Rowkey/_id,各字段分别写入列簇、列或field。三种思路各有优劣,使用时注意…

    2022年6月30日
    29
  • Xmind激活码(xmind破解版)

    这个方法我也是找了挺久才找到的,供个人借鉴和使用,但不能用于商业用途!本人的电脑系统是:MicrosoftWindows10家庭中文版一、安装软件压缩包解压后有一个文件“xmind-8-update9-windows.exe”,这是从官网上下载的安装包,没有任何改动,大家可以放心使用。该方法适用这个版本,更新后的版本没测试。二、打开安装路径找到XMind.ini文件用记事本等可以编辑文件的打开该文件在最后一行加上↓-javaagent:C:\ProgramFiles(x86)\XM

    2022年4月17日
    6.2K
  • PhpStorm 2021.2 x64 激活码(已测有效)

    PhpStorm 2021.2 x64 激活码(已测有效),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号