赞
踩
原文地址:GACNN: TRAINING DEEP CONVOLUTIONAL NEURAL NETWORKS WITH GENETIC ALGORITHM
目前,在用遗传算法训练卷积神经网络的领域,大多数工作在一些重要方面尚有缺陷,例如缺少不同深度网络与数据集之间的对比,缺乏对遗传算法参数的探索,在大规模网络中失效,缺乏对不同遗传算法方案的探索等。
针对以上问题,本文提出了一些新思路,主要贡献如下:
近年来,卷积神经网络(Convolutional Neural Network, CNN)在计算机视觉、语音识别等领域被认为是最有效和流行的工具之一。传统的人工神经网络(Artificial Neural Network, ANN)由于只用原生数据而不能检测到某些重要特征,因此无法高效处理大规模问题,而CNN则提供了一种解决方法。Figure 1展示了一个简单的CNN。
一个CNN主要由两个部分组成:
总结下来,CNN的训练过程就是通过改变其参数,尤其是过滤器与权重的值,来最小化损失函数。
遗传算法(Genetic Algorithm, GA)基于达尔文的进化论,是一种由自然选择启发的,可用于解决有约束与无约束优化问题的全局优化方法。在每次迭代过程中,GA从当前种群中选择“最好”的个体作为双亲来产生子代,以使种群朝最优解“进化”。GA的流程图如Figure 5所示。
GA的流程如下:
利用GA训练CNN的挑战在于如何将网络映射到染色体上。传统的编码模式将每个网络参数作为染色体的一个元素,而在大规模网络中,这种编码模式将使得染色体结构过于庞大,导致遗传算子失效等问题。一个解决方法是将每个卷积层与全连接层看作一个整体作为染色体的一个元素,即每个染色体元素要么包含一个层的所有连接权重,要么包含一个过滤器的所有值。这种编码模式大大缩减了染色体结构,使其具有更快的运算时间,更快的收敛速度以及更高的正确率。如Figure 6所示。
关于适应度,本文使用分类交叉熵(Categorical Cross-entropy)。
以上研究方法可以通过三个GA方案进行:
该算法包括以下步骤:
以上流程从第2步开始重复,直到达到某个标准(如世代数、正确率等)。这种方案将保留“最好”的个体,并且只有在更好的个体出现时才改变种群。这会使得其稳定但缓慢地收敛到全局最优解。在选择的过程中,适应度更高的个体将更频繁地被选择。
为简单起见,我们不考虑权重中的bias和dropout层。
该算法的【1. 初始化、2. 评估、3. 适应度赋值】步骤与稳态遗传算法相同,不再赘述。
4. 选择:每个个体被选择的概率的计算方式与稳态遗传算法相同。接下来,一些个体将被选择进入交配池(Mating Pool),交配池大小与种群大小一致,这意味着一些个体将被选择多于一次。下一步是将交配池中的个体随机配对。
5. 交叉:每一对产生两个互补的子代,产生过程与稳态遗传算法相同。这将产生一群数量为pop_size的子代。
6. 变异:基于变异比例(mutation_ratio),子代中的一些个体将被随机选择经历变异,变异过程与稳态遗传算法相同,变异后的个体将取代自身。
7. 代替:新一代将完全取代上一代,标志着一次迭代的完成。
该算法的流程如Figure 10所示。
该算法的【1. 初始化、2. 评估、3. 适应度赋值】步骤与稳态遗传算法和世代遗传算法相同,不再赘述。
4. 选择:与世代遗传算法不同的是,交配池大小与种群大小不相同。这是因为最适应的个体(如前10个),即精英,将直接进入下一代。此外,交配池中的个体将不会被随机配对,而是随机选择双亲通过交叉产生一个子代,然后将双亲放回交配池。
5. 交叉:双亲使用与稳态遗传算法相同的交叉算子产生一个子代,直到子代填满下一代种群。
6. 变异:与世代遗传算法相同,一些子代将经历变异。
7. 代替:新子代与精英共同组成了下一代种群,标志着一次迭代的完成。
该算法的流程如Figure 11所示。
容易发现,这种算法将可能产生前两种算法的最好结果。一方面,稳态遗传算法收敛稳定但是缓慢;另一方面,世代遗传算法进化得更快,但达到最优解的过程更加震荡。我们希望通过结合这两种算法能产生最好的结果。
首先,我们在MNIST和CIFAR10数据集上进行评估,Table 2与Table 3展示了网络结构。MNIST的网络结构是自定义的,而CIFAR10的网络结构是著名的LeNet网络。
在三种算法中,pop_size设为100.
对于稳态遗传算法,有70%的可能性选择交叉,30%的可能性选择变异。变异比例(mutation_ratio)设为10%.
对于世代遗传算法,变异概率设为20%,变异比例设为10%.
对于精英遗传算法,前10个最适应的个体直接进入下一代。选择20个个体进入交配池,产生剩下的90个子代。
对于MNIST数据集,70000张图片用于训练和验证,10000张图片用于测试。对于CIFAR10数据集,50000张图片用于训练和验证,10000张图片用于测试。batch_size设为32.
值得注意的是,对于每个网络,我们初始化一个种群,再用不同的算法进化,这会使得初始正确率相等。当与反向传播(Back Propagation,BP)算法比较时,初始化种群中适应度最高的个体将被选择用BP算法训练。
Accordion编码与传统编码在两个数据集,三种遗传算法上的表现如Figure 12-14所示。
Figure 15展示了在Accordion编码方式下,三种遗传算法在两个数据集上的表现的对比。
Figure 16展示了表现最好的精英算法与传统Adam算法在两个数据集上的表现的对比。
本文提出的全新的编码方式极大缩小了染色体大小,并且表现好于传统编码方式。通过对三种遗传算法收敛性与正确率的分析,本文推断出稳态算法收敛稳定但是缓慢;世代算法进化得更快,但达到最优解的过程更加震荡;精英算法收敛得更快也更稳定。
三种遗传算法在CIFAR10数据集上的表现如下。
Adam算法在CIFAR10数据集上的正确率与损失如下。
Adam算法在MNIST数据集上的正确率与损失如下。
代码实现
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。