前言
近期,遇到LSTM神经网络调参问题,本人由于初学神经网络,调参没有经验,所以决定用优化算法进行优化,经过尝试最终决定使用DEAP库。
关于DEAP,DEAP是一个进化计算框架,能够帮助我们快速实现和测试进化算法。
进化算法简介
进化算法(Evolutionary Algorithms)是一类元启发式算法的统称。这类算法借鉴大自然中生物的进化、选择与淘汰机制,通常先产生一个族群,然后不断进化与淘汰,最终产生能够在严酷的自然环境中生存的优异个体(也就是有较大适应度函数的可行解)。它具有自组织、自适应的特性,常被用来处理传统优化算法难以解决的问题。
进化算法的优缺点
优点:
泛用性强,对连续变量和离散变量都能适用;
不需要导数信息,因此不要求适应度函数的连续和可微性质(或者说不需要问题内在机理的相关信息);
可以在解空间内大范围并行搜索;
不容易陷入局部最优;
高度并行化,并且容易与其他优化方法整合。
缺点:
对于凸优化问题,相对基于梯度的优化方法(例如梯度下降法,牛顿/拟牛顿法)收敛速度更慢;
进化算法需要在搜索空间投放大量个体来搜索最优解。对于高维问题,由于搜索空间随维度指数级膨胀,需要投放的个体数也大幅增长,会导致收敛速度变慢;
设计编码方式、适应度函数以及变异规则需要大量经验。
进化算法的基本元素
宽泛来讲,大部分进化算法都具有以下元素:
1.个体编码(Individual representation): 将问题的解空间编码映射到搜索空间的过程。常用的编码方式有二值编码(Binary),格雷编码(Gray),浮点编码(Floating-point)等。
2.评价(Evaluation): 设定一定的准则评价族群内每个个体的优秀程度。这种优秀程度通常称为适应度(Fitness)。
3.配种选择(Mating selection): 建立准则从父代中选择个体参与育种。尽可能选择精英个体的同时也应当维护种群的多样性,避免算法过早陷入局部最优。
4.变异(Variation): 变异过程包括一系列受到生物启发的操作,例如重组(Recombination),突变(mutation)等。通过变异操作,父代的个体编码以一定方式继承和重新组合后,形成后代族群。
5.环境选择(Environmental selection): 将父代与子代重组成新的族群。这个过程中育种得到的后代被重新插入到父代种群中,替换父代种群的部分或全体,形成具有与前代相近规模的新族群。
6.停止准则(Stopping crieterion): 确定算法何时停止,通常有两种情况:算法已经找到最优解或者算法已经选入局部最优,不能继续在解空间内搜索。
利用这些元素,我们就可以依照流程图组成一个进化算法:
Generate the initial population P(0) at random, and set t to 0.
repeat
Evaluate the fitness of each individual in P(t).
Select parents from P(t) based on their fitness.
Obtain population P(t+1) by making variations to parents.
Set t = t + 1
until Stopping crieterion satisfied