前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度 | 利用进化方法自动生成神经网络:深度进化网络DENSER

深度 | 利用进化方法自动生成神经网络:深度进化网络DENSER

作者头像
机器之心
发布2018-05-11 13:26:44
1.3K0
发布2018-05-11 13:26:44
举报
文章被收录于专栏:机器之心机器之心

选自CISUC

作者:Filipe Assunção 等

机器之心编译

参与:程耀彤、李泽南

在为特定任务构建神经网络算法时,想要达到最佳性能需要大量的设计和手动调整。葡萄牙科英布拉大学计算设计和可视化实验室的研究者们利用进化算法的策略提出了深度进化网络结构表征(DENSER),可以自动进行多层深度神经网络的结构设计和参数调优,在没有先验知识的情况下,该方法生成的神经网络达到了业内最佳性能。

论文:DENSER: Deep Evolutionary Network Structured Representation

论文链接:https://arxiv.org/abs/1801.01563

深度进化网络结构表征(DENSER)是一种利用进化计算自动设计人工神经网络(ANN)的新方法。该算法不仅搜索最优的网络拓扑结构,而且对超参数 (如学习或数据增强参数) 进行调优。自动设计是通过两个不同层次的编码方式来实现的,其中外层编码网络的一般结构,内层编码与每层相关联的参数。允许的层数和超参数值的范围是通过一种人类可读的上下文无关语法来定义的。

这项工作的主要贡献是:

  • DENSER,一种基于进化原理的通用框架,可自动搜索具有不同层次类型和/或目标的大型深度网络的适当结构和参数设置;
  • 一个自动生成的 CNN,在没有任何先验知识的情况下,对 CIFAR-10 数据集的分类是有效的,其平均准确度为 94.27%;
  • 证明了由 DENSER 进化的 ANN 概括性很好。具体来说,CIFAR-100 数据集的 78.75% 的平均精度是由一个拓扑结构专门为 CIFAR-100 数据集而进化的网络实现的。据我们所知,这是通过自动设计 CNN 的方法对 CIFAR-100 数据集报告的最好结果。

最好的训练模型可以在 https://github.com/fillassuncao/denser-models 中找到。

新方法:DENSER

为了促进 ANN 的结构和参数的进化,我们提出了 DENSER:深度进化网络结构表征。DENSER 结合了遗传算法(GA)和动态结构语法演变(DSGE)的基本思想。

表示方法

每个解决方案通过一个有序的前馈层序列及其各自的参数对 ANN 进行编码;学习和任何其他超参数也可以对每个个体进行编码。候选解决方案的表示形式在两个不同的层次上进行:

  • GA 层:对网络的宏观结构进行编码,并负责表示随后用作语法开始符号的指示符的层序列。它要求对网络允许的结构进行定义,例如层的有效序列。
  • DSGE 层:对与层相关的参数进行编码。参数及其允许的值或范围必须在由用户定义的语法中编码。

交叉

研究者提出了两种交叉操作符,它们基于不同的基因型层次。在当前工作背景下,一个模块并不代表可以多次复制的一组层,而是代表属于相同 GA 结构索引的一组层。

考虑到所有的个体有同样的模块(可能有不同的层数),第一个交叉运算符是一个单点交叉,它在同一个模块内改变两个个体之间的层。

第二个交叉运算符是一个统一的交叉,它改变了两个个体之间的全部模块。

改变

我们开发了一套改变运算符,专门用于促进 ANN 的进化。在 GA 层上,改变旨在操纵网络结构:

  • 添加层:新层是根据要放置层的模块的开始符号的可能性生成的;
  • 复制层:随机选择一个层并将其复制到模块的另一个有效位置。复制是通过引用进行的,即如果参数在层中被改变,所有的副本都被修改;
  • 删除层:选中一个层并将其从给定模块中删除。

上面所说的改变运算符只作用于网络的一般结构,想要改变层的参数需要使用下面的 DSGE 改变:

  • 语法改变:扩展可能性被另一个替代;
  • 整数改变:产生一个新的整数值(在允许的范围内);
  • 浮动改变:高斯扰动作用于给定的浮点值。

实验结果

为了测试新的方法,我们对 CNN 的生成进行了实验,以对 CIFAR-10 基准进行分类。CIFAR-10 由 60000 个实例组成,每个实例都是一个 32 × 32 的 RGB 彩色图像,属于十个可能的类别之一。由 DENSER 进化而来的解决方案被映射到 keras 模型中,从而让我们可以测量它们的性能。任务的目标是最大化目标识别任务的准确性。

