最近在看资料时,遇到了这样的说法“某某算法具有收敛快的优点”,于是便有点疑惑:收敛不是函数或者数列才有的概念吗?用到算法上是代表什么意思呢?遂查阅资料,将一点理解记录如下。

 

算法收敛性

算法的收敛性就是指某个算法能否在迭代时间趋于无穷的假设下,最终找到问题的全局最优解。这里有一点要明确:算法收敛性是迭代法中的一个概念,所以主要针对跟迭代相关的算法,如进化算法。对于能够一次求解的直接法,就不在算法收敛的讨论范围之内了。

 

算法收敛速度

知道了算法收敛性的含义,再来理解算法收敛速度就比较容易了。百度百科对算法收敛速度是这样解释的:

数值分析中, 一个收敛序列向其极限逼近的速度称为收敛速度(Rate of convergence). 该概念多用于最优化算法中; 其被定义为一个迭代序列向其局部最优值逼近 (假设计算过程收敛, 并能达到最优值) 的速度, 是评价一个迭代法于该问题中发挥的性能的一个重要指针。

说白了,算法收敛速度就是指算法需要经过多少次迭代才能得到最优解。很明显,有些算法的收敛性好,有些算法的收敛性差,所谓收敛性好就是收敛得快,快速收敛的意义就是使用较少的迭代次数便可得到相对精确的值,或者说是在允许的时间内得到满意结果。因此,能以较快速度收敛于最优解的算法,才能称得上一个好算法。

 

最后再贴一段关于收敛性的论述来帮助理解:

仅仅知道算法是收敛的还远远不够,收敛性的结论是建立在无穷迭代时间基础上的,而实际应用中的计算迭代时间是有限的。收敛性研究只能回答进化算法在迭代无穷次后最终会不会找到全局最优解,而不能回答算法实际究竟要花多长时间(迭代多少次)才能找到最优解,很难在实践中用于指导算法设计和改进。

 

关于如何证明一个算法的收敛性以及对收敛速度的分析,有兴趣的可以看以下资料:

1.https://xueshu.baidu.com/usercenter/paper/show?paperid=f70e65d2b08ddb59a2602e9ff1593033&site=xueshu_se

2.https://kns.cnki.net/kcms/detail/detail.aspx?dbcode=CDFD&dbname=CDFD1214&filename=1013320373.nh&v=Mdg9jxBMyFAAVIXJAHoc4RLlqgHadtKNiNI9aJBOO6JygAqnN6SovcLK56hCzkrY

3.https://blog.csdn.net/q__y__L/article/details/51834694?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-2&spm=1001.2101.3001.4242

 

参考资料:

  1. https://kns.cnki.net/kcms/detail/detail.aspx?dbcode=CDFD&dbname=CDFD1214&filename=1013320373.nh&v=Mdg9jxBMyFAAVIXJAHoc4RLlqgHadtKNiNI9aJBOO6JygAqnN6SovcLK56hCzkrY
  2. https://baike.baidu.com/item/%E6%94%B6%E6%95%9B%E9%80%9F%E5%BA%A6/8853577?fr=aladdin
  3. https://bbs.csdn.net/topics/360149144?utm_medium=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-3.control
  4. https://blog.csdn.net/q__y__L/article/details/51834694?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-2&spm=1001.2101.3001.4242

 

几篇有关算法收敛性的文献分享:链接:https://pan.baidu.com/s/1QkyiKEzlFF7LF9JsaQOG7w      提取码:egef 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