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

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

相关文章

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

C# ComboBox下拉框实现搜索方式

《C#ComboBox下拉框实现搜索方式》文章介绍了如何在加载窗口时实现一个功能,并在ComboBox下拉框中添加键盘事件以实现搜索功能,由于数据不方便公开,作者表示理解并希望得到大家的指教... 目录C# ComboBox下拉框实现搜索步骤一步骤二步骤三总结C# ComboBox下拉框实现搜索步骤一这