一种简单有效的网络结构搜索
作者: 陈杨
编辑: 龚赛
前 言
这篇文章主要介绍了一种方法用于解决网络结构搜索中,搜索空间过大且训练时间过长,算力要求过高的问题。运用了爬山算法来搜索优秀的网络结构,主要是用了一个很nb的技术叫network morphism的算法,极大的减小了训练时间,原因就是利用了之前训练的网络权重。
章节目录
AUTOML相关介绍
爬山算法是什么
morphism/transformation
summary
01
AUTOML相关介绍
机器学习(Machine Learning,ML)近年来取得了相当大的成功,越来越多的学科需要依赖它。然而,这个成功的关键是需要人类机器学习工程师完成以下的工作:
1. 预处理数据
2. 选择适当的功能
3. 选择一个适当的模型选择系列
4. 优化模型超参数
5. 后处理机器学习模型
6. 严格分析所得的结果
由于这些任务的复杂性通常超过了非机器学习专家的能力,机器学习应用的快速增长产生了对于现成的机器学习方法的需求,而且这些现成的机器学习方法简单易使用且不需要专业的知识。我们称以机器学习的渐进自动化为目标的研究领域为AutoML(Automatic Machine Learning, AutoML)。
虽然它的最终用户面向那些没有专业机器学习知识的人,但AutoML依然向机器学习专业人士提供了一些新的工具,如:
1. 执行深层表示的架构搜索
2. 分析超参数的重要性
3. 遵循“优化编程”的范例,AutoML主张开发可以用数据驱动的方式自动实例化的灵活软件包。
作者很良心的帮我们总结了近些年来在自动网络架构搜索领域的方法,当然我也很良心地写出来了。
random search随机搜索:
H. Mendoza, A. Klein, M. Feurer, T. Springenberg, and F.Hutter. Towards automatically-tuned neural net works.In AutoML, 2016.
Sampling the optimal hyperparameter(贝叶斯采样):
(Bayesian optimization) J. Bergstra, R. Bardenet, Y. Bengio, and B. Kegl. Algorithms for hyper-parameter optimization. In NIPS, 2011. J. Snoek, H. Larochelle, and RP Adams.
Practical Bayesian optimization of machine learning algorithms. In NIPS, 2012.
Hyperparameter optimization. H. Mendoza, A. Klein, M.Feurer, T. Springenberg, and F. Hutter. Towards automatically-tuned neural net works. In AutoML, 2016.
Reinforcement learning强化学习:
1. L. Li, K. G. Jamieson, G. DeSalvo, A. Rostamizadeh, and A.Talwalkar. Efficient hyperparameter optimization and infinitely many armed bandits. CoRR, abs/1603.06560, 2016a.
2. I. Loshchilov and F. Hutter. CMA-ES for hyperparameter
optimization of deep neural net works. CoRR, abs/1604.07269,
2016.
3. M Jaderberg, C Fernando, K Simonyan, I Dunning, T Green,O Vinyals, A Razavi, J Donahue, W M Czarnecki, S Osindero, V Dalibard, K Kavukcuoglu. Population Based Training of Neural Net works. CoRR, abs/1711.09846, 2017.
based on reinforcement learning基于强化学习
Bowen Baker, Otkrist Gupta, Nikhil Naik, and Ramesh Raskar. Designing neural
net work architectures using reinforcement learning. ICLR 2017, 2016.
Barret Zoph and Quoc V. Le. Neural architecture search with reinforcement
learning. 2017.Barret Zoph, Vijay Vasudevan, Jonathon Shlens, and Quoc V. Le.
Learning transferable architectures for scalable image recognition. 2017.
02
爬山算法是什么
一个很经典的问题,求一个函数的最大值,有三个常见的方法:爬山算法、模拟退火算法和遗传算法。
我们可以把函数曲线理解成一个一个山峰和山谷组成的山脉(如图片所示)。那我可以设想所得到的每一个解就是一只袋鼠,我希望它们不断的向着更高处跳去,直到跳到最高的山峰。所以求最大值的过程就转化成一个“袋鼠跳”的过程。
他们之间的区别:
爬山算法:
从搜索空间中随机产生邻近的点,从中选择对应解最优的个体,替换原来的个体,不断重复上述过程。因为只对“邻近”的点作比较,所以目光比较“短浅”,常常只能收敛到离开初始位置比较近的局部最优解上面。对于存在很多局部最优点的问题,通过一个简单的迭代找出全局最优解的机会非常渺茫。因为一路上它只顾上坡,没有下坡。
模拟退火算法:
这个方法来自金属热加工过程的启发。在金属热加工过程中,当金属的温度超过它的熔点(Melting Point)时,原子就会激烈地随机运动。与所有的其它的物理系统相类似,原子的这种运动趋向于寻找其能量的极小状态。在这个能量的变迁过程中,开始时。温度非常高,使得原子具有很高的能量。随着温度不断降低,金属逐渐冷却,金属中的原子的能量就越来越小,最后达到所有可能的最低点。利用模拟退火算法的时候,让算法从较大的跳跃开始,使到它有足够的“能量”逃离可能“路过”的局部最优解而不至于限制在其中,当它停在全局最优解附近的时候,逐渐的减小跳跃量,以便使其“落脚”到全局最优解上。
说白了就是,就是容许搜索出下山的状态,不过随着时间的推移,这个概率会越来越小,最终也只能往上走。可以跳出初期的局部最优解。(paper中用得上cos退火)
遗传算法:
就是一开始,像绝地求生一样,袋鼠们跳伞掉到各个山腰上,然后设置一个毒圈,这个毒圈不是一个圆,而是相对一个上升的海平面,不断地往上淹没,低的袋鼠就会被淹死,然后幸存的袋鼠就好和旁边的袋鼠“结合”,交换他们的属性信息,再进行变异产生更多个体,然后这些个体再进行下一圈跑毒…………
经过猴年马月之后,只剩下最后一个活着的个体了,我们称为大吉大利今晚吃鸡(近似最优解)。在另一篇专栏有这个:https://zhuanlan.zhihu.com/p/36758195
03
morphism/ transformation
Tianqi Chen, Ian J. Goodfellow, and Jonathon Shlens. Net2net: Accelerating learning via knowledge transfer. arXiv preprint, 2015.
这篇文章主要的思想就是借鉴了迁移的思想。
我们先把神经网络抽象成一个函数fw(x)变成gw(x),作者希望通过给出一个简单的设计好的神经网络,经过一轮的训练,对这个训练好的网络进行“不回头的映射”,把他变成复杂的网络,并继承了之前训练的结果,因为网络更复杂了,隐含的参数更多了,所以经过一个short-train之后,准确率可能会上升,不断的迭代这个过程,以求得更复杂更准确的模型。
这是没有后退的变形,w是权重,X是Rn维的输入。 i is layer number,fwi(x)是
fw(x)的一个部分,相当于其中一层的特征图。
Type I: Addition of layer (including regularization layer)
用Replace替换。当A=1,b=0时(这似乎可以让你学习初始值A=1,b=0。,这与下面的Morph相同),这显然满足了这个假设。 它只是通过对当前图层进行加权来为其添加偏置,因此可以用来添加所谓的图层。,您还可以定义一个执行输出正则化的层(批处理标准化等)。很显然,当假设C=A^-1,d=-cb 时,这个假设是成立的。
TYPE II:Out Concat
替换fiwix=Ahwhx+b。这显然满足A〜= 0时的假设。这意味着在h〜= h的情况下,网络的大小将会扩大,如果h(x)是一个连续的隐层,h〜(x)是x,则可以表示连接类型Skip -Connection。(2~4倍)
TypeIII: Addition of ReLU
简单的说就是把这一层的权重简单的进行一个替换,也可以拿来加relu
Type IV: Output Merge
当λ=1时保持不变,
当λ≠1时理论上可以合并各种非线性函数。
同时这个还能实现跳跃连接,(又是不写都不好意思发文的resnet思想了)
####图解
用的是随机梯度下降法进行训练,我们可以看到到进行了applynetmorphs之后,神经网络的准确率并不会下降,说明了这个方法可以利用先前训练的数据,再进行一个短训练,有可能获得更好的准确率,因为网络结构发生了改变,拥有了比之前更深更多的参数。把训练后最优秀的一代保留下来,继续这样一轮的学习。
一些训练的细节
Morph是随机选择的。
for type I:添加layers的地方是随机的,kernel的size只有{3,5},通道数量与最新的卷积核
数目相同。
for type II:扩展宽度从2到4倍随机选择,要跳过的层的范围(i到j)是随机选择的(同样在tvpe IV中)。
使用余弦退火来学习变形网络。
根据余弦曲线提高和降低学习率的方法。(从下的文章中也可以看出 使用)。将错误率降低约1%的效果。可以避免过早地陷入局部最优解。
####实验对比
可以看得出来,准确率上是没有优势的,但是这个方法的训练时间和计算量真的是能拯救广大普通老百姓于水深火热啊。之前deepmind,google那些土豪级别的大公司,设计autoML时的手笔大的让人怀疑人生。
想作者这种1day5GPU的简直就是学术界的一股清流啊。
04
summary
1. 通过逐渐发展网络,不需要从零开始学习
2. 可以评估降低结构搜索的速度和成本的观点。
3. 然而,变形和启发式并没有太多的变化,而且它似乎可以轻松达到像Dense / ResNet这样的简单结构
4. 即使没有大规模的计算资源,也能自动设计网络架构
5. 我们的算法很容易扩展
END
机器学习算法工程师
一个用心的公众号
进群,学习,得帮助
你的关注,我们的热度,
我们一定给你学习最大的帮助