进化算法简述

189 阅读3分钟

进化算法简述

进化算法设计五大要素:参数编码,初始化种群,适应度评估,遗传算子和控制参数。

以下是一个大致的结构图:

image.png

根据编码策略初始化种群,待优化的参数被编码在个体中,根据个体解决优化问题的性能对其进行评估并分配适应度值,选择适应度值较高的个体进行遗传操作.

搜索空间定义了优化目标和所有可能的个体,神经网络结构将被编码为该空间下的表示。

进化算子包括交叉和操作。在突变操作中,输入单个个体,修改其基因以产 生新的性状。突变算子包括基因位点的添加、删除或置换,构成个体的局部搜索。

在编码策略上大致分为间接编码和直接编码

间接编码

利用率低,但是有好处。间接编码里又分为二进制编码和语法编码。

二进制编码

使用二进制数组来表示CNN结构。由于二进制数的性质以及固定长度的编码,从而降低了灵活性,造成搜索空间的损失。

二进制字符串 一维数组,对CNN的不同组件进行编码。每个字符串能编码滤波器大小、池类型和内核大小以及激活函数,决定了CNN的优化器、批大小、丢弃率以及 全连接层中的权重正则化类型

二进制矩阵 布尔值的高维数组作为邻接矩阵,不过无法优化Batch size 学习率 优化器

语法编码

该方法基于语法进化论。语法定义为4元组G=(N,T,S,P)N是非终端符号的非空集合,T是终端符号的不空集合,S是起始符号,P是Backus-Naur形式的一组生成规则。语法允许生成语言,即可以从起始符号导出的终端符号的所有可能序列

直接编码

直接编码可以大致分为块链编码、图编码、树编码

块链编码

为了使术语标准化,我们使用术语块来指代链中的每个模块。根据可用的出版物,块可以根据抽象级别分为低级、中级和高级块。低级块用于表示最简单的CNN组件,如卷积、池化和完全连接的层。在粒度最低的情况下,批次归一化、ReLU和丢弃也被视为单个块。一组低级的区块链编码利用多个分支或链,Hadjiivanov和Blair通过使用三层结构来支持多样性。第一层:与物种形成相关的,是属于同一物种的所有个体共享的有序块的骨架。第二层:基因型水平,是相同的基因组之间增加了连接。第三层:表现型水平增加了联系的权重。

中级块使抽象更进一步,一个块包含多个相同类型的操作或层。通过使用这种方法,更容易实现更高的模块化。此外,使用更抽象的块带来了在深度学习中应用成熟概念的优势,例如残差连接。

图编码

图是定义为二元组G = (N, E)的非线性数据结构,其中N是节点的非空集合,E是连接节点的边的非空集合。灵活性是以复杂性为代价的

树编码

利用树数据结构,特别适合遗传编程

image.png

建议使用混合编码,即综合直接编码和间接编码的优点

  参考文献:基于进化算法的卷积神经网络架构设计_谢艺蓉
           Completely Automated CNN Architecture Design Based on Blocks

本文正在参加 人工智能创作者扶持计划