数值优化(三)——线搜索最速梯度下降

2023-10-22 21:10

本文主要是介绍数值优化(三)——线搜索最速梯度下降,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

 

1. 无约束优化

2. step size(步长)选择策略

 3.结语


 

1. 无约束优化

        首先,先回顾一下函数的无约束优化。无约束优化,就是不存在inequality或者equality constraint的情况,minimize找到最优的solution。

994bd61feaaa48f181081c985101cda6.png

        所谓最初梯度下降,其实就是利用函数的一阶信息局部地找一个让函数值下降最快的方向,然后沿着方向去不断地逼近局部极小值。

4c17c707aa6e43b2b170758f6b744f07.png7248d9247dc147d78aec37e38eae1487.png

        当x越趋于最优解时,更新值越小,它会慢慢地收敛。而如何去选择step size?这是一个值得研究的问题。

2. step size(步长)选择策略

4149f4cf9eb640449b2ebc9d76959c53.png

        (一)常数步长

        步长太大会导致发散和震荡。为了收敛稳定性,我们可以将固定的步长设的很小,但我们需要调用太多次f(x)和函数的梯度,会浪费很多时间。当步长比较智能时,会快速收敛。“just right”是一个很难实现的情况。因此,常数步长不是一个智能的策略。

061c1cef7e4a44bda1bb2241398e0ac0.png

        (二)逐渐减少步长

        Diminishing step sizes方法主要是保证步长逐渐变小,同时,变化幅度还不会特别快。这里需要注意的是,次梯度算法并不像梯度下降一样,可以在每一次迭代过程中自适应的计算此次步长(adaptively computed),而是事先设定好的(pre-specified)。

        此策略适用性很强,对于非光滑函数和梯度有噪声的情况下,仍可以收敛到最优解附近,但收敛速率较慢。此策略适用于函数先天条件很差,对收敛速率要求不高的情况。

        (三)精确搜索

        exact line search涉及一个权衡问题,想要得到精准解是一个困难的任务,我们通过迭代的方法来求解f的最优解,在每次迭代中都要解决这样一个任务是很困难的,而且即使计算得到了精准解,这也只是第k次迭代的最优解,对于整个优化问题来说并非关键的。

        算法总的效率取决于迭代次数和每次迭代的代价,求解精确解花费了巨大的代价,但可能迭代次数减少的不多,那就得不偿失了。因此会选择花费很少的代价寻找一个差不多的步长,使得目标函数能有充分的下降,虽然迭代次数会多一点,但总的代价反而更少。此策略计算开销较大,由于计算复杂度在实际应用中已很少使用。

        (四)不精确搜索

        inexact line search的搜索条件如下:

0bc29d79225249e5af6414a507a95db5.png

        既然不要求得到精确的步长,只需要使目标函数充分下降,那么前进一步至少比现在强,但这样够充分吗?显然是不行的。

c28d2154c31348f98d7ed8067635a500.png

 3.结语

        更少的迭代并不保证更高的效率。线搜索的缺点也很明显,由于梯度与等高线是垂直的,当条件数很大或者曲率很大时,等高线几乎平行,迭代次数会很多。当条件数很小时,会导致性能下降。要更快地收敛,曲率是必不可少的。

 

 

 

 

这篇关于数值优化(三)——线搜索最速梯度下降的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/263593

相关文章

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

SpringBoot中HTTP连接池的配置与优化

《SpringBoot中HTTP连接池的配置与优化》这篇文章主要为大家详细介绍了SpringBoot中HTTP连接池的配置与优化的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、HTTP连接池的核心价值二、Spring Boot集成方案方案1:Apache HttpCl

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

MySQL中like模糊查询的优化方案

《MySQL中like模糊查询的优化方案》在MySQL中,like模糊查询是一种常用的查询方式,但在某些情况下可能会导致性能问题,本文将介绍八种优化MySQL中like模糊查询的方法,需要的朋友可以参... 目录1. 避免以通配符开头的查询2. 使用全文索引(Full-text Index)3. 使用前缀索

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.