自动机器学习引入

作用

1.自动搜索神经网络模型结构
2.在指定任务上通过Fine-tuning/迁移学习得到较好的结果

神经网络结构搜索之一

如何进行网络结构搜索???

1.搜索则必有搜索空间
2.搜索过程中必有反馈
3.自动化搜索过程

以卷积神经网络为例:
图片说明

1.只保留卷积层,最后一层使用global pooling代替
2.每一个卷积层有五个参数
(1)Filter height / width / number
(2)Stride height / width
3.N层卷积神经网络有N5个参数
4.Filter长宽大小------>[1,3,5,7]
5.输出通道数目------>[24,36,48,64]
6.Stride大小------>[1,2,3]
7.搜索空间大小----->4^2
43^2N (N是一个变化的数)

搜索的反馈:

1.表示神经网络的好坏
2.可以用模型在某个数据集上的准确率
3.需要训练模型

自动化搜索过程

1.N为变长,模型可以表达为序列
具体表达式如下:
[filter_h,filter_w,stride_h,stride_w,channel]*N

N为变长,使用循环神经网络为控制器

图片说明

2.计算反馈,训练用于搜索的网络
图片说明

在计算了反馈之后,如何去使用它呢?

1.令R为反馈,ct为参数
2.搜索过程:调整参数,使反馈最大
图片说明
3.R越大,则控制器生成该网络的概率越大
图片说明

4.采样得到不同的神经网络,训练后累加
图片说明

分布式

1.每个生成的模型都需要训练,耗时
具体结构如下:
图片说明

具体流程如下:
1.控制器参数分布在parameter server中
2.将控制器复制k份
3.每个控制器随机生成若干个神经网络,进行训练
4.神经网络训练完成后得到准确率
5.计算控制器梯度
6.梯度回传

具体细节如下:
1.两层LSTM,每层长度35
2.Adam优化器,学习率=0.0006
3.PS=20,控制器副本数目,=100
4.控制器每次生成m个结构,m=8
5.即800个生成的网络结构同时在训练,同时使用800GPU
6.生成的网络在cifar10训练50 epoch

神经网络结构搜索之二

控制器生成整个网络的缺点

1.每层参数都是独立的
2.学习整个网络,参数搜索空间很大
3.难于学习复杂的子结构
4.没有利用重复层的特点

单层结构学习

1.设计单层,然后堆叠单层得到整个神经网络
2.单层的不同类型:
(1)Normal Cell输入输出size不变
(2)Reduction Cell输入输出size减半
3.单层也有复杂的子结构
图片说明
图片说明
图片说明

操作集合

图片说明

合并操作集合

1.Element-wise相加
2.拼接

一些惯例

1.每次使用Reduction Cell时,将Filter数目翻倍
2.两个先验参数
(1)第一层的filter数目
(2)Normal Cell重复的次数N
图片说明
图片说明

神经网络结构搜索之三

之前的方法出现的问题

1.需要的网络结构数目较大
(1)对于cifar10,需要训练20000个网络
2.搜索空间依旧很大

问题解决方法

1.进一步降低模型的搜索空间

(1)Normal Cell和Reduction Cell统一称为Normal Cell,通过步长来决定size减半
(2)删除没有使用到的节点
(3)合并方法:拼接和相加,尽量使用相加

2.逐步的训练网络,从简单到复杂,而简单模型的训练比复杂模型要快很多

(1)重复执行算法时可以组成网络进行训练
图片说明

3.使用启发式搜索来选择去要去训练的模型结构,这样就降低了需要训练的模型的数量

(1)只训练有可能得到最优结果的网络结构
(2)启发式算法:
第一步:训练数据,已经生成的网络结构及其训练得到的准确率
第二步:预测,再输入一组网络结构参数,得到新的网络结构的准确率预测

启发式搜索

1.特点
(1)可以处理变长输入
(2)正相关,不要求预测得到的准确率多高,但要求排序要对,即能得到好结构的结构排序靠前
(3)样本利用率高,目标是训练尽可能少的网络结构,因而训练启发式搜索算法的数据则会很少
2.步骤
(1)完全训练生成算法第一步的所有可能的候选
(2)训练启发式搜索算法
(3)对于生成算法的后面几步的每一步:
取得所有候选结构
预测候选结构在某数据集上的准确率,按照准确率排序
取出准确率最高的top-K模型结构,进行训练
训练启发式搜索算法
图片说明

人类工程师的操作:

1.预处理数据
2.模型选择
3.模型调参
4.模型后处理结果
5.分析结果