c++用牛顿法开多次根_大白话5分钟带你走进人工智能第21节-牛顿法和L-BFGS求函数最优解...

本文介绍了L-BFGS算法,一种在有限内存中求解函数最优解的方法。首先回顾了牛顿法求根问题,接着详细阐述了牛顿法如何用于求函数的驻点,揭示了其本质是二阶泰勒展开。随后,文章讨论了牛顿法在多元函数中的应用,并引入BFGS算法作为解决Hessian矩阵计算困难的方案。最后,为了节省内存,提出了L-BFGS算法,通过保留有限的历史信息来逼近Hessian矩阵的逆。
摘要由CSDN通过智能技术生成

第二十一节 牛顿法和L-BFGS求函数最优解

这一节中,我们讲解一个新的求函数最优化的方法就是L-BFGS。以下是本节目录。

目录

1-L-BFGS算法简介

2-牛顿法求根问题

3-牛顿法求驻点问题

4-牛顿法求驻点的本质

5-多元函数利用牛顿法求驻点

6-BFGS算法

7-L-BFGS算法


1-L-BFGS算法简介

我们知道算法在计算机中运行的时候是需要很大的内存空间的.就像我们解决函数最优化问题常用的梯度下降,它背后的原理就是依据了泰勒一次展开式.泰勒展开式展开的次数越多,结果越精确,没有使用三阶四阶或者更高阶展开式的原因就是目前硬件内存不足以存储计算过程中演变出来更复杂体积更庞大的矩阵.L-BFGS算法翻译过来就是有限内存中进行BFGS算法,L是limited memory的意思.那算法为什么叫BFGS呢,请看下图:

d4041a90470b7e6f16381ee7ce4fb3e1.png

上图中从左到右依次是Broyden,Fletcher,Goldfarb,Shanno.四位数学家名字的首字母是BFGS,所以算法的名字就叫做BFGS算法.接下来我们就一起来学习BFGS算法的内容。

2-牛顿法求根问题

我们先来回顾下牛顿法求根问题,比如求1元2次方程的根公式为

84aa939978e019a1ec23ec069e8b4588.gif

,我们通常管这种形式的根叫解析根。所谓解析解就是你不用给我具体的值,就是一个公式。3次方程也是有解析解的,但是当函数达到5次方以上,就不好找解析解了,对于这种复杂的函数,很遗憾我们不能找到它的全部根,但是至少有办法找到它的一个根。

我们看一个对于一元函数的例子

a2232acf9580485207abac5201eefbee.gif

对于一个无法解出解析解的函数来说,现在是一元函数,在只有一个x的情况下,我最终想找到x令y=0,即函数的根,怎么找到它?牛顿和另外一个人同时分别发现,假如这个函数是连续可导的,我随机出来一个x1,总能求它在这点x1的导数,导数是一个实数,它是能代表切线的斜率,那么我们就在这个x1点上画一个原函数切线,这个切线一定会与x轴相交,除非特别倒霉,你一步就随机到它的驻点上了,也不用求了,你找的就是驻点。不倒霉的情况下一定会使x1点的切线和x轴有个交点,我们命名为x2。 点完之后,又可以找一下x2对应在函数上的点,再画一条切线找到了x3,这时候相比x1,距离跟的位置来说比较近,然后发现经过有限次数的迭代之后,怎么迭代都不会变化。它还是会产生震荡,经过震荡之后,最终会收敛在某一个点上,而这个点就是函数的根。所以说牛顿法利用几何直觉就是在找到某一个函数与x轴的交点。

我们分析下几何原理:

5618b8c8a176747a618ab31b3025dbda.png

函数本身f(x)也是已知的,那么f(x1)就可以计算。x2是x1切线的位置,我们建立一个关于x2,x1的解析式&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值