介绍
我们知道,把神经网络拆解,可以把它归结为几个元素的排列组合而成,例如,以卷积神经网络为例,其主要由卷积层,池化层,残差连接,注意力层,全连接层等组成,如果我们把它们抽象,就可抽象为一个个cell块拼接而成。每个cell块内部可由卷积操作(例如分组卷积,分组数为2或者4),卷积后通道数,卷积核大小,内部残差连接,复制前面模块的数量等参数构成。而cell块之间又可相互连接构成稀疏或者稠密连接构成整体的网络。
神经结构搜索(NAS)能够自动搜索构建神经网络结构,它以上述的cell块组成部分以及cell块之间的关联关系作为搜索空间,自动探测符合任务的神经网络结构。这篇论文就是基于神经结构搜索自动搜索构建出超分辨率网络结构,主要以遗传算法进行建模优化。
模型建立
模型的结构示意图如下:

输入为低分辨率图像,中间特征抽取由一个个cell模块组成,最后输出利用亚像素上采样获取。亚像素采样可由如下图操作方式处理:

将最后一层卷积层输出的通道平铺开来,得到最终的高分辨率图像。
神经架构搜索主要是自动搜索出特征抽取层。从宏观上看,搜索空间主要为cell间的连接关系。定义
从微观上看,先从cell内部上看,设计由以下几个部分组成搜索空间:
1.卷积,其中卷积采用分组卷积,分组数可选为[2,4]。输出的形状类似于倒置的瓶状,扩展率为2
2.通道数选择为:[16,32,48,64]
3.卷积核大小选择为:[1,3]
4.是否带有内部的残差连接:[true,false]
5.重复的块数:[1,2,4]
那么,总共会有:
ps:论文中说有192种,论文中选择的搜索空间组成如下图,没理解出怎么会有192种,而且卷积的选择inverted bottleneck block with an expansion rate of 2也不确定到底怎么处理,具体代码也没放出来。这些不影响我们对整体算法思想的理解,如果有了解的,请评论讲解下。。。

总共有
故整体网络的编码由
模型生成
模型生成过程以遗传算法为主,具体为带精英策略的非支配排序的遗传算法(NSGA-II)。具体算法步骤如下:
1.初始化。初始化种群
2.得到新父种群。对
这里介绍下Paerot支配关系。
对于最小化多目标问题,对于多目标向量
若对于
若对于
若对于
而快速支配排序算法步骤如下:
(1)依次遍历每个个体,记录下非支配个体数量
(2)取
(3)对序号为
支配排序用到下面这三个量组成的向量:
(1)PSNR(峰值信噪比),对于两幅图像,计算方法如下:
其中n为每像素的比特数.
(2)计算的花费
(3)参数的数量
之后计算拥挤度距离,这里的拥挤度距离计算方法如下:
(1):对于排序号为
(2):针对目标函数排序,如果排序后个体在边界,则设置拥挤度距离为inf,否则按下式计算:
具体看参见论文Improved Crowding Distance for NSGA-II。
先按
3.选择。选择使用二进制锦标赛法,即从种群中随机选择2个个体,更优的留下。
4.交叉。选择得到的个体,随机选择位置交互编码的元素,例如,
对于模型A,其编码为
对于模型B,其编码为
而生成的模型C,则分别对
5.变异。
对于个体中的每个需要变异的cell块,随机生成一个随机数
若
$S$
中选择一个cell。若
若
而对于整体的cell组成连接结构,则利用RNN构成的控制器作为强化模型进行选择变异。结构图如下:

最后一层输入由前面所有的嵌入层向量拼接而成,通过一个三层的全连接网络输出,最后输出的全连接神经元数量为
模型由两个参数组成,LSTM参数
其中
训练得到的网络分别对宏观结构进行变异。
6.令
总结
NAS可以帮助我们自动构建神经网络结构,只要数据足够,就能够得到足够优秀的网络。人也不失为经历这一过程,通过数据,自动识别各种物体,然后最后把识别的知识综合起来做推理。
这篇论文提供了NAS的一种设计方式,以cell块为主,从微观和宏观空间上,定义搜索空间,并对其进行编码,以NSGA-II算法作为优化算法,之后组合得到理想的网络结构。
参考文献
Fast, Accurate and Lightweight Super-Resolution with Neural Architecture Search
https://www.jianshu.com/p/ae5157c26af9
https://www.cnblogs.com/bnuvincent/p/5268786.html
https://blog.csdn.net/weixin_43202635/article/details/82708916
Improved Crowding Distance for NSGA-II