
GEP(Gene Expression Programming,基因表达式编程)算法是荷兰生物学家Ferreira在1999年提出,并于2001年发表了GEP算法第一篇论文《Complete Reference for First GEP Paper》。GEP算法融合了GA(Genetic Algorithms,遗传算法)和GP(Genetic Programming,遗传程序设计)设计思想,开创性地提出用定长线性串表示非线性树结构的方法。GEP算法一方面继承了GA算法刚性、规矩和快速,另一方面继承了GP算法的柔性易变和多能,并且在运行效率上比传统GP系统提升了100-60000倍。
GEP虽然在GA与GP基础上改造提升,但其核心思想都是借鉴生物进化的原理,属于进化算法(Evolutionary Algorithms)的一种。本文做为系列讲座的第一部分,先介绍生物进化、遗传算法和进化算法的基本思想。
一、生物进化
万物生长,自然界中各种生命形式千姿百态,你如今看到的生物物种都是经过几十万年、上百万年进化而来。在进化过程中,生物会从上一代通过复制染色体继承某些性状,在遗传的同时生物个体也会发生变异。有的变异可以使新的个体更加适应生存环境,而有的变异则相反。那些不能适应生存环境的个体会逐步消亡,适应生存环境的个体则以较高的概率存活下来,并有较多的机会产生后代。正是这种"物竞天择、适者生存"的进化法则,使得在漫长的进化过程中,那些具有优良特性的生物被保留下来,而不适应环境的物种被淘汰。
生物进化通常都包含以下几个步骤:
· 遗传:子代个体复制父代个体染色体,从而继承父代个体的性状。遗传生物进化的基础,没有遗传,后边的规则都失去意义;
· 变异:遗传过程中基因能够产生突变,使得个体与父代个体不同。这种现象在进化中是小概率事件,但为产生新物种和进化奠定了基础;
· 选择:适应环境的个体有较高的概率存活,不适应环境的个体生存机会较小。这种机制保证了生物进化总的趋势是从低级、简单类型向高级、复杂的类型进化
生物进化理论不仅为人类认知生命演化提供了理论基础,还"跨界"在机器学习领域得到应用,这就是遗传算法。
二、遗传算法
1975年,美国科学家J.Holland教授根据生物进化理论提出了一种基于种群并行搜索的优化算法——遗传算法。遗传算法是一种基于空间搜索的算法,其基本思想是通过遗传、变异和自然选择,模拟自然优胜劣汰进化过程,使种群不断向前进化,最终收敛到优化解。
遗传算法具有以下特性:
· 高鲁棒性和广泛适用性,能够不受问题性质的限制,有效地处理传统优化算法难以解决的复杂问题(比如NP难优化问题)
· 遗传算法直接处理的对象是参数集合的编码而非参数本身,所以搜索过程不存在求导和函数连续性的限定;
· 遗传算法的搜索是从具有一定规模的N个个体开始而不是从单个个体开始,具有内在的高并行性
· 遗传算法利用选择、交叉、变异等算子,使每代个体具有更好的多性样,从而获得更好的全局寻优能力;
· 遗传算法采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需要确定的规则。
遗传算法的基本操作步骤如下:

第一步:种群初始化:随机产生一个初始种群,种群的每个个体都是一个确定长度的特征字符串,代表解空间上的一个可行解;
第二步:个体评估:用适应性函数(Fitness function)计算每个个体的适应度,从而衡量每个个体的优劣;
第三步:判断是否满足迭代停止条件或已达到最大迭代次数:如果满足上述条件中的一项,则执行第七步。如果不满足则执行第四步;
第四步:根据个体适应度对种群个体进行选择,被选择的个体将进入交配池中组成父代种群;
第五步:从交配池中按一定概率选择个体进行遗传和变异产生新的个体;
第六步:令种群迭代次数g=g+1,进行下一轮的迭代操作(跳转到第二步),直至迭代次数达到最大的迭代次数或找到最优解;
第七步:输出种群中适应度最高的个体,即最优解;
三、进化算法
在标准遗传算法的基础上,很多学者对它进行了改进,提出了一些变种的、非标准的遗传算法。这些算法虽然在编码定义、算子规则有所不同,但都借鉴了生物进化的理论,所以统称为"进化算法"。
从数值分析的角度来看,进化算法可视为随机搜索的优化算法。其本质是非确定性的,所以能够搜寻问题空间中所有的可能答案。在进化算法执行过程中,大量个体随着环境的变化进行选择、变异,进而形成各种各样的个体,不同个体代表了用以解决问题的不同途径和方法。正是因为进化算法解决问题的能力具有多样性,在很多没有现成可利用解决方法的复杂非线性问题(参数优化、作业调度、自动控制等)上,进化算法便成为了最有效的分析手段。
进化算法除了遗传算法外,还有进化策略、进化规划、遗传编程以及基因表达式编程GEP。
如果大家对此话题感兴趣,欢迎大家点击"关注"。