前言
谷歌大脑Google Brain的一篇论文,提出了目前最好的图像分类的网络架构。之前的研究表明,网络结构的设计无非是一些卷积核、非线性变换、层之间的连接等之间的组合。
那么当然就可以使用RNN来预测卷积单元 convolutional cell,单元中的网络元素的组合不再受人控制,再将卷积进行堆叠stack,构成对特定数据集的网络。
注意:
只预测能够堆叠的单元!而网络的整体结构还是需要人为的设计,比如单元的重复次数等。每个单元相同的结构不同的参数。
目前在keras上已经增添了Nasnet的应用,数据如下:
特别注意,只有23M大小的NASNetMobile效果也是非常的好!!
网络结构
RNN预测的最佳网络单元
前面已经提到了,Nasnet其实就是新的网络单元之间的堆叠,搭积木一样搭起来的,所以最为核心的其实是构成网络的这些单元。我们先看一下最佳网络单元的结构,然后再讨论网络单元到底是怎么通过搜索算法以及RNN得出来的。
- Normal Cell: 特征图经过此Cell之后大小不变。
每个Cell都是由非常多的小单元组成的,每个小单元都有五个部分,小单元如下图红色线圈出的部分,详情可以看3。
- Reduction Cell: 特征图经过之后大小减半。
最佳单元的基本模块组成
组成Normal Cell和Reduction Cell的基本模块样例如下图,可以对应到1和2结构上,在1图中即为红色线圈出的部分:
具体的网络结构
在cifar10和imagenet上的网络结构如下图所示:
生成网络cell
NAS网络架构搜索
在NAS中,控制器递归神经网络(RNN)对具有不同结构的子网络进行采样。对子网络进行收敛训练,以获得外置验证集上的一些精度。得到的精度用于更新控制器,以便控制器随着时间的推移生成更好的体系结构。控制器的权重会随着策略梯度而更新。主要还应用了强化学习。
基本流程
每一个小的基本模块都包括五个部分,每一个cell都会重复进行B次基础模块的预测,在此次最好的B是5⃣️次,如上图的Normal Cell和Reduction Cell,两个示意图中绿色的部分为5个,即重复了5次基本模块的预测。
每一个基本模块的生成流程(5步)如下:
步骤1:从
h
i
h_i
hi,
h
i
−
1
h_{i-1}
hi−1或从隐状态的集合中选择一个隐藏的状态,例如上图基本模块的hidden layer A。
步骤2:从与步骤1相同的选项中选择第二个隐藏状态,例如上图基本模块的hidden layer B。
步骤3:选择要应用于步骤1中选择的隐藏状态的操作。(黄色框)
步骤4:选择要应用于步骤2中选择的隐藏状态的操作。(黄色框)
步骤5:选择一个方法来组合步骤3和步骤4的输出来创建。(绿色框)