提出了新的直接编码策略和速度算子,具有更快的收敛性。该算法只搜索CNN结构。在目前的研究中,每一层的权重都认为是不可搜索或不可进化的。
直接编码策略:将CNN结构分为两个块:一个块只包含卷积层和池层,另一个块只包含完全连接层。
contribution:
1.提出了一种新的粒子群优化算法,该算法可以在不受尺寸限制的情况下,利用可变长度粒子搜索深卷积神经网络的最优结构。允许粒子在没有上限的情况下长大。
2.提出了一种新的差分算子(difference operator),它允许两个具有不同层数和参数的粒子进行比较,并且允许粒子的速度在不使用实值编码方案的情况下进行更新。
3.设计了一种新的速度算子(velocity operator),可以用来修改给定的CNN结构,使之类似于群中的全局最优个体或其个人最优配置。这种速度算子允许我们使用一种几乎标准的PSO算法进行搜索,避免了使用多维PSO算法。
4.找到有意义的CNN架构的速度比以前更快的算法。PSO算法比遗传算法收敛速度快。通过将其快速收敛性与搜索CNN结构的能力相结合,所提出的算法比竞争算法花费的时间更少,可以超过最新的结果。
Proposed Algorithm:
该算法由一个粒子群优化算法框架组成,包括六个步骤,用于搜索最优的CNN结构:有效的CNN表示、粒子群的初始化、单个粒子的适应度评估、测量两个粒子之间的差异,速度计算和粒子更新。这些操作将在下面的小节中详细介绍。
CNN表示:每次使用CNN进行训练、测试或评估时,都会编译一个模型,然后生成一个包含粒子中每一层细节的数组。
粒子群的初始化:FC之后只能放FC,每个粒子的层数在3-max之间。在C和P之间放FC是为了增加参数个数。因为池化和卷积会减少参数。
适应度评估:评估本身是通过比较每个粒子的损失函数来完成的,在我们的例子中是交叉熵损失。因此,该算法的目标是找到一个损失最小的粒子结构,而不考虑参数数目或其它因素。使用Adam[37]进行训练,并使用Xavier[38]初始化权重。此外,还可以在层之间添加漏失和批处理规范化,以避免过度拟合问题[39]。这是该算法的主要瓶颈,因为N个粒子中的每一个都需要在整个数据集中进行训练。
差分算子:把全联接层分离出来。对比每一个粒子的层,如果层相同,则为0,如果不同,则为第一个粒子的层。如果两个粒子的层数不同,和第一个粒子的层数保持一致。
速度计算:任何给定粒子(P)的速度都是基于相对于全局最佳(gBest)和粒子最佳(Pbest)的差异。计算(gBest - p)和(pBest - p),给定一个随机数,如果随机数<Cg,则选择(gBest - g)中的层,否则选择(pBest - p),决策因子Cg将控制更新的粒子体系结构接近gBest体系结构的速度。当(gBest - p)和(pBest - p)相等,则从(gBest),(pBest)中选择层。
参数:particle swarm optimization,CNN architecture initialization, and CNN training.
particle swarm optimization:迭代次数、群大小和计算粒子速度(Cg)时从全局最优选择层的概率。Cg参数将有效地控制群中粒子接近全局最佳粒子的速度。在我们的例子中,更高的Cg将使粒子的结构尽可能快地与全球最相似。在该算法中,较高的Cg值将降低群的多样性,从而增加陷入局部最优结构的概率。
CNN architecture initialization:控制粒子结构的初始多样性。它包含八个参数:卷积层的最小输出数,卷积层的最大输出数,全连接层的最小神经元数,全连接层的最大神经元数,卷积核的最小大小,卷积核的最大大小、最小层数和最大层数。
CNN training:控制每个粒子的训练过程。它总共包含四个参数:用于部分评估的阶段数、全局最佳阶段数、退出率和在层之间使用批处理标准化(BN)的选择。
在未来的工作中,我们将扩展所提出的粒子群神经网络,在搜索过程中使用冲突的多个目标,例如计算复杂度和分类准确度,以便找到在这些目标之间具有不同折衷的多个DNN模型。在这方面,决策者可以根据自己的需要选择使用哪种模式。我们还将开发DNN架构,算法将能够找到包括ResNets和DenseNets架构,这将进一步提高分类精度的可能解决方案。
evoCNN:
[18] H. Jin, Q. Song, X. Hu, Efficient neural architecture search with network morphism, arXiv preprint arXiv:1806.10282 (2018).
[19] Y. Sun, B. Xue, M. Zhang, G. G. Yen, Evolving Deep Convolutional Neural Networks for Image Classification, IEEE Transactions on Evolutionary Computation (2019). doi:10.1109/TEVC.2019.2916183.
[20] Y. Sun, G. G. Yen, Z. Yi, Evolving Unsupervised Deep Neural Networks for Learning Meaningful Representations, IEEE Transactions on Evolutionary Computation 23 (1) (2019) 89–103 (Feb. 2019). doi:10.1109/TEVC.2018.2808689.
VGG-16 :使用小卷积滤波器的深层网络比浅层网络取得更好的效果
ResNet:resnet使用快捷连接「shortcut connect」(也称为跳跃或剩余连接)将层的输入连接到其输出。不计算输入和输出之间的映射,而是计算残差映射,这使得训练过程更容易。
Inception:network-in-network。神经网络的每一层都是另一个网络本身,可以用来在计算效率较高的情况下构建更深层次的网络
DenseNet:DenseNets connect the outputs of each layer to every subsequent layer resembling the connectivity pattern of fully-connected neural networks.每一层都接受它前面所有层的输出。
NeuroEvolution:早期,神经进化被专门用于更新固定神经网络结构中的权值,避免了反向传播产生的许多缺点
Topology and Weight Evolving Artificial Neural Networks (TWEANNs):拓扑和权重进化人工神经网络。同时进化权重和体系结构。(因为进化算法中权重难以确定)
EANT:(TEWANNs的一种)EANT从简单的ANN体系结构开始,随着算法的每次迭代而变得更加复杂。它包含两个内部循环:一个是通过变异测试新架构的结构探索,另一个是使用进化策略优化权重的结构开发。
基于超立方体的增广拓扑神经进化(HyperNEAT):) which makes use of connective Compositional Pattern Producing Networks (connective CPPNs) together with NEAT to in- directly encode neural networks. 作为特征抽取器。
粒子群优化:粒子群优化(PSO)是一种常用于离散、连续和组合优化问题的元启发式算法。它最早是由肯尼迪和埃伯哈特在2001年开发的[30]。它的灵感来源于一群鸟的飞行模式。在粒子群算法中,单个解称为粒子,所有解的集合称为群。粒子群优化算法的主要思想是,每个粒子只知道其当前的速度、其在过去实现的最佳配置(pBest)以及哪个粒子是当前群中的全局最优(gBest)。在每次迭代中,每个粒子都会调整其速度,使其新位置更接近gBest和pBest。每个物体的速度v,根据以下方程式进行更新:
式中,vi,j是第i个粒子在第j个维度中的速度,x是当前粒子位置,w是一个称为动量的常数,用于调整前一个时间步的速度对当前时间步的速度的影响程度,cp和cg是预先定义的常数,rp和rg是[0,1]中的随机数。此外,通过分别修改常数cp和cg,可以调整算法的探索和开发能力。
最后,第i个粒子在j维中的位置更新如下:
DNNs(深度神经网络):一:前馈神经网络 如:全联接神经网络,深度卷积神经网络。前馈神经网络主要是对信息进行逐层处理,主要适用于分类和目标检测任务
二:递归神经网络 如:long short-term memory (LSTMs) [34] and gated re- current units (GRUs) 递归神经网络在层与层之间有反馈回路,可以用于依赖时间的任务,如自然语言理解。