通俗易懂的牛顿下山法详解

**

俗话说:好记性不如烂笔头,通过写文章的方式既可以加深自己的理解,又可以与大家分享,双赢,何乐而不为?

古人陆游又曾说:纸上得来终觉浅,用来形容大学中的知识再合适不过了,方到用时,才有更深刻的理解,才对数学家们的智慧才更加敬佩!

**


回归正题


1、方法概述及演变过程

牛顿迭代法 是一种线性化方法,其基本是想是将非线性方程 f ( x ) = 0 f(x)=0 f(x)=0逐步归结为某种线性方程来求,也是求解 单变量非线性方程 最实用的方法之一,该方法在单根附近二阶收敛。和梯度下降法均属于最优化方法(后面会分析两者的优缺点),但应用时要选用较好的初值 x 0 x_{0} x0 近似才能保证迭代收敛,否则可能会发散(后面会举例说明)。
下山法,顾名思义,就是确保迭代过程中单调递减,即
∣ f ( x k + 1 ) ∣ < ∣ f ( x k ) ∣ 式 ( 1.1 ) |f(x_{k+1})|<|f(x_{k})| \qquad 式(1.1) f(xk+1)<f(xk)(1.1)
将牛顿迭代法与下山法结合起来,得到 牛顿下山法,确保了迭代过程中,稳定收敛。

2、牛顿迭代法

牛顿公式的推导:
设已知方程 f ( x ) = 0 f(x)=0 f(x)=0 有近似根 x k x_{k} xk,且 f ′ ( x k ) ! = 0 f'(x_k) !=0 f(xk)!=0,将函数在点进行一阶泰勒展开,有
f ( x ) ≈ f ( x k ) + f ′ ( x k ) ( x − x k ) 式 ( 2.1 ) f(x)\approx f(x_k)+f'(x_k)(x-x_k) \qquad 式(2.1) f(x)f(xk)+f(xk)(xxk)(2.1)
则方程 f ( x ) = 0 f(x)=0 f(x)=0 可以近似表示为 f ( x k ) + f ′ ( x k ) ( x − x k ) = 0 f(x_k)+f'(x_k)(x-x_k)=0 f(xk)+f(xk)(xxk)=0,这是个线性方程,记其根为 x k + 1 x_{k+1} xk+1,可以推导得到:
x k + 1 = x k − f ( x k ) / f ′ ( x k ) ( k = 0 , 1 , 2...... ) 式 ( 2.2 ) x_{k+1}= x_k - f(x_k)/f'(x_k) \qquad (k = 0,1,2... ...) \qquad式(2.2) xk+1=xkf(xk)/f(xk)(k=0,1,2......)(2.2)
以上就是牛顿公式,是不是比想象中的简单。

牛顿公式的几何解释:
方程 f ( x ) = 0 f(x)=0 f(x)=0 的根 x ∗ x^* x可以解释为曲线 y = f ( x ) y=f(x) y=f(x) x x x轴 的交点的横坐标,如下图所示

在这里插入图片描述 x k x_k xk 是根 x ∗ x^* x的某个近似值,过曲线 y = f ( x ) y=f(x) y=f(x) 上横坐标为 x k x_k xk 的点 P k P_k Pk引切线,并将该切线与 x x x轴的交点的横坐标 x k + 1 x_{k+1} xk+1作为 x ∗ x^* x的新的近似值,可以得到切线方程为(点斜式: y − y 0 = k ( x − x 0 ) y-y_0 = k(x-x_0) yy0=k(xx0)):
y = f ( x k ) + f ′ ( x k ) ( x − x k ) 式 ( 2.3 ) y=f(x_k)+f'(x_k)(x-x_k) \qquad 式(2.3) y=f(xk)+f(xk)(xxk)(2.3)
y = 0 y=0 y=0 这样求得的解即为牛顿公式(式2.2)

收敛过程如下图所示
在这里插入图片描述
牛顿公式的应用
求解 x 2 − C = 0 x^2 - C =0 x2C=0,应用牛顿公式得到:
x k + 1 = x k − ( x 2 − C ) / 2 x x_{k+1} =x_k- (x^2-C)/2x xk+1=xk(x2C)/2x,即 x k + 1 = 1 / 2 ( x k + C / x k ) 式 ( 2.4 ) x_{k+1} =1/2(x_k +C/x_k) \qquad式(2.4) xk+1=1/2(xk+C/xk)(2.4)
实例:求 115 \sqrt{115} 115 ,取初值 x 0 = 10 x_0=10 x0=10 C = 115 C=115 C=115代入 式(2.4) 进行迭代
在这里插入图片描述

3、牛顿下山法

牛顿下山法的起因
在前文中已经说过,牛顿迭代法在应用时要选用较好的初值 x 0 x_{0} x0 近似才能保证迭代收敛,否则可能会发散,现在进行举例说明:
例如,用牛顿法求解方程 x 3 − x − 1 = 0 x^3-x-1=0 x3x1=0 x = 1.5 x=1.5 x=1.5 附近的一个根 x ∗ x^* x.
在这里插入图片描述根据上面的例子可以看出,不同的初值,会得到不同的结果,在某些情况下牛顿迭代反而会导致 根的偏离,这就是牛顿下山法的因。

