0
雷锋网按:阳春三月,辽阔的南美洲大草原上,两只体格强健的雄性美洲豹正在为争夺一只拥有美丽花纹的雌豹,进行着一场血腥而又激烈的较量。它们心里很清楚,成者为王,败则寇,只有赢得这场战斗,才有机会把自己的基因保留下来流传给后代。
这个方法残酷,但有效。在生物学中,人们将它称之为:进化论。
而当研究机器学习的科学家遇到生物学中的进化论,会有什么新的灵感产生?
答案是:进化算法。
近日,来自谷歌的研究人员Esteban Real和Sherry Moore等人就用进化算法为数据集CIFAR-10和CIFAR-100自动寻找神经网络。实验证明,该方法有效提高了匹配合适神经网络的效率和精确度。
上周,研究人员把实验的论文成果《Large-Scale Evolution of Image Classifiers》发布在了arXiv上,他们在论文中表示,在CIFAR-10的典型实验结果中,其准确度的期望值达到94.1%,标准差达到0.4%,其中最高精确度可达94.6%;而对CIFAR-100的单次实验精确度可达76.3%。
该算法可以为两个常见、但相当有难度的图像分类基准器(image classification benchmarks;)构建大型、精确的神经网络;而且此实验数据高于目前我们所知道的其他所有研究成果。
目前,该神经网络的工作效果完全可以和人类手工构建的神经网络相媲美。
为了达到自动寻找高性能的神经网络结构的目的,研究人员需要进化一个模型簇(population)。
每一个模型,也就是个体(individual),都是一个训练过的结构。模型在单个校验数据集(validation dataset)上的准确度就是度量个体质量或适应性的指标。雷锋网从论文中总结出,每个进化过程都会经历一下几个步骤:
会有一个计算机,也就是工作者(worker),随机从模型簇中选出两个模型;
工作者比较两者孰优孰劣,根据优胜劣汰对模型进行识别;
不合适的模型会立刻从模型簇中被剔除,即代表该模型在此次进化中的消亡;
而更优的模型则成为母体(parent),进行繁殖;
通过这一过程,工作者实际上是创造了一个母体的副本,并让该副本随机发生变异,据此变异修改母本(这一点下面会讲到)。研究人员把这一修改过的副本称为子代(child);
子代创造出来后,就要接受工作者的训练,并在校验集上对它进行评估;
完成之后,把子代放回到模型簇中。此时,该子代则成为母体继续进行上述几个步的进化。
简言之,该进化算法就是在随机选出的两个个体中择其优,因此该方法也属于联赛选择算法(tournament selection)的一种。
另外,如无其他说明,模型簇一般能容纳1000个个体,工作者的数量一般是个体数量的1/4,而消亡个体的目录会被删除,以保证整个算法能长时间在有限空间中运行。
由于子代相较于母体而言发生了变异,因此两者不是完全相同的。在每一代繁殖过程中,工作者都会从预先准备好的变异集合中随机选取变异。
可选的变异共有11中,以下为部分变异类型:
ALTER-LEARNING-RATE(抽样详情见下文)。
IDENTITY(意思是“继续培训”)。
RESET-WEIGHTS重置权重
INSERT-CONVOLUTION(在“卷积主干”随机插入卷积)
REMOVE-CONVOLUTION(移除卷积)
研究人员在论文中强调,实验的初始条件一定要非常简单。
个体一开始都只是基本的线性回归模型,不包含卷积,并且其学习速率仅为0.1。设置这样的条件就是为了保证进化能完全靠自己找到最合适的那个神经模型。
事实上,很早以前就已经有科学家用神经发现法(neuro-discovery,神经进化的一种)自动匹配神经网络了(雷锋网注:参见Miller等人于1989年发表的论文《Designing neural networks using genetic algorithms》)。虽然神经发现法的实验结果表现出很大的发展空间,但由于这一过程通常会涉及到大量的计算,因此,在当时的条件下,该方法在匹配精确度上仍无法和人工设计的模型相提并论。
而Esteban Real和他的团队则解决了这一问题。他们的解决办法是:
开发一种大规模并行且无锁的基础结构,使工作者们在不同的电脑上能够异步运行。它们不会直接与对方通信,而是共用一个存有模型簇的共享文档系统。
文档系统中的目录代表个体;对每个个体所进行的操作,如使之从模型簇中消亡,则表示为目录中的原子重命名(atomic rename)。
但如果遇到一个工作者去修改另一个正在被其他工作者操作着的个体的情况,该怎么解决呢?
研究人员在论文中表示,在这种情况下,受到影响的工作者会放弃操作,寻找其他个体。
附论文地址:https://arxiv.org/pdf/1703.01041.pdf
雷峰网版权文章,未经授权禁止转载。详情见转载须知。