机器学习——牛顿法详解

article/2025/9/14 4:32:19

我们现在学习的机器学习算法,大部分算法的本质都是建立优化模型,通过特定的最优化算法对目标函数(或损失函数)进行优化,通过训练集和测试集选择出最好的模型,所以,选择合适的最优化算法是非常重要的。常见的最优化方法有梯度下降法、牛顿法和拟牛顿法、共轭梯度法,拉格朗日乘数法(约束优化)等等。

本期的主题是牛顿法的详解,为了更好的理解,会简明的说一下梯度下降法的内容。

一、梯度下降法

梯度下降法的本质是,用梯度来进行迭代的方法。即用当前位置的负梯度方向作为搜索方向,可以以理解为切线或者切平面的反方向。因为是切线(切平面),所以此方向为当前位置的最快下降方向。越接近目标值,步长(深度学习中也叫学习率)越小,前进速度越慢。

步长是梯度下降法性能的很重要的因素,步长小,效率低;步长大,容易出现震荡现象。那么当样本数量很大时,可想而知这种迭代速度会非常慢,因此梯度下降法衍生出了随机梯度下降法,批梯度下降法,小批梯度下降法。

在求解机器学习模型参数时,梯度下降法是很常用的方法。当目标函数为凸函数时,局部最优点即为全面据最优点,这也是为什么凸函数在机器学习最优化领域受欢迎的原因 。

二、牛顿法

牛顿法主要有两个应用方向:1、求解方程根的问题。2、目标函数最优化求解

先详细介绍牛顿法的原理,再具体介绍牛顿法的两个应用方向。

前面说过,梯度下降法是用梯度来建立迭代关系式的方法,而牛顿法则是用切线来建立迭代关系式的算法(所以也叫切线法)。牛顿法的迭代过程与梯度下降法有相似之处,只不过是用切线与x轴的交点来作为下一轮迭代的起点,如下图所示。第一次迭代是从f(x0)开始,沿着切线的相反方向一直前进到与x轴的交点x1处。第二次迭代从点x1的值f(x1)开始,前进到f(x1)处的切线与x轴的交点x2处。如此持续进行,逐步逼近x*点。需要注意的是,牛顿法是用来求解方程的,因此f(x)与x轴必须有交点x*,这是牛顿法应用的前提。

上述求切线交点的过程,也可以看作是近似的泰勒展开过程。把f(x)在x0处展开成泰勒级数f(x)=f(x0)+(x-x0)f'(x0)+......。在x0附近出取线性部分g(x)作为f(x)的近似,将g(x)与x轴的交点近似作为f(x)与x轴的交点,通过一次次近似来逼近方程的根的过程。所以,牛顿法的本质是泰勒展开。

1、用牛顿法求方程的根

一阶泰勒公式:f(x) = f(x0)+(x-x0)f'(x0)+o( (x-x0)^2 )

取线性部分

-------->x(1)=x(0)-f(x(0))/f’(x(0))

-------->x(n+1)=x(n)-f(x(n))/f'(x(n))

Until…

可以看出,在求解方程根时,只用到了一阶收敛。而在解决最优化问题中,二阶收敛才是牛顿法的精髓所在。

2、目标函数用于最优化求解

在机器学习领域中,牛顿法常用来解极值问题。牛顿法最初时为了求解方程的根,不能直接用来求极值。但是,函数极值的一阶导数为0,因此,可以用牛顿法来求解函数一阶导数为0的方程的根,得到极值点。

对于简单的二维函数而言:

二阶泰勒展开:f(x) = f(x0)+(x-x0)f'(x0)+1/2f''(x0)(x-x0)^2+o( (x-x0)^3 )

取线性部分

--------->x(n+1)=xn-f'(x)/f''(x),n=0,1,2….

而对于高维函数而言,同样的道理。

此时f'(xn)为Jacobi(雅克比)矩阵:。f''(xn)为Hessian矩阵:

牛顿法的精髓就是二阶收敛,不仅利用了损失函数的一阶偏导数,也用到了损失函数的二阶偏导数,即梯度变化的趋势,因此比梯度下降法更快的确定合适的搜索方向,具有二阶收敛速度。通俗点来说,梯度下降法时选择下一步能迈出的最大步长,而牛顿法是在选择下一步能迈出的最大步长的基础上,同时也考虑了下下步的选择方向。也就是牛顿法更加具有大局观(如下图)。

注:红色为牛顿法,绿色为梯度下降法

 

牛顿法公式(高维):xn+1=xn−[Hf(xn)]^−1*∇f(xn),  n=0,1,2….

三、用Rosenbrock函数来测试牛顿法的性能

在数学最优化问题中,Rosenbrock函数是一个用来测试最优化算法性能的非凸函数,也称为香蕉函数。

f(x,y)=(1-x^2)+100(y-x^2)^2.(100可变,但不影响测试)

