AutoML:深度学习替代人类工作的实践
phpskycn2019/06/14原创 软件综合 IP:云南

一、背景:卷积神经网络的发展

1998年Yann LeCun提出的LeNet-5[1]首次实现了可以有效地进行图像分类的卷积神经网络(CNN)算法,2012年Alex Krizhevsky等人提出的AlexNet[2]首次在ImageNet Large Scale Visual Recognition Challenge上击败了所有其他方法,在这之后的ILSVRC的成绩榜基本被基于CNN的算法占据。在2014年,Karen Simonyan和 Andrew Zisserman提出的VGGNet[3]使用更多3*3的卷积替代大尺寸卷积,2015年Kaiming He等人发表的ResNet[4]提出的残差(Residual)结构极大地缓解了深层网络的梯度问题,使得网络层数从十几层发展到了152层,2016年发表的ResNext[5]是其进一步改进版本,2017年Jie Hu、Li Shen、Samuel Albanie等人发表的SENet[6]是ResNext的进一步改进,取得了最后一届ILSVRC的冠军,也代表着人工设计的CNN结构的最佳性能。Google在2014年-2016年间发表了一系列CNN结构(Inception v1-v4)[7][8][9][10],使用分组卷积也实现了较好的效果。

人工设计的CNN结构的改进通常来人类的经验、对细节的观察和反复实验,这通常是有效的,但有时人类的错误认知也会带来负面影响。

cnn_lenet5.png

Lenet-5的结构


alexnet.jpg

AlexNet的结构,受限于当时的硬件(Nvidia Geforce GTX580 3GB),网络存在两个分支

大量使用大尺寸、大步长的卷积似乎来自于传统的图像处理的经验,但是后来被证明并不是合理的选择

VGG16.png

VGGNet-16的结构,作者通过对比实验尝试了多种不同的结构

resnet34.jpg

ResNet-34的结构以及和VGG/去掉残差连接的结构的对比,常见的ResNet-50/101/152每个block和ResNet-34有些不同

ResNet的设计中除了残差连接之外,整体的结构上也和之前有很大差别,大部分通过最大采样被换成了步长为2的卷积,多个全连接层的结构也被抛弃

其中很多变动来自作者训练、调参的经验

ResNext50.jpg

ResNext-50和ResNet-50的对比,对每个block中3x3的卷积进行了分组

SENET.jpg

SE-ResNet的block结构,SENet可以看作在网络基本的block上加上一个Squeeze-and-Excitation模块,其获得ILSVRC冠军的结构基于ResNext

而Inception v1-v4的结构变化过程也基本由经验积累进行推进:用两个3*3卷积替代7*7卷积、将n*n的卷积拆解为1*n+n*1的卷积、引入batch normalization、调整整体的结构以及引入在ResNet中十分有效的残差连接


二、AutoML的发展

2016年Google发表了被称为网络架构搜索(Neural Architecture Search)[11]的方法,通过强化学习自动搜索最高性能的网络,最终在2017年得到了一个超过所有人类设计方法的网络结构NASNet[12]。NASNet通过一个RNN控制器,在指定的搜索空间内搜索性能最高的网络单元结构;由于在ImageNet训练比较费时,NASNet采用了先在较小的CIFAR-10上训练,之后通过迁移学习扩展到较大型的数据集ImageNet上。

NASNET_STEM.jpg

NASNet的结构,由多个cell(block)堆叠,这部分来自人类设计网络的经验,其中CIFAR10和ImageNet的堆叠方式不同

NASNET_SPACE.jpg

NASNet的搜索空间

NASNET_A_CELL.jpg

最终得到的最优结果(NASNet-A)

NASNET_COMP.jpg

NASNet-A和当时性能最优的网络性能对比,在计算量和参数数量相同的情况下性能由于所有人工设计的网络,精度也超过了人类设计的最好结果,但是其需要大量计算资源,文献中Google使用了500块NVIDIA Tesla P100 GPU。

NAS确度了AutoML的一种思路:设计控制器和搜索空间,控制器在搜索空间内通过计算量较小的代理任务寻找到最佳结果,最终通过迁移学习进行拓展,后续Google又提出了一种优化搜索空间的方法PNASNet[13]。

简单的直接搜索本身依然是较低效的方法,在2018年Google又提出了使用进化算法优化的NAS方法[14],最终得到的网络结构被称为AmoebaNet。

AmoebaNet.jpg

基于进化的NAS搜索效率和强化学习(RL)、随机搜索(RS)对比