为了分析进化拓扑的广泛性和可扩展性,我们将采用最好的 CNN 拓扑机构,并对 CIFAR-100 基准的分类进行测试。

用于 CIFAR-10 的 CNN

我们在 CIFAR-10 数据集的分类任务上进行了 10 次生成 CNN 的进化实验。对于生成的网络,我们分析了它们的适应性(即分类任务的准确性)和隐藏层的数量。

图 1. 几代最佳个体的适应度(上面)和隐藏层数(下面)的进化

图一描述了几代以来最好的 CNN 的平均适应度和层数的进化。对结果进行简要的研究表明,进化正在发生,并且解决方案趋向于在 80 代的周围聚集。可以观察到两种不同的且相互矛盾的行为。从进化的开始到大约第 60 代,性能的增加都伴随着层数的减少;这种现象从第 60 代发生变化并一直持续到最后一代,这期间随着性能的增加,最佳网络的隐形层数量随之增加。这个分析揭示了一个明显的矛盾,它是在第一代随机生成的解决方案中有大量的层,它们的参数是随机设置的这一事实之后解释的。

图 2.DENSER 找到的表现最佳网络拓扑结构

图 2 展示了在进化过程中发现的最合适的网络(在验证精度方面)。进化网络最令人困惑的特征是在拓扑结束时使用的密集层的重要性和数量。据我们所知,对如此大量的密集层进行顺序使用是前所未有的,可以说人类永远不会想到这样的拓扑结构,这使得这种进化的结果非常有意义。

一旦进化过程完成,在每次运行中发现的最佳网络将被重新训练 5 次。首先,我们用在进化过程中使用的相同的学习速率来训练网络(lr=0.01),但是在 400 个时期中(而不是 10 个)。通过这个设置我们平均获得了 88.41% 的测试集的分类准确度。为了进一步提高网络的准确性,我们采用了 Snoek 等人描述的策略:我们为测试集的每个实例产生 100 个增强图像, 并且预测是 100 个增强图像的平均置信度的最大值。在此验证方法之后,最佳进化网络测试集的平均准确度提高到 89.93%。

为了研究是否有可能提高最佳网络的性能,我们用相同的 CGP-CNN 策略重新训练他们:一种从 0.01 开始变化的学习速率;在第 5 个 epoch,它增加到 0.1;到第 250 个 epoch,下降到 0.01;最后在第 375 个 epoch 下降到 0.001。用之前的训练方式,最适合的网络的平均准确度提高到 93.38%。如果在测试集中进行数据增强,则平均准确度为 94.13%。,即平均误差为 5.87%。

图 3.CIFAR-10 的结果

图 3 显示了 DENSER 与用其他方法得到的最佳结果的比较。对结果的分析表明,DENSER 是精度最高的。在我们的方法中可训练参数的数量要高得多,因为我们允许在进化的 CNN 中放置完全连接的层。此外,在进化过程中,没有先验知识被用来使搜索空间发生偏差。

推广到 CIFAR-100

为了测试进化网络的广泛性和可扩展性,我们在 CIFAR-10 数据集上采用由 DENSER 生成的最佳网络,并将其应用于 CIFAR-100 数据集的分类。为了让网络在 CIFAR-100 数据集上工作,我们只将 softmax 层改为有 100 个输出神经元,而不是 10 个。

每个网络的训练是随机的;由于数据增强过程,所以初始条件是不同的,并且使用数据集的不同实例来训练它们。因此,为了进一步改进结果,我们研究了 Graham 提出的测试 fractional max-pooling 性能的方法是否会提高我们网络的性能。简单来说,不是用单一的网络,而是使用一个集合,集合中的每个网络都一个是网络独立训练的结果。使用该方法,训练 5 次的同一网络的集合的测试准确度为 77.51%,训练 10 次的集合的测试准确度为 77.89%,训练 12 次的集合的测试准确度为 78.14%。这些结果比文献中所报道的用相当标准的数据增强方法进行进化的 CNN 的结果更好。

此外, 我们未采用相同的网络结构来组成集合,而是用 DENSER 发现的两个最好的网络拓扑结构来测试建立一个集合的性能,类似于 Real 等人所做的。按照这种方法, 准确度提高到了 78.75%。

图 4.CIFAR-100 的结果

图 4 的表格显示了 DENSER 在 CIFAR-100 上获得的结果与其他方法获得结果的比较。

原文地址:https://cdv.dei.uc.pt/denser/

本文为机器之心编译,转载请联系本公众号获得授权。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档