最优化六:牛顿法(牛顿法、拟牛顿法、阻尼牛顿法)

article/2025/8/26 14:44:49

牛顿法将目标函数近似为二阶函数,沿着牛顿方向进行优化(包含了Hession矩阵与负梯度信息)。

阻尼牛顿法在更新参数之前进行了一维搜索确定步长,确保沿着下降的方向优化。

拟牛顿法用常数矩阵近似替代Hession矩阵或Hession矩阵的逆矩阵,不用求偏导与求逆,简化运算。

1 牛顿法

1.1 算法流程

梯度下降法利用了负梯度方向进行迭代,算法如下:

                            

1.2 证明过程

对于最优化问题:

                                                                                           \underset{x}{min}f(x)                                                   (1-1)

对函数f(x)进行二阶泰勒展开得到:

                                                f(x) = f(x_i) + \bigtriangledown ^Tf(x_i)(x-x_i) + \frac{1}{2}(x-x_i)^TA_i(x-x_i)           (1-2)

将函数中的x-x_i看做是变量,令\bigtriangleup x = x- x_i代入(1-2)可以得到:

                                                        \phi(\bigtriangleup x) = f(x_i) + \bigtriangledown ^Tf(x_i)\bigtriangleup x + \frac{1}{2}\bigtriangleup x^TA_i\bigtriangleup x                  (1-3)

求解最优的x使函数f(x)取得最小值,等价于找到最优的\bigtriangleup x使得\phi(\bigtriangleup x)取得最小值。令导数=0即可找到极值点,对(1-3)求导数使其=0得到:

                                                                            \bigtriangledown ^Tf(x_i)+A_i\bigtriangleup x = 0                                          (1-4)

可以得到:

                                                                               x = x_i - A_i^{-1}\bigtriangledown f(x_i)                                         (1-5)

需要逐次迭代可以写为:

                                                                             x_{i+1} = x_i - A_i^{-1}\bigtriangledown f(x_i)                                      (1-6)

1.3 几何理解

梯度下降法搜索方向沿着等高线的法向进行搜索,每次迭代优化方向为梯度方向,即当前点所在等高线的法向。但往往等高线很少是正圆形,这种情况下搜索次数会过多。

牛顿法搜索方向为椭圆中心方向,这个方向也叫做牛顿方向,可以看到更新方程A_i^{-1}\bigtriangledown f(x_i)的组成分为两部分:\bigtriangledown f(x_i)毋庸置疑是负梯度信息,A_i^{-1}包含了该处的曲率(Hession矩阵描述局部曲率)。如下图所示,S^N方向为牛顿方向,S^{-1}为负梯度方向。

                                                             

2 阻尼牛顿法

对于牛顿法,确定了迭代方向之后,迭代步长默认为1,但是这个迭代方向并不一定是朝着函数值下降的方向。可以进行简单判断,对当前迭代的方向与梯度方向进行内积,如果内积为负,则表明迭代方向为下降方向。

当前迭代方向如式(1-6)- A_i^{-1}\bigtriangledown f(x_i),梯度方向\bigtriangledown f(x_i)。二者乘积为:

                                                                        - \bigtriangledown f(x_i)^TA_i^{-1}\bigtriangledown f(x_i)                                       (2-1)

可以看到当且仅当Hession矩阵整定,才满足式(2-1)为负值。

对于牛顿法,当前点的Hession矩阵是正定的,才满足更新方程式下降的,这个限制是非常强的。为了确保每次迭代方向是下降的,提出了阻尼牛顿法,算法如下:

                                          

算法步长计算部分采用一维搜索法。可以看到,阻尼牛顿法相比于牛顿法,在每次参数更新之前,利用一维搜索法计算更新步长,确保优化方向为下降方向。

3 拟牛顿法

3.1 拟牛顿法原理

牛顿法的搜索方向是:

                                                                              d_i = - A_i^{-1}\bigtriangledown f(x_i)                            (3-1)

但是求二阶偏导数并求逆矩阵会带来大量计算,为了避免复杂的运算,拟牛顿法提出了设计矩阵U去近似逆矩阵A_i^{-1}。但是需要满足一定条件。

任意两点梯度之差公式为:(两点函数值之差等于斜率乘以距离)

                                                                 \bigtriangledown f(x_{i+1})-\bigtriangledown f(x_i) = A_i(x_{i+1}-x_i)            (3-2)

可以写成:

                                                              x_{i+1}-x_i=A_i^{-1}(\bigtriangledown f(x_{i+1})-\bigtriangledown f(x_i))            (3-3)

上式为拟牛顿条件。

(1)用于近似的矩阵U一定要正定,因为矩阵U代替了二阶偏导矩阵的功能,由式(2-1)可知需要满足正定。

(2)用于近似的矩阵U一定要满足拟牛顿条件

