1适用领域和场景
1.1 神经网络超参数优化
神经网络超参数优化一直是一个经久不衰的话题,例如神经网络的训练算法的学习率,神经网络每层多少个隐含层节点,这些参数都属于超参数。超参数无疑对神经网络的效果有着极大的影响,传统的基于梯度的算法无法做超参数优化,因为根本无梯度可以求。所以目前主流的超参数优化方法有 网格搜索,贝叶斯优化和进化计算。这可说进化计算在超参数优化的问题上的效果还是不错的,相关的paper也很多。当然这里这里提到的神经网络也可以扩展到广义的机器学习模型。
1.2 神经网络结构优化
神经网络结构优化,这个肯定是属于组合优化的问题,这类问题一般是NP-hard的(很难很难求解到精确解)。同样这类问题也是无梯度可求,基于梯度的方法不适用。所有多半是靠进化计算来做了。更多关于神经网络结构优化可参考 深度学习如何优化神经网络结构|架构?
1.3 一部分结构和特性固定的组合优化问题
进化计算在一部分组合优化问题和整数规划问题上表现比较好,甚至能够比肩传统的数学优化算法或者击败传统的数学优化算法。例如针对传统的VRP问题(车辆路径规划问题),在精巧的设计变异,交叉算子的情况下,遗传算法能够取得不错的效果。
1.4 一部分机理模型难以建立的黑箱优化问题
有一部分优化问题由于其本身机理难以描述清楚或者其机理并不是一个解析解表达式的情况下,数学优化算法往往不适用,此时就是进化计算比较适合的情况了。举例来说就是我以前研究过带有偏微分方程的约束的优化问题,很多非线性的偏微分方程没有解析解,因此整个偏微分方程就是一个黑箱一样的东西,给一个输入能到达输出,但是就是无法知道输入和输出的函数表达式,因此也就无法求导数了。例如飞机动力学模型的设计,汽车动力学模型的设计都是依赖于流体的偏微分方程,这种动力学优化问题一般来说也很难用数学优化方法去解。据我所知进化计算在这方面应用会比较多一些。
1.5 多目标优化问题
传统的数学优化算法还没法直接去处理多目标优化问题,都是将多目标转化为单目标之后处理。而进化计算的最大的优势是可以直接处理多目标优化问题。至于为啥直接处理多目标优化问题比较好,可以参考:多目标优化的意义是什么
2 进化算法VS数学优化
2.1 求解效果
进化算法只需计算目标函数的值即可,对优化问题本身的性质要求是非常低的,不会像数学优化算法往往依赖于一大堆的条件,例如是否为凸优化,目标函数是否可微,目标函数导数是否Lipschitz continuity等等。例如上面提到的汽车动力学模型的设计是带有流体偏微分方程约束的,此时你根本就不知道那个目标函数凸不凸,可导不可导。这一点是进化算法相对数学优化算法来说最大的一个优势,实际上同时也是进化算法一个劣势,因为不依赖问题的性质(problem-independent)对所有问题都好使往往意味着没有充分的利用不同问题的特性去进一步加速和优化算法(这里很具有哲学辩证思想的是有优点往往就会派生出缺点)。这样看来数学优化算法的条条框框实际上是划定了,数学优化算法的适用范围,出了这个范围好使不好使不知道,但是在这个范围内数学优化就能给出一个基本的理论保证。基于一些特定的组合优化的结构去设计的进化计算方法已经实际上引入了更多的关于问题本身的信息了。这也就是在一些组合优化问题上,进化计算能够比肩传统数学优化的原因。
结论:对问题结构确定的优化问题,有充分的关于优化问题的信息来利用的时候数学优化一般来说有优势,例如线性规划,二次规划,凸优化等等。反之,可能使用进化算法就会有优势。对于一些数学优化目前不能彻底解决的问题例如NP hard问题,进化算法也有很大的应用前景。更多的利用特定问题的结构去设计特定的进化计算算法必然能够提升进化计算的能力。
2.2 求解速率
进化算法的计算速度比较慢一直是大家的共识,这一点也很好理解,每迭代一次都需要计算M次目标函数,M是种群规模一般是30-50左右。进化算法的前沿的研究方向其中一个就是针对大规模优化问题的(large-scale), 我也曾查阅过相关顶级期刊的论文发现进化算法里的large-scale的规模,一般决策变量几千维就是large-scale的了。对数学优化算法来讲可能根本构不成large-scale。而实际问题中经常决策变量达到几百万以上的规模,此时进化计算的缺点就被暴露了。所以侧面反应出了进化算法在计算速度的瓶颈限制了其在大规模优化问题上的应用。
值得一提的是近几年来随着深度学习的崛起,人们对计算力的要求越来越高,基于GPU的并行计算和分布式计算的架构被广泛的应用到人工智能的各个领域。由于进化算法本身天生具有良好的并行特性,基于GPU并行计算的进化算法是否能够在一定程度上解决进化算法速度慢的问题绝对是一个值得研究的topic。
2.3 理论性保障
目前对于进化算法的理论性分析还停留在一个很初级的阶段,虽然有用动力学模型(微分方程)和随机过程的方法来证明进化算法的收敛性,但一般而言这类理论分析的假设条件过于强了,此类研究工作更多的倾向于是探索性的阶段,基本上很难真正的从理论上指导算法的设计。个人希望能够有更先进的数学工具来帮助进化算法完善理论分析方面的不足吧。与之相对的数学优化在算法收敛性分析,算法复杂度分析上已经比较完备了,并且其理论在一定程度上能够指导算法的设计。
综上所述,进化算法也好,数学优化也好都只是认识问题解决问题的工具之一,工具本身并不存在绝对的优劣之分,每种工具都有其适用的场景,辨别它们的长短,找到它们合适的应用场景是我们这些用工具的人应该做的。