hello,这是鑫鑫鑫的论文分享站,今天分享的文章是Genetic CNN,这是一篇将标准遗传算法应用于NAS的论文,我们一起看看吧~
基础知识:
遗传算法:模仿生物进化的过程。传统的遗传算法往往具有下列步骤:
- 定义个体的基因编码方案
- 初始化种群
- 衡量个体生存竞争能力的适应度(通常是一个函数,函数值表示个体的生存竞争能力)
- 淘汰适应度低的个体,选择适应度高的个体构成种群下一代的成员(选择)
- 按一定概率对下一代成员进行基因的交叉与变异(交叉与变异),产生新个体的基因编码方案
- 评估新种群的适应度
摘要
本文讨论了自动学习深层网络结构的可能性。需要注意的是,可能的网络结构的数量随着网络中的层数呈指数增长,这启发我们采用遗传算法来有效地遍历这个庞大的搜索空间。我们首先提出一种编码方法,用一个固定长度的二进制字符串来表示每个网络结构,并通过生成一组随机个体来初始化遗传算法。在每一代中,我们定义了**标准的遗传操作,**例如选择、变异和交叉,以消除弱势个体,然后产生更具竞争力的个体。每个个体的竞争力被定义为其识别准确率,这是通过从头开始训练网络并在验证集上对其进行评估得到的。我们在两个小数据集上运行遗传过程MNIST和CIFAR10,证明了它进化和发现高质量结构的能力,而这些结构以前很少被研究。这些结构也可转移到大型ILSVRC2012数据集。
1. 介绍
现代网络结构是手工设计的,而不是学习的,这限制了方法的灵活性。
在本文中,我们探讨了自动学习深层神经网络结构的可能性。我们考虑一个受限的情况,在这种情况下,网络有有限的层,每一层被设计成一组预定义的构建块,如卷积和池化层。即使在这些限制条件下,可能的网络结构的总数也会随着层数呈指数增长。因此,列举所有候选人并找出最佳候选人是不切实际的。相反,我们将此问题描述为一个大搜索空间中的优化问题,并将遗传算法应用于空间的高效遍历。
2. 相关工作
2.1. 卷积神经网络
CNN是一种用于大规模视觉识别的层次模型。它是基于这样的观察:一个拥有足够多神经元的网络能够适应任何复杂的数据分布。在过去的几年里,神经网络被证明对简单的识别任务是有效的[20]。最近,大规模训练数据(如ImageNet[5])和强大的gpu的可用性使得训练深度CNNs成为可能,其显著优于BoVW模型。CNN是由几个层叠的层组成的。其中,前一层的响应与滤波器组卷积,并由可微非线性激活。因此,CNN可以看作是一个复合函数,它是由在顶层的监控和预测之间的差异定义的误差信号反向传播来训练的。最近,有人提出了几种有效的方法来帮助CNN更快地收敛并防止过度拟合,如ReLU激活[17]、批标准化[15]、辍学[11]和干扰标签[39]。从预先训练的神经网络中提取的特征可以推广到其他识别任务[36][40]。
设计强大的CNN结构是一个有趣的问题。人们相信更深的网络会产生更好的识别结果[29][32]。而且,增加公路信息也被证实是有用的[10][42]。我们还努力在网络结构中加入不变性[38]。我们发现了一些使用随机[14]或密集[13]结构的工作,但所有这些网络结构都是确定性的(尽管[14]中使用了随机操作来加速训练和防止过度拟合),这限制了模型的灵活性,从而启发我们自动学习网络结构。
2.2. 遗传算法
遗传算法是一种受自然选择过程启发的元启发式算法。遗传算法通常被用来产生高质量的优化和搜索问题的解决方案 ,依靠生物启发的操作,如变异、交叉和选择。
一个典型的遗传算法需要两个先决条件,即,解域的遗传表示,以及评估每个个体的适应度函数。 一个很好的例子是旅行商问题(TSP),这是一个著名的NP完全问题,其目的是在节点图中寻找最优哈密顿路径。在这种情况下,每个可行解表示为{1,2,…,N}的置换,适应度函数是路径的总代价(距离)。我们稍后将展示深层神经网络可以编码成二进制字符串。
遗传算法的核心思想是允许个体通过一些遗传操作进行进化。流行的操作包括选择、变异、交叉等。选择过程允许我们在保留强个体的同时消除弱个体。执行变异和交叉的方式因情况而异,通常基于特定问题的特性。
3. 本文的方法
本节介绍设计竞争网络结构的遗传算法。首先,我们描述了一种用固定长度的二进制字符串表示网络结构的方法。其次,定义了选择、变异和交叉等遗传操作,使我们能够高效地遍历搜索空间,找到高质量的解。
在这项工作中,遗传算法只用于提出新的网络结构,每个结构的参数和分类精度都是通过独立的训练从头开始得到的。
3.1. 二进制网络表示法
许多常见的state-of-the-art神经