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

2023-11-08

牛顿法将目标函数近似为二阶函数,沿着牛顿方向进行优化(包含了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}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最优化六:牛顿法(牛顿法、拟牛顿法、阻尼牛顿法) 的相关文章

随机推荐

  • 3 域名正则_网站更换域名301后排名会有影响吗?301应该怎么用?

    在SEO优化过程中 很多小伙伴都经常会遇到需要301跳转的情况 例如网站调整或者网站改版的时候 所以很多人都会担心同样一个问题 自己网站想更换域名或者目录发生了变化 设置301跳转后 对目前SEO优化的效果会不会有影响 排名会不会掉得很严重
  • 给程序员老公20年后的一封信

    今天是2019年6月22日 对于钱多 话少 死得早的咱们程序员来说 20年后是否还生活在这世上呢 我会尽量活的久一点 因为你常说除了编程你什么都不会 而我的很多技能都是专业水平 可以用来谋生 你要靠我养老 额 原来 得一人终老 是这个意思
  • AI语音合成软件免费的有哪些?常用的语音合成软件

    近年来 短视频作为一种新兴的互联网内容传播形式 逐渐获得各大平台和粉丝的青睐 其时长简短并适合在移动状态和休闲状态下观看的特点 将产品受众面拓展到整体网民的88 3 上至老年人 下至小孩子 都多多少少可以自己创作一些短视频作品以供娱乐 那么
  • Collectors.summingDouble()

    Collectors summingDouble Java 8 流的新类 java util stream Collectors 实现了 java util stream Collector 接口 同时又提供了大量的方法对流 stream
  • 顺序队列和链队的定义和基本操作(c++实现)

    循环队列 include
  • 2022年最新前端面试题(大前端时代来临卷起来吧小伙子们..持续维护走到哪记到哪)

    目录 css经典高频面试题 前端核心手写面试题看你的核心扎实不扎实 js部分面试题 js的数据类型 关于数据类型相关的 基本数据类型 ES5的5种 Null undefined Boolean Number String ES6新增 Sym
  • 32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

    导言 今年似乎因为疫情影响 时间过得特别快 对于需要跳槽换工作的人来 更觉得有些突然 似乎金三银四和金九银四还没开始准备好 就匆匆过去 加上今年的大环境不佳 所以大部分的人在今年的招聘旺季都没有收获到好的结果 今天分享的主题则是由 一位阿里
  • sqli-labs通关攻略38-53[Stacked Injections]

    Stacked Injections 文章目录 Stacked Injections less 38 less 39 less 40 less 41 less 42 less 43 less 44 less 45 less 46 less
  • Vue 源码之Vue视图更新原理【一】

    写在前面 Vue React 可以说是这几年改变前端格局的大杀器 这部分更加高级的框架的出现 狠狠地推进了前端工程化的进度 也使前端能够更加快速 更加规范地完成业务的开发 秉承着底层架构者一贯遵循的执念 把复杂留给自己 无论是Vue 还是
  • picodet 详解

    picodet 详解 backbone ESNet picodet 详解 Neck CSP PAN
  • C++结构体的使用

    一 结构体指针 定义学生结构体 struct Student 成员列表 string name 年龄 int age 分数 int score 1 创建结构体变量 Student s 张三 18 100 2 通过指针指向结构体变量 因为变量
  • DC/DC:闭环控制的降压(Buck)变换电路原理设计及实验仿真

    在各种电力电子装置电源应用中或多或少地存在直流电源变换器 为保证直流输出电压值恒定在负载需要地电压范围内 一般需要设置自动调整单元 以保证在输入电压或者负载发生变换时 其输出电压能快速调整到规定的设定值 降压 Buck 变换电路原理图如图所
  • pandas异常值检测与处理

    关注公众号FF工作室 回复pandas异常值检测与处理 获取数据 1 异常值检测 1 1 标准差法 outlier gt x n 或outlier
  • 如何让移动硬盘在Mac和Windows上通用使用

    刚入手了一块新的移动硬盘 Mac电脑插上却发现一片空白无法使用 这是什么情况呢 原来一般一块新的大容量移动硬盘刚入手时 默认是NTFS格式 这是Windows的一种特有硬盘格式 但是Mac上只能读取不能写入 Mac和Windows上通用的格
  • Python 基础知识8 循环

    循环语句关键知识 while flag True num 0 while flag and num lt 9 print meng num 1 死循环 while True print ling range 函数 for i in rang
  • R语言填坑

    最近在做一个数据挖掘的算法 用到了R语言 对遇到的一些坑 基础知识 做一个简单记录 文件编码问题 脚本写完之后保存可以选择UTF 8或者GB2313 可以解决中文乱码问题 同样 读文件的时候如果出现读不出来的情况 记得加一个 encodin
  • linux查看剩余信息保护,linux系统日常管理----监控系统的状态(一)

    监控系统的状态 1 w查看当前系统的负载 相信所有的linux管理员最常用的命令就是这个 w 了 该命令显示的信息还是蛮丰富的 第一行从左面开始显示的信息依次为 时间 系统运行时间 登录用户数 平均负载 第二行开始以及下面所有的行 告诉我们
  • 西门子S7-1200控制伺服/步进电机方法与接线(全)

    西门子S7 1200控制伺服 步进电机方法与接线 全 伺服 步进电机在非标自动化控制中十分常用 但作者发现在各类开源网站上很少有人做西门子1200PLC控制伺服 步进电机的教程 于是今天想着跟大家分享一下 本文共分为一下几个四个内容 文章目
  • IDEA 如何搭建python环境

    首先打开idea 首先是file gt setting 然后点击Plugins 然后在Marketplace里面搜索python 然后点击Installed 最后再重启一下IDEA
  • 最优化六:牛顿法(牛顿法、拟牛顿法、阻尼牛顿法)

    牛顿法将目标函数近似为二阶函数 沿着牛顿方向进行优化 包含了Hession矩阵与负梯度信息 阻尼牛顿法在更新参数之前进行了一维搜索确定步长 确保沿着下降的方向优化 拟牛顿法用常数矩阵近似替代Hession矩阵或Hession矩阵的逆矩阵 不