除了对搜索过程的优化尝试外,AutoML的应用范围也得到了拓展,2018年Google发表了NAS在用于移动设备的轻量级CNN结构上是成果MNASNet[15]。MNASNet基于之前用于移动设备的CNN网络MobileNet v1/v2[16][17]的经验,搜索方法和NASNet比较接近;但受制于移动设备的性能其搜索空间仅包含深度分离卷积,并且在搜索策略上加入了对实际运行速度(工作在Google Pixel 1上)的控制策略。

MNASNET.jpg

MNASNet-A1在不同通道数量/输入尺寸下的性能和人工设计的MobileNet v2的对比


基于类似MNASNet的结构,Google在2019发表了一种可以灵活扩展的网络结构EfficientNet[18],通过对搜索到的高效的基础网络EfficientNet-B0,使用多维度(宽度、深度、分辨率)扩展得到一系列可灵活调整的高效网络。

EfficientNet.jpg

EfficientNet 和其他网络结构的对比,相比最初的NASNet效率有了明显的提高

2019年Google还将AutoML应用到了Object Detection上,通过搜索最有效的FPN结构,改进RetinaNet[19],得到了当前最高效的Object Detection网络NAS-FPN[20]

NASFPN.jpg

NAS-FPN的效率比于人工设计的检测网络高很多


三、替代更多人类的工作?


AutoML目前已经取得了令人瞩目的成果,在一定程度上替代了人类设计CNN网络结构的工作。那么在其他领域,是否可能存在类似的方式实现自动的设计方法呢?至少比较缺乏创造性的领域存在这种可能性。模仿目前AutoML的模式,首选需要确定控制策略、搜索空间,并且制定计算自动搜索得到的结果和目标结果的差别的方法(损失函数),目前来看,较简单的编程(偏向业务逻辑处理的代码、网页/App前端)、PCB设计等领域都值得探索。

例如可以通过人类的经验,确定Android App每个常见UI组件的代码搜索空间,使用高效的搜索算法进行控制,通过量化最终的UI效果和设计的差异计算损失,实现自动的UI设计;这种模式下完全不需要App前端工程师,只需要设计师提供设计图,就能得到可用的代码。

在用人成本不断高涨的今天,这些尝试会有相当高的经济价值,摆脱对大量劳动力的依赖也有利于提高资源调度的效率。



参考文献

[1]XXXXXXXXXXXXXXXXXXXXX/exdb/publis/pdf/lecun-01a.pdf

[2]XXXXXXXXXXXXXXXXXXXXXX/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

[3]XXXXXXXXXXXXXXXXX/pdf/1409.1556.pdf 

[4]XXXXXXXXXXXXXXXXX/pdf/1512.03385.pdf

[5]XXXXXXXXXXXXXXXXX/pdf/1611.05431.pdf

[6]XXXXXXXXXXXXXXXXX/pdf/1611.05431.pdf

[7]XXXXXXXXXXXXXXXXX/pdf/1409.4842.pdf 

[8]XXXXXXXXXXXXXXXXX/pdf/1502.03167.pdf 

[9]XXXXXXXXXXXXXXXXX/pdf/1512.00567.pdf 

[10]XXXXXXXXXXXXXXXXX/pdf/1602.07261.pdf

[11]XXXXXXXXXXXXXXXXX/pdf/1611.01578.pdf 

[12]XXXXXXXXXXXXXXXXX/pdf/1707.07012.pdf

[13]XXXXXXXXXXXXXXXXX/pdf/1712.00559.pdf

[14]XXXXXXXXXXXXXXXXX/pdf/1802.01548.pdf

[15]XXXXXXXXXXXXXXXXX/pdf/1807.11626.pdf

[16]XXXXXXXXXXXXXXXXX/pdf/1704.04861.pdf 

[17]XXXXXXXXXXXXXXXXX/pdf/1801.04381.pdf

[18]XXXXXXXXXXXXXXXXX/pdf/1905.11946.pdf

[19]XXXXXXXXXXXXXXXXX/pdf/1708.02002.pdf

[20]XXXXXXXXXXXXXXXXX/pdf/1904.07392.pdf 

 

 


来自:计算机科学 / 软件综合
3
 
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
zx-16533
5年7个月前 修改于 5年7个月前 IP:广东
860031

也就是说现在ML工程师自己也要被ML淘汰了?😂

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
phpskycn作者
5年7个月前 IP:云南
860059
引用zx-16533发表于1楼的内容
也就是说现在ML工程师自己也要被ML淘汰了?😂

只是没有足够算力会被淘汰……

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
Leonard
5年2个月前 IP:浙江
866237

我一直认为最先被AI淘汰的就是低端程序员。现在看来已经不远了。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
phpskycn
专家 老干部 学者 机友 笔友
文章
402
回复
4591
学术分
8
2009/03/15注册,3个月3天前活动

CV

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}