(随便看看)进化算法

休闲时间翻翻老东西看看,没啥东西,走马观花


文章目录

  • 遗传算法
  • 进化策略
  • 神经网络进化

遗传算法

进化领域解决计算机领域问题,达尔文理论搬入了计算机,启发自自然界优胜劣汰的法则,生物的某个种群由于某种变异诞生新的个体使得在环境中更容易生存,逐渐随着时间迭代下去,繁衍出新的种群

主要步骤:数值转义(DNA编码成0和1),计算适应度(离目标越近其适应度越高,比如迷宫问题,最后的抵达坐标越接近出口坐标,就越是我们想要的结果),选择个体繁衍(按比例淘汰优劣个体),交叉配对繁衍(遗传自父母信息,一般采用先验知识选择遗传的信息,合理的将遗传信息传递给下一代),变异(遗传同时有随机的变异,变异种类可以参照基因突变,置换,移码,缺失,插入)

结果可能是近似最优,不一定是全局最优

如何遗传自父母信息是一个有趣的问题,比如我们能从父亲选取m%,母亲选取100-m%,还有一种有趣的遗传思路是个体按适应度排序,topk的个体变作为winner,剩下的losser失败个体的基因随机的变异成topk个体的对应位点上的基因,再进行变异mutated,这样的做法有点像现在病毒的变异(covid-19),等待更好的变异个体代替原来的winner

这个方法就是2009年提出的微生物遗传算法: The Microbial Genetic Algorithm
http://users.sussex.ac.uk/~inmanh/MicrobialGA_ECAL2009.pdf
(随便看看)进化算法_第1张图片

进化策略

父母的DNA编码不在是0和1二进制编码而是扩展到实数范围变化,通过正态分布随机取值进行变异,程序中不断繁衍子孙,淘汰劣势的个体,留下好的个体,变异长度从大到小,最后的时候逐渐收敛至最优值

进化策略(ES)的一种方式,1+1 - ES,1+1(μ/ρ +, λ) - ES,父辈和子辈之间的竞争,在父辈在正态分布上采样产生子代,子代适应度大于父辈则子代取代父辈,当越接近目标时,减小变异长度,p=1/5的成功比例变异算法,子代获胜越多则变则异强度越大,但最终可能值收敛到了局部最优点

还有和梯度下降结合的进化策略 NES(natural evolution strategies),和强化学习的Policy Gradient方法接近,随机产生一群孩子,计算孩子的适应度,孩子根据梯度和适应度收敛到最优点

ES相较于GA更加注重变异(mutation)的过程,其中高度使用了正态分布

进化策略大致思想是固定网络结构,并行的计算网络,让优秀的子代在网络中占有的更多的连结,逐渐代替的劣势个体,但是在监督学习上,如识别图片,使用进化理论的神经网络的确还比不上使用梯度下降的神经网络,梯度下降只是需要梯度滑动,梯度下降指明了最优方向能够快速收敛,但是进化策略使用的是另一种收敛方式,随机生成很多新的点,通过新的点确定下一代的位置,这样的迭代我们在循环中我们需要不断的产生新网络或者参数,比梯度下降慢很多

但是我们也能看到进化神经网络的优点,随机生成点的方式跳出了梯度下降的局限,不容易滑入局部最优,并且可以通过并行计算进行大规模的强化学习

神经网络进化

Neuro-Evolution

进化和神经网络结合近些年也有了突破,大多数我们看见的神经网络模型是计算机能够理解的数学模型,将观测值正向传播输出自己的判断,通过对比自己的预测结果和真实结果计算误差进行反向传播更新自己的网络参数,然而生物中的神经网络没有这套反省传播的系统,往往只产生正向传播,通过刺激产生新的网络连接理解新的事物,其实最开始早在21世纪初,有人已经试图实现了

现在神经网络进化大致有两种形式,一种类似目前主流的神经网络,固定神经网络,更新参数使用的是进化策略的方式,如OpenAI 2017年提出的Q-learning,Policy Gradient,使用上千的子代繁衍并行计算提高收敛速度

另一种形态 NEAT,这种神经网络既可以改变结构,又可以改变参数,覆盖探索度更广,原始论文是2002 年的《Evolving Neural Networks through Augmenting Topologies》,在神经网络中基因形式有两种,一个是Node Genes,第二个是Connect Genes,Node Genes 保存一个结点是做什么的,是input还是output还是hidden的,Connect Genes保持结点和结点之间的连接关系和权重大小

NEAT的mutate策略,加一个连接connection,或者加一个结点,crossover策略,首先parent1对准parent2的连接的首个结点进行排序,parent1和parent2都有则随机选择一个Gene,或者就刚好选一个只有一个有的Gene

缺点练会花费大量的时间

你可能感兴趣的:(pytorch学习,机器学习,算法,人工智能)