76

学习迁移架构用于Scalable图像的识别

 6 years ago
source link: http://mp.weixin.qq.com/s/-KssC3yXsG3ZuV8-I6D_nQ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

学习迁移架构用于Scalable图像的识别

Original Edison_G 计算机视觉研究院 2017-12-07 03:29 Posted on

T002R90x90M000001JfsnK1Tje4U.jpg

论文出自Google Brain,是对前一篇论文的改进,前一篇文章讲述了用RNN去搜索一个最好的网络结构,而这篇文章认为之前的搜索空间太大,效果不好,所以改成搜索CNN的效果最好的conv cell。再用这些conv cell来构建一个更好的网络。 

链接:https://arxiv.org/abs/1707.07012


1、Introduction  

ImageNet上学习到的分类网络,其特征迁移到其他任务时,往往能获得更好的效果。但是如果将前一篇文章提出的NAS直接在ImageNet上训练,则计算量非常大。所以作者就想在CIFAR-10上训练得到一个比较好的网络,然后迁移到ImageNet上也能获得很好的效果。为了能完成这种迁移,作者设计一个与网络深度和图片大小无关的搜索空间。所以,作者觉得CNN网络都是由卷积层构成的,搜索最好的CNN结果可以退化为搜索一个好的CNNCell。  2.Method

因此作者重心放在设计一个Cell的搜索空间。文中提出两种CellNormal Cell Reduction CellNormal Cell是输入输出大小不变,而Reduction Cell的输出的height和width为原来的一半。网络则由两种不同的Cell叠加构成,如图:

网络结构

网络结构有两个可变参数,N是Normal Cell的叠加个数,另外一个是每个Cell里面的卷积核的个数 。这两个数并不是学习到的,而是人为指定的。后面作者分别用N=4和N=6做了实验。另外作者提到一个通识,为了使得某层的隐藏状态基本不变,我的理解是大概使得表征能力没有下降,所以在某一层的输出变小时,需要增加该层的滤波器个数,使得输出基本维持稳定。

下面说说怎么用RNN控制器构建一个Cell。每个Cell有两个输入hi,hi-1,每个Cell包含5个Block,其中每个Block如下图右侧。其中每个Block需要进行五种操作,这五个操作由RNN控制器给出。如下图左侧,预测。

Block的产生

这五个操作从如下选项中选出:

Image

block的可选操作

block构建好后,block的输出就可以作为下一个block构建时的可选hidden state输入。至于为什么一个Cell包含5个block,作者没有做实验,只是说他们用了这个效果比较好。 由实验知道,最后效果最好的Cell是如下结构,作者称为NASNet-A。留意后面关于NASNet-A的实验。

Image

NASNet-A

3.Reslut

3.1 CIFAR-10

Tabel 1主要在CIFAR-10上和其他网络对比,在相当的计算复杂度上,都获得不错的表现,超越了shake-shake网络。

Image

3.2 ImageNet

作者强调他们仅仅是使用了CIFAR-10上的最优网络,从0开始在ImageNet上训练。并且作者发现这些预测的Cell之间没有residual connection,并且作者做实验发现手动加入residual connection并没有提升效果。

Image

上图是在大平台上的对比,可以看到NASNet-A基本上都是state-of-the-art

Image

图5

并且由图5可以知道相同的精度,NASNet-A的计算量更小。  

然后作者再在计算资源非常有限的平台,比如手机,上和其他网络进行对比,如下图:

Image

可以看到在资源有限的情况下,NASNet-AMobileNetShuffleNet都要好。并且计算量相当。

3.3 网络在目标检测上的应用

作者继续把得到的网络并进Faster-RCNN的框架中,发无论在大平台还是像手机这种小平台上都比现有的网络效果更好。

Image

目标检测上的比较

3.4 搜索方法的有效性

最后,作者还比较了强化学习brute-force random search两个方法的有效性。从迭代20个epochs的模型效果看,强化学习明显更有效。


读者的感想:

这要从ICLR2017的时候说起,google brain 当时出了一个工作,提出了神经网络的设计可以用神经网络来学习(designing netwotks to learn how to design networks),就是本文中引用的NAS(Neural architecture search with reinforcement learning)。其实当时mit也有类似的工作,但是效果没nas好,我觉得主要是gpu没他们多(有钱真的可以为所欲为(。・ˇ_ˇ・。:))。 

nas 基于强化学习,方法也很暴力,搜索空间也很大,在cnnrnn上都做了探索,使用了800块gpu,当然只在cifair10上做的啦,而且没有超过densenet的性能。 由于网络结构的搜索空间大,所以设计的网络连接也有些反人类,特别是rnn,手机上码字,不好贴图,有兴趣可以看看naspaper感受下。  直接使用nas的框架来跑imagenet显然是不行的!于是就有了这篇工作了。个人觉得这篇工作可以看做是在nas的基础上加上几个改进,使得可以在cifar10上设计的网络能够在imagenet上有效。

 第一个改进其实是一个经验:cnn 可以由同构模块进行堆叠而构成。这样设计一个大型cnn网络就直接简化为设计一个block就行了,也就可以用nas解决了。 

第二个改进:合理选择搜索空间中的操作,使得block运行时对输入尺寸没有要求(例如卷积,pooling等操作)。这样图像由cifar的32到imagenet的大尺寸图片就不会有问题了。 

第三个改进还是经验:block的连接,block内部的一些拓扑结构根据经验可以固定,不用去学。 基于以上几条,nas那一套就可以直接用啦。这篇工作里面的网络也看起来人性化一些,一个原因就是经验性的东西加入了很多。 

有了上面的想法,剩下的事情就简单了。。。好的想法和最终的paper之间还差500块gpu呢(ノ`⊿´)ノ。  唉,大牛的工作。。。((유∀유|||))

————————方黎

1.计算量确实大。  

"In our experiments, the pool of workers in the workqueue consisted of 500 GPUs."  贫穷限制了我的想象力。  有钱真的是可以为所欲为的。  这意味着能接着往下做的组不多。   

 2.我觉得这种思路是正路。  

之前的网络结构虽然成功,也确实总结出了不少有用的结构规律,但始终是拍脑袋的因素在里面。怎么让程序自己去找结构,在比较大的搜索空间中找到更好的结构,才是做分类接下来的方向。  当然,对计算能力要求很高,能接着往下走的人不多。  惭愧的讲,当初老师也有过这个想法,但是我浅尝辄止,因为觉得实在对计算量要求比较大,我搞不定。    

3.完美的结构,不一定特别规整。  

resnet,googlenet等人设计的结构,总归还是规整的。但我们看看学出来的三个结构,其实没那么规整。其实人脑里的网络结构也未必多规整,搜索空间比这个文章里的还要大。    

4.我们需要《深度非线性网络的数学原理》  

这么大的搜索空间,怎么搞?  对于一个任务,怎么的网络结构最好?  最好是多好?  需要多少数据?

     ————————李鑫


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK