版权归原作者所有,如有侵权,请联系我们

[科普中国]-算法优化

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

简介

算法优化是指对算法的有关性能进行优化,如时间复杂度、空间复杂度、正确性、健壮性。大数据时代到来,算法要处理数据的数量级也越来越大以及处理问题的场景千变万化。为了增强算法的处理问题的能力,对算法进行优化是必不可少的。算法优化一般是对算法结构和收敛性进行优化。

算法的基本特征一个算法应该具有以下五个重要的特征:

有穷性(Finiteness)

算法的有穷性是指算法必须能在执行有限个步骤之后终止;

确切性(Definiteness)

算法的每一步骤必须有确切的定义;

输入项(Input)

一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;

输出项(Output)

一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;

可行性(Effectiveness)

算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。

算法常见评定标准同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。

时间复杂度算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。

T(n)=Ο(f(n))

因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。

空间复杂度算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。

正确性算法的正确性是评价一个算法优劣的最重要的标准。

可读性算法的可读性是指一个算法可供人们阅读的容易程度。

健壮性健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性1。

泛化能力泛化能力(generalization ability)是指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据对背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。通常期望经训练样本训练的网络具有较强的泛化能力,也就是对新输入给出合理响应的能力。应当指出并非训练的次数越多越能得到正确的输入输出映射关系。网络的性能主要用它的泛化能力来衡量。

常见算法优化方法随机搜索随机搜索(random search)是利用随机数求极小点而求得函数近似的最优解的方法。

变量允许的变化区间,不断随机地而不是有倾向性产生随机点,并计算其约束函数和目标函数的值,对满足约束条件的点,逐个比较其目标函数的值,将坏的点抛弃,保留好的点,最后便得到最优解的近似解。这种方法是建立在概率论的基础上,所取随机点越多,则得到最优解的概率也就越大。由于大多数计算机程序库中有随机数发生器,所以应用这种方法是很方便的。但是其计算精度较差、效率较低。随机搜索一般用于粗选或普查。常用的方法有随机跳跃法,随机走步法等。

梯度下降法梯度下降法是一个最优化算法,通常也称为最速下降法。最速下降法是求解无约束优化问题最简单和最古老的方法之一,虽然现在已经不具有实用性,但是许多有效算法都是以它为基础进行改进和修正而得到的。最速下降法是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长越小,前进越慢。

遗传算法遗传算法也是受自然科学的启发。这类算法的运行过程是先随机生成一组解,称之为种群。在优化过程中的每一步,算法会计算整个种群的成本函数,从而得到一个有关题解的排序,在对题解排序之后,一个新的种群----称之为下一代就被创建出来了。首先,我们将当前种群中位于最顶端的题解加入其所在的新种群中,称之为精英选拔法。新种群中的余下部分是由修改最优解后形成的全新解组成。

常用的有两种修改题解的方法。其中一种称为变异,其做法是对一个既有解进行微小的、简单的、随机的改变;修改题解的另一种方法称为交叉或配对,这种方法是选取最优解种的两个解,然后将它们按某种方式进行组合。尔后,这一过程会一直重复进行,知道达到指定的迭代次数,或者连续经过数代后题解都没有改善时停止。

模拟退火法模拟退火法是受物理学领域启发而来的一种优化算法。退火是指将合金加热后再慢慢冷却的过程。模拟退火也是从一个随机解开始,然后朝着某个方向变化。算法最为关键的部分在于,如果新的解成本值更低,那么新的解则会替代当前当前解,和爬山法类似,不过,如果成本只更高的话,这个解仍然有可能替代当前解。模拟退火算法之所有管用,不仅因为它总是会接受一个更优的解,而且还因为它在退火过程的开始阶段会接受表现比较差的解。随着退火过程的不断进行,算法越来越不可接受较差的解。