快捷搜索:  汽车  科技

神经网络的算法实现(用进化算法自动设计神经网络)

神经网络的算法实现(用进化算法自动设计神经网络)DSGE:编码与图层有关联的参数,参数及其允许的值或范围被编码在必须由用户定义的语法中。遗传算法:编码网络的宏观结构,并且负责表示图层的次序,之后用作语法开始符号的标志。它要求定义网络允许的结构,即图层的有效顺序。可自动生成的卷积神经网络(CNN),在没有任何先验知识的情况下可以有效对CIFAR-10数据集进行分类,平均准确率为94.27%;用DENSER生成的ANNs表现得很好。具体来说,在CIFAR-100数据集上的平均准确率为78.75%,这是通过一个由CIFAR-10数据集生成的网络获得的。就我们所知,这是自动设计CNN方法在CIFAR-100数据集上得出的最佳结果。为了改进人工神经网络的结构和参数,我们提出了“深度进化网络结构表示”(DENSER),它集合了遗传算法(GAs)和动态结构化语法进化(DSGE)的基本思想。

编者按:近日,科英布拉大学计算机设计与视觉实验室(Computational Design and Visualization Lab)的Filipe Assunção、Nuno Lourenço、Penousal Machado、Bernardete Ribeiro发表论文,推出了一个基于进化原理的通用框架,能自动生成卷积神经网络(CNN),引起众人瞩目。以下是论智编译的内容。

深度进化网络结构表示(DENSER)是一种用进化算法自动设计人工神经网络(ANNs)的新方法。该算法不仅能搜索最佳网络拓扑结构,还能调整超参数(比如学习或数据增强超参数)。为了实现自动设计,该模型分为两个不同的层级:其中外层编码网络的总体结构,内层编码每层的相关参数。图层和超参数的数值范围是通过人类可读、与上下文无关的语法来定义的。

本文的主要成果有:

  • DENSER:一种基于进化原理的通用框架,可以自动搜索适合具有不同图层类型或目标的大规模深度网络的结构和参数;

  • 可自动生成的卷积神经网络(CNN),在没有任何先验知识的情况下可以有效对CIFAR-10数据集进行分类,平均准确率为94.27%;

  • 用DENSER生成的ANNs表现得很好。具体来说,在CIFAR-100数据集上的平均准确率为78.75%,这是通过一个由CIFAR-10数据集生成的网络获得的。就我们所知,这是自动设计CNN方法在CIFAR-100数据集上得出的最佳结果。

DENSER