常用的拟牛顿法有DFP、BFGS,区别在于如何选取替代矩阵U。

3.2 DFP算法

利用矩阵G去替代A_i^{-1},并且每次都需要迭代计算可以得到:(为了便于区别,此处即为矩阵G,与3.1中的U同样)

                                                                         G_{i+1} = G_i + \bigtriangleup G_i                                    (3-4)

DFP算法每次采用两个矩阵去近似\bigtriangleup G_i,即:

                                                                      G_{i+1} = G_i + P_i+Q_i                                  (3-5)

P_i,Q_i待定。令g_i = \bigtriangledown f(x_{i+1} ) - \bigtriangledown f(x_i)3-5左右同时乘以g_i可以得到:

                                                                G_{i+1}g_i= G_ig_i + P_ig_i+Q_ig_i                         (3-6)

为了满足拟牛顿条件(3-3),可以令:

                                                               Q_ig_i = -G_ig_i,P_ig_i = x_{i+1} - x_i                      (3-7)

满足3-7的P_i,Q_i很多,令d_i = x_{i+1} - x_i,可得:

                                                                                P_i = \frac{d_{i}d_i^T}{d_i^Tg_i}

                                                                          Q_i = -\frac{G_ig_ig_i^TG_i}{g_i^TG_ig_i}

3.3 BFGS算法

GFP算法用于近似拟牛顿条件(3-3),BFGS用于近似拟牛顿条件(3-2)。前者用以替代Hession矩阵的逆A_i^{-1},一个用以替代Hession矩阵A_i^{}

用B矩阵代替:

                                                                      B_{i+1} = B_i + P_i+Q_i    

d_i = x_{i+1} - x_i,等式两端乘以d_i以可以得到:

                                                               B_{i+1}d_i= B_id_i + P_id_i+Q_id_i

为了满足拟牛顿条件(3-2)可以令:

                                                                   Q_id_i = -B_id_i,P_id_i =g_i

满足条件的P_i,Q_i如下:

                                                                              P_i = \frac{g_{i}g_i^T}{g_i^Td_i}

                                                                         Q_i = -\frac{B_id_id_i^TB_i}{d_i^TB_id_i}

 


http://chatgpt.dhexx.cn/article/cbDyhbPO.shtml

相关文章

quasi-Newton method 拟牛顿法

拟牛顿法是对牛顿法的改进,在看这一块内容以前,我们先来了解一下什么是 牛顿法。 拟牛顿法是求解非线性优化问题最有效的方法之一。 拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hess…

牛顿法与拟牛顿法

牛顿法 求函数的根 牛顿法的最初提出是用来求解方程的根的。我们假设点 x∗ 为函数 f(x) 的根,那么有 f(x∗)0 。现在我们把函数 f(x) 在点 xk 处一阶泰勒展开有: f(x)f(xk)f′(xk)(x−xk) 那么假设点 xk1 为该方程的根,则有 f(xk1)f(xk)f′…

最优化方法总结——梯度下降法、最速下降法、牛顿法、高斯牛顿法、LM法、拟牛顿法

目录 1 最优化方法的结构 2 常用最优化方法对比分析 3 相关计算公式 1 最优化方法的结构 最优化问题的一般形式为: 其中为决策变量,是目标函数,为约束集或可行域。特别地,如果,则最优化问题成为无约束最优化问题。 …

牛顿法与拟牛顿法学习笔记(二)拟牛顿条件

机器学习算法中经常碰到非线性优化问题,如 Sparse Filtering 算法,其主要工作在于求解一个非线性极小化问题。在具体实现中,大多调用的是成熟的软件包做支撑,其中最常用的一个算法是 L-BFGS。为了解这个算法的数学机理&#xff0c…

牛顿法与拟牛顿法学习笔记(一)牛顿法

机器学习算法中经常碰到非线性优化问题,如 Sparse Filtering 算法,其主要工作在于求解一个非线性极小化问题。在具体实现中,大多调用的是成熟的软件包做支撑,其中最常用的一个算法是 L-BFGS。为了解这个算法的数学机理&#xff0c…

最优化学习 拟牛顿法(Quasi-Newton Method)

拟牛顿法(Quasi-Newton Method) 拟牛顿法(Quasi-Newton Method)得到矩阵 B k 1 B_{k1} Bk1​获取 B k 1 B_{k1} Bk1​和 H k 1 H_{k1} Hk1​DFP方法(Davidon-Fletche Powell)BFGS方法(Broyden-Fletcher-Goldfarb-Shannon)Broyd…

牛顿法与拟牛顿法(含代码实现)

