深层网络在图片分类问题上表现优异,但网络结构的设计上并没有统一的指导。进化是构建深度网络架构的一种方式。利用本文的自动化方法得出的深度网络结构,已经能在CIFAR-10上取得可以跟人工设计的网络相媲美的结果。
Methods
Evolution Algorithm
整个算法的核心是如下的tournament selection:
- population: 供筛选的群体
- individual: 个体,带有指标fitness,特别地,指在CV集上的损失
- worker: 筛选者,上帝
- population 中的 individual 均已在训练集上训练完毕,带有指标 fitness
- worker 随机选择一对 individual,比较 fitness,较差的 individual 被舍弃
- 表现较好的 individual 成为parent,对其施加 mutation (变异),得到 child
- 训练 child 并在CV集上得到其 fitness,归还到 population 中
Encoding and Mutation
个体的网络结构和部分参数被编码为DNA。
能够施加的变异有:
- 改变学习率
- 恒等(不变)
- 重设参数
- 加入卷积层
- 移除卷积层
- 更改卷积层的stride参数
- 更改卷积层的Channel参数
- 更改卷积核大小
- 加入skip连接(类似ResNet)
- 移除skip连接
Computation
计算方面采用了并行、异步、无锁的策略。
建立约为 population 数1/4的 worker,分别运行于不同的机器上,之间独立异步。population 共享,若两个 worker 在一个 individual 上产生冲突,则后一个 worker 停止并等待再次尝试。
Weight Inheritance
除了架构之外,子模型还会继承父母模型未经变异影响的隐藏层参数(不仅是DNA中的),这样使子模型的训练时间大幅减小。
Experiments and Results
文章的主要结果如下图:
最右边的结构是在CIFAR-10上发现的最好(CV集准确度最高)的结构,左边两个是它的祖先。其中白色块相当于简单的线性层,彩色块则带有非线性激活,可以看到,不同于人工设计的网络,某一线性层之后可能包含多个非线性层。
另外,利用本文的模型,也在CIFAR-100上做了实验,可以达到76.3%的准确率,一定程度上说明了算法的扩展性。
Analysis
上图说明随着 population 规模和训练步数的增加,模型的整体水平在变好。
在模型陷入局部最优值时,提高变异率和重设参数会使群体继续进化。这是由于变异中包含恒等映射等不改变模型架构的变异类型,再加上weight Inheritance,一些子模型只是训练次数比其他模型多很多的“活化石”。
小结
Google I/O时就提到了自动筛选最优网络结构,但没有公布论文。但将网络结构自动化,必定是未来的方向。个人认为,ResNet就相当于自动化网络深度(一些层实际上被跳过了),而Inception单元似乎包含了太多的先验,而且也没有逻辑上的证据说明这样的结构更有效。网络结构本身就是先验信息,而要达到通用的人工智能,这些先验也必须由模型自行发觉。
强化学习本身也是一个进化过程,应该也有相关的工作将强化学习的框架应用于网络结构的学习上。
更进一步地,若数据是一阶信息,深度网络的隐藏层学到的表示是二阶信息,深度网络的结构则是三阶信息,从一阶到二阶的框架是不是都可以移植到二阶到三阶上来?关键之处在于我们还没有描述好深度网络的结构空间,但就现在的发展看,深度网络的一些基本结构(conv, BN)等,已经被作为基本单元(离散的)来进行构建和筛选了,也就是说,所有深度网络构成的空间之性质如何,还有大量的工作可以做。