牛顿下山法的产生
为了防止牛顿迭代发散,对迭代过程再附加一项要求,即使其具有单调性:加入式(1.1)
∣ f ( x k + 1 ) ∣ < ∣ f ( x k ) ∣ 式 ( 3.1 ) |f(x_{k+1})|<|f(x_{k})| \qquad 式(3.1) f(xk+1)<f(xk)(3.1)
保证了牛顿迭代快速迭代的同时,具有收敛性,那么怎么使牛顿迭代公式能够满足 式(1.1)呢?数学家们的智慧是令人折服的,具体怎么做呢?是不是让迭代得到的 x k + 1 与 x k x_{k+1} 与 x_k xk+1xk 的值差别更小(迭代更加精细)就会好一点呢?事实上就是这么做的的。
令:
x k + 1 ′ = x k − f ( x k ) f ′ ( x k ) 式 ( 3.2 ) x'_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)}\qquad 式(3.2) xk+1=xkf(xk)f(xk)(3.2)
x k + 1 ′ x'_{k+1} xk+1 x k x_{k} xk 进行加权平均,得
x k + 1 = λ x k + 1 ′ + ( 1 − λ ) x k 式 ( 3.3 ) x_{k+1} = \lambda x'_{k+1}+(1-\lambda)x_k\qquad 式(3.3) xk+1=λxk+1+(1λ)xk(3.3)
将式(3.2)代入式(3.3)中,得
x k + 1 = x k − λ f ( x k ) f ′ ( x k ) ( 0 < λ < = 1 ) 式 ( 3.4 ) x_{k+1} = x_k - \lambda \frac{f(x_k)}{f'(x_k)}\qquad(0<\lambda<=1) \qquad 式(3.4) xk+1=xkλf(xk)f(xk)(0<λ<=1)(3.4)
得到的式(3.4)即牛顿下山公式,牛顿下山法由此产生,其中 λ \lambda λ为下山因子。
选择下山因子时从 λ = 1 \lambda =1 λ=1开始,依次减半进行试算( λ = 1 / 2 、 1 / 4 、 1 / 8 、 . . . \lambda =1/2、1/4、1/8、... λ=1/21/41/8...),直到满足下降条件式(3.1)为止。

牛顿下山法的应用
继续解方程 x 3 − x − 1 = 0 x^3-x-1=0 x3x1=0 x 0 = 0.6 x_0=0.6 x0=0.6 附近的一个根 x ∗ x^* x.
在这里插入图片描述

4、牛顿下山法和梯度下降法区别

对于牛顿下山法求极值的的疑问?
牛顿下山法用于求解函数零点,而梯度下降法用于求解函数极值,它们能有什么联系区别呢?一开始我也是这样觉得的,好像搭不上边。。。。。。
确实如此,牛顿法最初的作用是用来求解函数的零点,但换个思路,函数的极值是不是一定在函数导数的零点的地方呢?(可能是极大值、极小值、驻点),是不是拨开云雾,豁然开朗,嘿嘿,数学的魅力可能就在于此!
所以牛顿法求函数极小值只需要判断其导函数零点左右两边的正负号即可

区别
从收敛速度上看 ,牛顿法是二阶收敛,梯度下降是一阶收敛,前者收敛速度更快。梯度法仅考虑方向,牛顿法不但考虑了方向还兼顾了步长的大小,其对步长的估计使用的是二阶逼近。

牛顿法的优缺点总结:
优点:二阶收敛(对于求极值来说),收敛速度快。
缺点:当变量为多维向量时,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂;不能直接求解得到最小值(需要判断左右两边)

梯度下降法优缺点总结
优点:简单粗暴,计算量小。
缺点:在远离极小值的地方下降很快,而在靠近极小值的地方下降很慢。

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,常用于分类和回归问题。其原理相对来说较为复杂,但可以通过以下通俗易懂的方式进行解释: SVM的基本思想是找到一个最佳的超平面将不同类别的数据完全分开。换句话说,我们要找到一个决策边界,使得属于某一类的样本点都在一个侧面,而属于另一类的样本点则在另一侧面。 为了找到这个最佳的超平面,SVM引入了支持向量的概念。支持向量是离决策边界最近的那些样本点,它们对于决策边界的确定起到关键作用。这些支持向量点到决策边界的距离被称为间隔,我们的目标是找到最大化间隔的决策边界。 但是,在实际问题中,数据往往无完全线性分开。为解决这个问题,SVM引入了核函数的概念。核函数将数据从原始空间映射到更高维的特征空间,在特征空间中,原本线性不可分的问题可能变得线性可分。 基于核函数的SVM即通过在特征空间中寻找最佳的超平面来解决非线性问题。通过设置不同的核函数,我们可以将数据映射到不同的特征空间,并得到不同的决策边界。 SVM的训练过程可以通过求解一个凸优化问题来实现。优化问题的目标是最大化间隔,同时要求决策边界的分类结果尽量准确。通过使用相关的数学方,可以求解出最优的超平面以及对应的支持向量。 总之,SVM是一种通过找到最佳的超平面来实现分类的机器学习算法。它的原理简单概括为找到一条决策边界,使得离这条边界最近的样本点都被正确分类,并且间隔最大化。通过引入核函数,SVM也可以解决非线性分类问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值