为了改进人工神经网络的结构和参数,我们提出了“深度进化网络结构表示”(DENSER),它集合了遗传算法(GAs)和动态结构化语法进化(DSGE)的基本思想。

  • 遗传算法:编码网络的宏观结构,并且负责表示图层的次序,之后用作语法开始符号的标志。它要求定义网络允许的结构,即图层的有效顺序。

  • DSGE:编码与图层有关联的参数,参数及其允许的值或范围被编码在必须由用户定义的语法中。

  • 交叉

    这一过程中提出了两种交叉算子,他们基于不同的基因型水平。在当前工作的背景下,一个模块并不代表能复制多次的层组,而是属于同一个遗传算法结构指数的层。

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

    第二个交叉算子是一个统一的交叉,它改变了两个个体之间的整个模块。

    变异

    为了促进人工神经网络的进化,我们开发了一套变异算子。在遗传算法水平上,变异算子旨在操纵网络结构:

    • 添加图层:根据要放置图层的模块的起始符号可能性生成新图层;

    • 复制图层:随机选择一个图层,并将其复制到模块的另一个有效位置。这种复制是相连的,如果图层中参数改变,那么所有复制层也将改变;

    • 删除图层:从给定的模块中选择并删除一个图层。

    上述变异算子只是网络中的一般结构;要改变层的参数,需要使用以下DSGE变异:

    • 语法变异:一种扩展可能性(expansion possibility)被另一个替代;

    • 整数变异:在允许范围内产生一个新的整数值;

    • 浮点变异:对给定的浮点值进行高斯摄动。

    实验结果实验结果

    为了进行测试,我们在CIFAR-10数据集上进行CNN生成实验。CIFAR-10中有60000个样本,每个都是32×32的RGB彩色图像,这些图像一共被分成10类。DENSER提出的解决方案将被映射到Keras模型,从而检测它们的性能。任务的目标是测量模型识别对象的准确性最大是多少。

    为了分析网络的泛化和扩展能力,我们采用了最佳的CNN拓扑结构,并对CIFAR-100数据集进行分类测试。

    CIFAR-10上的CNN进化

    在生成的CNN上,我们进行了10次CIFAR-10数据集的分类测试。对于生成的网络,我们分析它们的拟合度(fitness,即分类任务的准确性)和隐藏层的数量。

    神经网络的算法实现(用进化算法自动设计神经网络)(1)

    图1

    图1描述了在迭代中最佳CNN的平均拟合度和层数的演变。结果表明,进化正在发生,解决方案往往出现在第80次迭代处。从进化开始到大约第60次,性能的提升都伴随着层数的减少;从第60次往后,性能的提升会导致最佳网络的隐藏层数量增加。这一分析表明,第一代随机生成的解决方案有很多层,其参数也是随机设置的。

    神经网络的算法实现(用进化算法自动设计神经网络)(2)

    图2

    进化过程中最佳网络已在图2中表示出来(根据准确度判断)。进化网络最让人不解的特点是在拓扑结构结尾使用密集层的重要性和数量。据我们所知,如此大量的密集层的使用顺序是前所未有的。甚至可以说,人类永远不会想出这样的结构,所以这个进化结果非常有意义。

    一旦进化过程完成,每次生成的最佳网络将被重新训练五次。首先,我们用相同的学习速率训练网络(lr=0.01),不过这次不止测试10次了,而是400次。之后我们将获得88.41%的平均分类精度。为了进一步提高网络的准确度,我们对测试集中的每个样本进行增强,生成100张增强图像,并且预测这100张图像上的平均最大置信度值。最终,最佳进化网络的平均准确度提高到89.93%。

    为了研究是否有可能提高最佳网络的性能,我们使用CGP-CNN,用相同的策略训练它们:最初的学习速率为0.01,随机变化;第五次时增加到0.1;第250次是又减少到0.01;最终在第375次时减少到0.001.根据之前的训练策略,网络的平均准确度提升到93.38%。如果增强数据集中的数据,那么平均准确度为94.13%,即平均误差为5.87%。

    方法准确度
    DENSER94.13%10.81 × 106
    CGP-CNN(ResSet)94.02%1.68 × 106
    CGP-CNN(ConvSet)93.25%1.52 × 106
    Snoek et al.93.63%-
    CoDeepNEAT92.7%-

    CIFAR-10结果对比

    上表是DENSER与其他方法生成的最佳结果的对比,可见DENSER的准确度最高。另外,在我们的方法中,可训练参数的数量要高得多,因为我们允许在进化的CNN中放置完全连接的层。另外,在进化过程中,没有用到先验知识。

    CIFAR-100上的泛化能力

    为了测试进化网络的泛化和可扩展性,我们将在CIFAR-10上生成的最佳网络应用于CIFAR-100上。为了能使网络正常工作,我们只将softmax层的输出神经元从10个改为100个。

    每个网络的训练是随机的;由于数据增加,初始条件的不同,所以训练它们要使用不同的样本。因此,为了进一步改进结果,我们研究了Graham提出的测试一部分最大池的性能是够能提高我们网络的性能。简而言之,我们不再使用单独的网络,而是使用一个集合,其中的每个网络都是独立训练的结果。利用这种方法,训练五次的同一个单一网络的准确度为77.51%;含有10个网络的集合的准确度为77.89%;12个网络的集合的准确度为78.14%。这些结果均优于使用标准数据增强的CNN方法。

    此外,组成集合的也并不是同样结构的网络,而是选用DENSER构建的两个最好的网络拓扑结构。按照这种方法,我们得到的模型准确度提高至78.75%。

    方法准确度
    DENSER78.75%
    Real et al.77.00%
    Graham73.61%
    Snoek et al.72.60%

    CIFAR-100结果

    上表表示DENSER在CIFAR-100数据集上的结果与其他方法的比较。

    猜您喜欢: