让机器具有类生物的进化能力一直是计算机科学领域的热门研究领域。今年3月,谷歌的几位研究人员提出了图像分类器的大规模进化方法。机器之心也报道了这项研究,参见:《深度 | 谷歌和 OpenAI 新研究:如何使用达尔文进化论辅助设计人工智能算法?》。研究发布后,机器之心的技术分析师对这项重要研究进行了更深入细致的解读。论文:Large-ScaleEvolutionofImageClassifiers(地址:https://arxiv.org/pdf/1703.01041.pdf)摘要:神经网络已被证明可以有效解决难题,但它们的架构设计具有挑战性,即使是图像分类问题。进化算法提供了一种自动发现此类网络的技术。尽管计算需求巨大,但设计能够与大规模人工设计架构相媲美的进化模型现在并非不可能。我们采用最先进规模的简单进化技术,从微不足道的初始条件开始,发现适用于CIFAR-10和CIFAR-100数据集的模型。为此,我们使用直观的新突变运算符来导航大型搜索空间。我们相信,一旦进化开始,输出应该是一个完全训练有素的模型,没有任何人为参与。对这项研究特别重要的是结果的可重复性、可变性和计算要求。解释神经网络在学术研究和工业应用中都展示了强大的能力。为了解决不同的实际问题,可以根据具体任务建立各种网络架构。然而,今天创建的有效架构是人为设计的结果,因此本文提出了一种解决神经网络图像分类架构优化问题的新方法。在进化算法中,所提出的方法通过操纵直观的突变自动适应最佳网络架构。此外,整个优化过程不需要人工干预来获得完全训练的模型。为了深入了解,我们将介绍将进化算法应用于神经网络的细节,并将它们与之前发表的论文进行比较。***将对研究的整体质量进行简要评估。在图像分类领域,只要有足够的训练数据,神经网络对于许多困难的任务都是非常成功的分类器,但只有经过研究人员和工程师多年的研究和分析,才能实现性能良好的网络模型。因此,以自动方式设计神经网络架构已成为热门话题。要实现架构的自动化设计,一个直观的方法就是“搜索”。因此,我们应用进化算法的思想:该算法受生物进化机制的启发,将候选解看作是一个大群体中的个体,然后定义一个适应度函数来衡量每个候选解的好坏。我们还应用了迭代选择过程,其中相对最好的个体将被培育为“父母”,通过突变和重组在种群中产生新的后代。通过重复上述操作,后代继承了父母的优点,突变进一步提供了种群多样性。反过来,我们最终会寻找最佳解决方案。为了协助神经网络的优化,神经进化最初仅用于进化神经网络的连接权重。以NEAT(NeuroevolutionofAugmentedTopology)算法(StanleyandMiikkulainen)为例,它需要三个突变:改变权重,在现有节点之间添加加权连接,??以及在拆分现有连接时插入节点。在超参数搜索中也应用了其他类似的方法。但与当今广泛使用的神经网络(如AlexNet和VGGnet)相比,上述方法仅适用于相当小规模的网络。这些传统方法关注演化过程的效率而不是规模,因此它们不适合最先进的网络优化。另一方面,非进化神经发现方法更适合当今的“深度”网络。因此,我们使用其他替代方案(例如贝叶斯优化和强化学习)来优化深度模型,尽管它们存在明显的缺陷——网络层数仍然需要研究人员证明,而不是算法本身。因此,所提出的研究突出了它在研究大规模搜索网络架构和基本初始条件而无需人工干预方面的新颖性。实验对比如下:表1.与人工设计的架构对比。表1中的“C10+”和“C100+”两列分别表示在增强的CIFAR-10和CIFAR-100数据集上的测试精度。“可达?”列指示给定的人工设计模型是否在搜索空间内。“-”表示黄等人的论文。(2016b)没有报告价值(不是原作者)。该表主要基于Huang等人的论文。(2016a)。表2.与自动发现架构的比较。表2中的“C10+”和“C100+”分别包含在数据增强的CIFAR-10和CIFAR-100数据集上的测试精度。“-”表示该信息未报告或我们不知道。包括先进技术的人工设计结果请参见表1。“离散参数”是指参数只能从少量的值中挑选出来(例如,从{1,2,4}中挑选)。从表1和表2可以看出,根据提出的进化方法,C10+和C100+的分类性能超过了手动方法和其他自动发现的架构,没有后处理阶段。下面将详细描述大规模进化方法。基于进化算法的工作原理,该方法将训练有素的架构视为个体。因此,我们能够创建具有多个模型的种群,并将适应度值视为验证集上的准确性。本文提出使用图作为数据结构来编码个体的基本架构。在这个设计图中,顶点表示3级张量,这在卷积神经网络中很常见:让二维为图像的空间坐标,而第三个张量表示RGB颜色通道;图的边缘代表连接、卷积或可变参数。然后,我们通过移除适应度值低的模型来应用进化规则,并选择最好的父母来生成新个体。在繁殖过程中,为了增加个体多样性,我们还对所选父母的副本进行变异,然后在大型搜索空间中重复随机个体的成对匹配以找到最终的后代。对于具体规模的实施,我们开发了一个大规模并行无锁基础设施。不同的计算机将异步操作并通过单个文件目录下的共享文件系统进行通信,驱逐和垃圾收集也将用于处理计算效率问题。此外,整个种群的生殖过程已经进化。变异操作也是从预先确定的集合中随机选择的。变异操作包括:改变学习率(下面列出了采样细节)。身份(实际上意味着“继续训练”)。重新加权(如Heetal.(2015)中的样本)。InsertionConvolutions(在“卷积主干”中的随机位置插入卷积,如图1所示。插入的卷积具有3×3的滤波器,随机步长为1或2,通道数与输入相同。批量归一化和ReLU激活可以在有或没有随机化的情况下应用)。反卷积改变步幅大小(只允许2的幂步)改变任何卷积的通道数。filtersize(水平或垂直方向随机,并随机选择卷积,但只有奇数)insertone-to-one(插入一对一或identityconnection,类似于insertconvolutionmutation)addskip(层间identities随机)RemoveSkip(RemoveRandomSkip)在变异过程中,所有的参数都会导致一个密集的搜索空间,这意味着任何参数都没有上界。因此可以实现所有模型深度。参数的这种独特性导致了对潜在的真正大型架构集的探索。换句话说,神经网络的参数和架构可以在没有人为干预的情况下进化。在解释了理论背景之后,我们逐渐介绍了要进行的实验的初始设置和验证策略。众所周知,在初始化方面,即使是训练好的卷积神经网络也是一个强分类器,在实验中也可能达到比较高的准确率,所以本文将从一群简单的个体开始。这些个体不包含用于分类的卷积和性能不佳的网络,它们的学习率被初始化为一个很大的值:0.1。这种设置将迫使个人学习,使强大的分类器能够进化,并通过变异自我发现;同时,实验可以避免“操纵”,从而非常成功。另一种加速进化的策略是权重继承。这里的继承意味着个体尽可能继承其父母的部分或全部权重。在报告方式中,每次都引用“***模式”。除了在一个实验中选择最佳模型外,具有最佳验证精度的模型还会尝试在所有实验中选择最佳实验。除了训练和测试策略,计算成本是实验的另一个重要方面。它由TensorFlow实现,其中变异和卷积可以看作是TF(TensorFlow)操作。对于每个TF操作,我们预测所需的理论浮点操作数(FLOPs)并分配给定每个个体的计算成本:其中F表示用于训练和验证的FLOPs,E表示运行的epoch,N表示数量训练和验证样本。此外,每个实验的计算成本是其所有单独成本的总和。下一步是实现上面提到的算法。每个实验都需要在几天内进化出一个种群,如下图所示:图1.进化实验进展。图1中的每个点代表人口中的一个人。蓝点(黑色,右上角)表示幸存者,其余已被杀死。四张图展示了调查结果的例子。这些对应的是***个体(最右边)和他们的三个祖先。***个人是根据他们的验证准确性来选择的。进化有时会在没有非线性的区域(“C”,白色背景)之间堆叠卷积,这在数学上等同于单个线性运算。一些卷积不同于典型的人为设计的架构,后面是多个非线性函数(“C+BN+R+BN+R+...”,橙色背景)。在训练阶段之后,所提出的方法在CIFAR-10数据集上使用9×10^19FLOPS达到94%的准确率,之后我们应用相同的神经网络进化算法,参数为CIFAR-100Parameterswhenusing7×10^19FLOPSin,使得准确率达到76.3%。正如预期的那样,这两个数据集的结果与其他最先进的手工设计结果相比具有竞争力。我们还对多个实验的结果进行了统计分析,其演变如下所示:图2.结果和对照的再现性。在图2中,时间t处的垂直轴定义为在时间t或之前幸存的具有最佳验证准确性的个人的测试准确性。插图主要人物的放大部分。这条曲线所显示的每个实验的进展情况如下。最上面的线(蓝色实线)显示了5次大规模进化实验的平均测试精度,周围是宽度为±2s的阴影区域(插图更清晰)。下一行(主图和插图中的橙色虚线)表示禁用权重继承时的单个实验,因此每个人都是从随机权重中训练的。底部的曲线(点划线)是随机搜索控制。所有实验都使用相同数量和类型的硬件,从验证到测试集的泛化过程中存在少量噪声,这解释了为什么曲线不会单调增加。±2s区域(主面板和插图)的窄宽度表明在进化实验中实现的高精度的可重复性。分析时,它总结了一个很大的搜索空间,用于库存以获得更好的***解决方案。同时,适当增加突变率有助于避免局部极小值。另一方面,当表示训练步骤数的元参数T增加时,准确性会增加。此外,更大的训练步骤意味着个人必须经历更少的身份突变才能达到给定的训练水平。图3.对元参数的依赖性。在这两个图中,每个圆圈代表一个完整的进化实验的结果。两个垂直轴表示在实验结束时具有最佳验证准确度的个体的测试准确度。所有种群同时进化。每个水平轴值有5个数据点。左边是组大小的影响。为了节省资源,这些实验的单个训练步骤数仅为2560步。可以发现,准确度随着人口规模的增加而增加。右边是个体训练步数的效果。可以观察到准确性如何随着步骤的增加而增加。同时,还应用了其他参数设置技巧进行进一步探索,其表现如下:图4.避免局部攻击。这些数字显示了两次进化实验的进展,而以下事件发生在进化过程中。这些事件使该组织避免陷入局部攻击。在这两个图中,每个点代表一个人。这些实验使用训练步骤较少的小群体,这2560个个体是主要实验。这两种情况都使蜂群更容易被捕获并消耗更少的计算资源。垂直轴是进化算法中的关键验证准确性(或适应性)。上图:一个由100个人组成的群体通过利用突变率上升的时期成功避免局部突变的示例(第5节)。种群向高原阶段进化,正常突变率为每次繁殖1次(左),然后增加突变率,使每次繁殖突变率为5(中),然后再次将突变率更改为每次繁殖1次(正确的)。可以发现,该群体最终避开了最初的平台期。底部:一组50人通过重新加权成功避免局部攻击的示例(第5节)。权重在三个中间刻度标记的每一个处重置3次,并且在每次重置后,人口达到了一个新的更高精确度的平台。总之,本文提出了一种用于大规模搜索的新型神经进化算法,其新颖之处在于它能够处理相当大的神经网络(例如CNN等)。由于该方法采用了新的变异策略,在分类任务中具有很强的竞争力;同时,经过训练的模型实现了良好的可迁移性(从CIFAR-10到CIFAR-100)。但是,考虑到通用应用程序在特定任务中没有多台并行的高性能计算机,存在计算成本高的缺点。还要考虑到如今的分类任务仅需一个强大的CNN分类器即可轻松完成。详尽的搜索似乎没有必要,因为它花费很多而且只能提高一点点准确性。但如果这种方法可以扩展以适应多种任务(例如改进空间的分割和检测),这种尝试是一个好的开始,具有很大的潜力。机器之心英文网原文地址:https://syncedreview.com/2017/05/01/large-scale-evolution-of-image-classifiers/《机器之心(id:almosthuman2014)》]点此阅读作者更多好文
