研究算法收敛性的意义
Created time: June 25, 2023 6:37 PM
算法的收敛性
指某个算法能否在迭代时间趋于无穷的假设下,最终找到问题的全局最优解。能一次性求解的算法不在收敛讨论范围内。
局部收敛算法:初始值靠近极小点产生的迭代序列才能收敛到 X ∗ X^{*} X∗的算法。
全局收敛算法:初始值在任意位置产生的迭代序列都能收敛到 X ∗ X^{*} X∗的算法。
算法的收敛速度
在数值分析中, 一个收敛序列向其极限逼近的速度称为收敛速度(Rate of convergence). 该概念多用于最优化算法中; 其被定义为一个迭代序列向其局部最优值逼近 (假设计算过程收敛, 并能达到最优值) 的速度, 是评价一个迭代法于该问题中发挥的性能的一个重要指针.
指经过多少次迭代才能得到最优解,收敛性好就指使用较少的迭代次数就可以得到相对精确的值,或是在允许的时间内得到满意的结果。
实用收敛性算法
研究能否收敛
最优解未知,知道的只有迭代点 X k X_{k} Xk。常用中止条件为:
- 两次迭代的绝对误差
- 两次迭代的相对误差
- 梯度模足够小 ∥ ▽ f ( X k + 1 ) ∥ ≤ ϵ \left \| \bigtriangledown f(X_{k+1}) \right \| \le \epsilon ∥▽f(Xk+1)∥≤ϵ ,其中epsilon为给定的一个小值
理论收敛性算法
研究收敛速度(迭代次数, or数量级)
定义:由算法A产生的迭代序列
lim k → ∞ ∥ X k + 1 − X ∗ ∥ ∥ X k − X ∗ ∥ = β \lim_{k \to \infty} \frac{\left \| X_{k+1}-X^{*} \right \| }{\left \|X_{k}-X^{*} \right \| } = \beta k→∞lim∥Xk−X∗ ∥∥Xk+1−X∗∥=β
存在。则:
- 当β=0时,称{XK}具体超线性收敛速度或算法A为超线性收敛;
- 当0<β<1时,称{Xk}具有线性收敛速度,或算法A为线性收敛;
- 当β=1时,称{Xk}具有次线性收敛速度或算法A为次线性收敛。
定义:由算法A产生的迭代序列
lim k → ∞ ∥ X k + 1 − X ∗ ∥ ∥ X k − X ∗ ∥ α = β \lim_{k \to \infty} \frac{\left \| X_{k+1}-X^{*} \right \| }{\left \|X_{k}-X^{*} \right \| ^{\alpha}} = \beta k→∞lim∥Xk−X∗∥α∥Xk+1−X∗∥=β
则称算法是α收敛的,或称算法A所产生的迭代序列{Xk}具有α阶收敛速度。α=1,称算法A为一阶收敛,α=2时为二阶收敛,一般α>1时都称为好算法。