Rosenbrock函数的每个等高线大致呈抛物线形,其全域最小值也位在抛物线形的山谷中(香蕉型山谷)。很容易找到这个山谷,但是,因为山谷内的值变化不大,所以迭代到最优点是很有难度的。

Rosenbrock山谷

可以看出,我们可以很明显的找到谷底所在山谷。

牛顿法用了6次迭代,而相同的起始位置梯度下降法要迭代1000次左右,当然,批梯度和随机梯度效率要高一些。

四、牛顿法的优缺点

优点:

1、二阶收敛,收敛效率高。

2、海森矩阵的逆在迭代过程中不断减小,所以步长也逐渐减小。

缺点:

1、对目标函数有较为严格要求函数必须具有连续的一、二阶偏导数,海森矩阵必须正定。

2、计算相当相当相当复杂。

五、牛顿法在非正定Hessian矩阵的使用

那么问题来了,对于Hessian非正定矩阵来说,牛顿法一定不能使用吗。

答案是不一定的,这就涉及到牛顿法的实际使用情况。刚才我们说的那些是理想下的情况,而在现实中我们使用牛顿法时,尤其是三维四维这种高维度下的情况,求Hessian矩阵的逆矩阵太复杂了。为了在不影响精确度的情况下尽可能简化运算,我们用雅可比矩阵乘以雅可比矩阵的转置来代替Hessian矩阵具体推导过程如下。(电脑没有这些符号,直接手写了)。

(重点!)

推导过程不需要记住,掌握最后的方法就可以。

六、拟牛顿法

虽然非正定矩阵的问题解决了,但即使这样,雅可比矩阵乘以雅可比矩阵的转置计算仍然复杂。所以又有人提出了牛顿法的改进方法——拟牛顿法。它的本质和牛顿法相同,不同的是使用一个正定矩阵来近似Hessian矩阵的逆矩阵,从而简化了运算的复杂度。拟牛顿法在20世纪50年代由一位美国科学家提出,当时极大的推动了非线性优化这一学科的发展,即使在今天,拟牛顿法也是非线性优化领域最有效的方法之一。

有时间会再出一篇拟牛顿法详解。

 

 

 

 

 

 

 

 

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/2M1ihkfi.shtml

相关文章

牛顿法的简单介绍及Matlab实现

