简介
文章的目的在于提出一个方法让计算机代替人去设计深度学习的网络结构。
由于网络结构复杂,也很难用结构化的数据来表示,于是作者提出了类似生物进化的方法,对随机生成的模型中表现好的进行变异,逐步淘汰表现不好的,最终留下最好的模型。
11个变异方式
1 改变学习率 Learning Rate
2 模型保持不变,但是继续训练一段时间(由于训练继续,模型参数还是会有所变化)
3 重置所有参数Weights(可能可以逃出局部最优值)
4 插入卷积层(卷积核大小 3x3, 步长随机1 或 2,通道数和输入通道数一样, 最后在随机决定是否加上 Batch-Normalization 和 ReLU)
5 移除卷积层
6 改变卷积层的步长(只能改成2的幂)
7 随机改变卷积层的通道数(注意与之相连的通道数也要随之一起改变)
8 卷积核大小
9 插入一对一层(卷积核大小 1x1, 步长随机1 或 2,通道数和输入通道数一样, 最后在随机决定是否加上 Batch-Normalization 和 ReLU)
10 Add-skip 加入skip层,注意这个不是真正的跳过了 而是把之前某一层的结果和后来某一层的结果相加输出给后面一层(当然前提是相加的这两层必须size 和 chanel 个数要一样)
11 Remove-skip 移除skip层
局限性
通过如下的表可以看出某些网络结构并不在这个算法的搜索空间之中,比如DenseNet
(REACHABLE 为 NO 的表示改网络结构并不能由本算法生成)
DenseNet 其实就是不仅仅只把之前的一层的结果喂给当前层,而是把之前所有的层(或者前N层)的结果一起喂给当前层
参考/拓展阅读
Densely Connected Convolutional Networks
Large-Scale Evolution of Image Classifiers