1. 牛顿法 牛顿法(英语:Newton’s method)又称为牛顿-拉弗森方法(英语:Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法。 牛顿法的基本思想是使用函数 f ( x ) {\dis…

拟牛顿法(DFP、BFGS、L-BFGS)

拟牛顿法 一、牛顿法 1.1 基本介绍 牛顿法属于利用一阶和二阶导数的无约束目标最优化方法。基本思想是,在每一次迭代中,以牛顿方向为搜索方向进行更新。牛顿法对目标的可导性更严格,要求二阶可导,有Hesse矩阵求逆的计算复杂的缺…

Quasi-Newton拟牛顿法(共轭方向法)

Quasi-Newton拟牛顿法(共轭方向法) 1. Introduction2. 牛顿法2.1 不能保证收敛2.2 Hessian计算复杂3. 共轭方向法3.1 共轭方向3.2 共轭方向上可以收敛到极小3.3 共轭梯度法得到的是Q上的共轭方向3.4 算法效果4. 拟牛顿法4.1 拟牛顿法构造的是Q的共轭方向4.2 确定Hk - 秩1修正…

BFGS算法

今天,我来讲一种在机器学习中常用到的优化算法,叫做BFGS算法。BFGS算法被认为是数值效果最好的拟牛顿 法,并且具有全局收敛性和超线性收敛速度。那么接下来将会详细讲解。 Contents 1. 什么是拟牛顿法 2. 拟牛顿法原理 3. DFP算法原理 4. BF…

拟牛顿法及其matlab实现

目录 一.前言 二.拟牛顿法的基本思想 三.秩1矫正Hk公式 四.算法步骤 五.代码实现 1.秩1矫正算法 2.目标函数 3.目标函数梯度 4.主函数 六.仿真结果与分析 一.前言 上上上篇文章介绍了牛顿法和修正牛顿法。想看的话可以往后翻。牛顿法有二阶的收敛速度,但He…

InnoDB数据库死锁

目录 场景描述问题分析解决方法延伸:数据库死锁数据库死锁例子 正文 回到顶部 场景描述 在update表的时候出现DeadlockLoserDataAccessException异常 (Deadlock found when trying to get lock; try restarting transaction...)。 回到顶部 问题分析 这个异常并不会…

mysql数据库死锁原因分析

一、死锁模拟复现 1、当前自己电脑的mysql版本8.0.22 2、数据库的隔离级别--可重复读(默认隔离级别) 3、自动提交关闭 4、表结构,age为非唯一索引,对下面整个案例非常重要 5、 1、事务A执行更新操作,更新成功 2、事务…

处理数据库死锁问题

在实际的项目环境中碰到了如下的问题 Microsoft.Data.SqlClient.SqlException (0x80131904): 事务(进程 ID 98)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。 怀疑是因为数据库查询和修改中产生的死锁问题,造成的上述原因…

数据库死锁:原因和解决办法

理解数据库中的死锁 在数据库的上下文中,死锁是指两个或多个事务无法进行的情况,因为每个事务都在等待另一个事务释放资源。这可以类比为事务的循环链,每个事务都在等待链中的下一个事务释放资源。以下是一个死锁场景的视觉表示:…

Java面试必问:死锁(多线程死锁+数据库死锁)

死锁 接下来从几个方面介绍: 多线程死锁多线程死锁解决办法数据库死锁数据库死锁解决办法 多线程死锁是怎么造成的? 多线程锁定同一资源会造成死锁线程池中的任务使用当前线程池也可能出现死锁 参考连接: https://blog.csdn.net/qq_3506…

MySQL数据库死锁了,该怎么办?一文全解最新教程

文章目录 正文死锁的发生为什么会产生死锁?Insert 语句是怎么加行级锁的?1、记录之间加有间隙锁2、遇到唯一键冲突 如何避免死锁? 之前分享过 MySQL 死锁的文章,然后很多读者对「插入意向锁」认识很迷糊。 大家误以为「插入意向锁…

5 分钟理解数据库死锁

图片来源:网络 文章目录 死锁是如何产生的?如何解决并避免死锁总结 🍺知人者智,自知者明。胜人者有力,胜己者强。知足者富,强行者有志。不失其所者久,死而不亡者寿。——老子 大家好&#xff01…

数据库死锁场景

场景一: 单一线程多次进入子事务发生死锁 问题: 线上问题发生了死锁,但通过死锁日志发现一直在等待查询结果。我们使用的数据库是PGsql,默认的隔离级别是“读已提交”,按理来说查询不会加锁,导致一度被带偏…

数据库常见死锁原因及处理

目录 前言什么是死锁死锁产生的四个必要条件 1. 表锁死锁死锁场景解决方案建议 2. 行锁死锁2.1 两个事务分别想拿到对方持有的锁,互相等待,于是产生死锁死锁场景解决方案 2.2 共享锁转换为排他锁死锁场景解决方案 3. INSERT ... ON DUPLICATE KEY UPDATE…