目录 牛顿法原理简介使用牛顿法求解一元方程使用牛顿法求解平面定位问题参考文献 牛顿法原理简介 牛顿法的原理是利用函数 f ( x ) f(x) f(x) 的泰勒级数的前几项来寻找方程 f ( x ) 0 f(x)0 f(x)0 的根。 f ( x ) f(x) f(x)在 x 0 x_0 x0​处的一阶泰勒展开 f ( x ) f ( x…

牛顿法介绍

目录 牛顿法介绍推导海森矩阵、泰勒公式、梯度下降法牛顿法特点 牛顿法介绍 首先牛顿法是求解函数值为0时的自变量取值的方法。如果你看不懂这句没关系,继续往下看就好。利用牛顿法求解目标函数的最小值其实是转化成求使目标函数的一阶导为0的参数值。这一转换的理…

牛顿法,障碍法,内点法

基于对数障碍函数法的内点法 牛顿法(Newton Method)对数障碍函数方法一个简单的例子python代码 牛顿法(Newton Method) 牛顿法与梯度下降法,最速下降法等优化算法类似,是基于梯度的方法。给定一个二次可微的…

牛顿法python 实现

有用请点赞,没用请差评。 欢迎分享本文,转载请保留出处。 牛顿法也是求解无约束最优化问题的常用方法,有收敛速度快的优点。牛顿法是迭代算法,每一步需要求解目标函数的海赛矩阵的逆矩阵。同时还有拟牛顿法、阻尼牛顿法、修正牛顿…

牛顿法及牛顿法求解优化问题

牛顿法及牛顿法求解优化问题 牛顿法 1. 由来和基本思想 牛顿法也叫牛顿迭代法和牛顿-拉夫森法 1. 牛顿迭代法:因为牛顿法的是通过迭代来实现的,每次运算都让结果比之前好一点。哪怕只好一点点,在很多次迭代之后也可以得到一个很好的结果甚…

最优化-牛顿法(Newton)

转:https://blog.csdn.net/qq_36330643/article/details/78003952 平时经常看到牛顿法怎样怎样,一直不得要领,今天下午查了一下维基百科,写写我的认识,很多地方是直观理解,并没有严谨的证明。在我看来&…

高斯牛顿法详解

一、高斯牛顿法发展历程 1、从上倒下为高斯牛顿法的前世今生已经未来的演化: 最速下降法(一阶梯度法) 牛顿法(二阶梯度法) 高斯牛顿法 列文伯格法 马夸尔特法 二、问题的引出 1、考虑如下优化目标函数:…

牛顿法,高斯-牛顿法

牛顿法(Newton’s method) 假如已知函数 f ( x ) f(x) f(x),想要求 f ( x ) 0 f(x)0 f(x)0 的解(或者叫根)。 牛顿法(Newton’s method)大致的思想是: (1&#xff0…

优化算法——牛顿法(Newton Method)

一、牛顿法概述 除了前面说的梯度下降法,牛顿法也是机器学习中用的比较多的一种优化算法。牛顿法的基本思想是利用迭代点 处的一阶导数(梯度)和二阶导数(Hessen矩阵)对目标函数进行二次函数近似,然后把二次模型的极小点作为新的迭代点,并不断…

牛顿法(Newton‘s method)求函数极小值

牛顿法一般指牛顿迭代法,也叫做牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),其最初的作用是用来求解函数的零点,但是也可以像梯度下降方法一样,以迭代的形式来求函数的极值。而事实上,牛顿…

牛顿法(Newton Method)的原理和实现步骤

牛顿法的法的目的 牛顿法不仅可以用来求解函数的极值问题,还可以用来求解方程的根,二者在本质上是一个问题,因为求解函数极值的思路是寻找导数为0的点,这就是求解方程。 牛顿法的法的原理 一元函数的情况 根据一元函数的泰勒展…

牛顿法

《牛顿法》   牛顿法(Newton method)和拟牛顿法(quasi Newton method)是求解无约束最优化问题的常用方法,有收敛速度快的优点。牛顿法是迭代算法,每一步都需求解目标函数的海塞矩阵(Hessian …

使用Andriod Device Moniter时用正则表达式筛选指定日志

有时候我们想过滤出指定的一个或者几个日志,又或者屏蔽掉一些无意义的日志,那么可以创建一个筛选,在此页面的by Log Tag填写如下格式的表达式: 过滤出指定tag的日志信息:^(?:tag1|tag2|tag3) 忽略指定tag的日志信息…

使用Memberane Moniter监控HTTP SOAP requests

Memberane Moniter 使用方法见左侧Documentation 此工具可以监控到每一次发生在指定端口的http请求或者soap请求,如图所示。 但是个人认为仍然有几个问题: 1.不能真正的监控8080端口,我个人认为他的原理是类似于复制了一遍8080端口的内容&am…

linux( sudo bmon ) 流量监控工具----类似于 moniter interface

sudo bmon monitor bandwidth interface eth0 &#xff08;vyos 把 bmon 的linux 改为 了 moniter interface 了&#xff0c;底层还是调用的 bmon&#xff09; Linux:~$ sudo bmon -h bmon 3.5 Copyright (C) 2001-2013 by Thomas Graf <tgrafsuug.ch> Copyright (C) 2…

Android Device Moniter部分问题的解决办法:

一、Android Device Moniter中File explorer显示空白的问题不显示内容&#xff1a; 解决办法&#xff1a; 如上图所示 1.Tools->Android->Enable ADB Integration处于关闭状态。 2.重新打开Android Device Moniter。 3.若还处于空白状态&#xff0c;则极有可能是ja…

操作系统锁的实现方法有哪几种_深入理解多线程(四)——Moniter的实现原理...

本文是《深入理解多线程系列文章》的第四篇。点击查看原文&#xff0c;阅读该系列所有文章。 在深入理解多线程(一)——Synchronized的实现原理中介绍过关于Synchronize的实现原理&#xff0c;无论是同步方法还是同步代码块&#xff0c;无论是ACC_SYNCHRONIZED还是monitorenter…

操作系统锁的实现方法有哪几种_深入理解多线程(四)—— Moniter的实现原理

文章来源&#xff1a;深入理解多线程&#xff08;四&#xff09;—— Moniter的实现原理 原文作者&#xff1a;Hollis 来源平台&#xff1a;微信公众号 在深入理解多线程&#xff08;一&#xff09;——Synchronized的实现原理 中介绍过关于Synchronize的实现原理&#xff0c;无…

【深入理解多线程】 Moniter的实现原理(四)

在深入理解多线程&#xff08;一&#xff09;——Synchronized的实现原理中介绍过关于Synchronize的实现原理&#xff0c;无论是同步方法还是同步代码块&#xff0c;无论是ACC_SYNCHRONIZED还是monitorenter、monitorexit都是基于Monitor实现的&#xff0c;那么这篇来介绍下什么…

synchronized实现原理之---Moniter的实现原理

上一篇synchronized的实现原理提到了moniter&#xff0c;当时没有介绍它。 无论是同步方法还是同步代码块&#xff0c;无论是ACC_SYNCHRONIZED还是monitorenter、monitorexit都是基于Monitor实现的&#xff0c;那么这篇来介绍下什么是Monitor。 操作系统中的管程 如果你在大…