大家好,欢迎来到专栏《AutoML》,在这个专栏中我们会讲述AutoML技术在深度学习中的应用,这一期讲述进化算法用于模型搜索的基本概念和流程。
作者&编辑 | 言有三
一直以来,网络结构的设计是一个非常需要经验且具有挑战性的工作,研究人员从设计功能更加强大和更加高效的模型两个方向进行研究,随着各类经典网络设计思想的完善,如今要手工设计出更优秀的模型已经很难,而以AutoML为代表的自动化机器学习技术就成为了大家关注的热点,本期我们介绍基于进化算法的方法。
1 进化算法简介
进化算法是一类算法的统称,是模拟自然选择和遗传等生物进化机制的一种搜索算法,其中最为我们熟悉的一类就是遗传算法。
各类进化算法本质上都是迭代算法,其中涉及到几个最基本的概念和流程,首先作出解释:
(1) 种群。所谓种群,其实就是解空间中的一个子集,即若干个模型。
(2) 个体。所谓个体,就是其中一个解,即某一个模型。
(3) 编码。所谓编码,就是将搜索对象用计算机语言描述,比如将网络结构用固定长度的二进制字符串表示。
基于进化算法搜索的迭代过程如下:
在以上搜索过程中,每一次迭代操作就是从一组解到更好的一组解,它要解决的最核心的问题是如何产生新一代。
每一次产生下一代需要3个步骤,即选择,交叉,变异:
(1) 选择过程,要实现的就是从群体中选择更优的对象,比如精度更高的模型。
(2) 交叉过程,它就是要实现不同优秀对象的信息交换,比如两个好模型的模块交换。
(3) 变异过程,它是对个体的微小改变,相对于交叉过程,能引入更多的随机性,有助于跳出局部最优解。
关于进化算法的具体细节和种类,已经超出了本文的内容,读者可以单独阅读资料来学习进化算法。
2 基于进化算法的网络搜索
使用进化算法来进行网络搜索,要完成的步骤就是:
下面我们以Genetic CNN[1]算法作为案例来解读如何实现前两个步骤,该网络关心的是block级别的搜索。
2.1 网络编码
首先我们来看网络编码方式,它要完成的是将模型结构用二进制进行编码,其中最简单的方式就是用固定长度的字符串进行表示。
下面我们只考虑卷积拓扑结构本身,一个层称之为一个Stage,它们使用池化方式进行连接,Stage本身不改变特征图大小,并且内部卷积操作具有相同的卷积核和通道数。
假如一个网络包括S个Stage,其中每一个Stage包括Ks个节点,总共有1+2+...+(Ks −1)个连接,因此也需要这么多位进行表示。
如下图中Stage 1,有4个节点,则总共有6位进行表示,其中1表示A2与A1之间有连接,00表示A3与A1,A2之间没有连接,111表示A4与A1,A2,A3都有连接。下图中的Stage 2,有5个节点,则总共有10位进行表示。
下图则展示了K=4时,VGGNet,ResNet,DenseNet网络结构的示意及其编码向量。
2.2 种群迭代
有了编码过程后,接下来就可以进行种群迭代, 具体来说就是实现3个步骤,选择,交叉与变异,其中整个流程的伪代码如下。
T表示要迭代次数,N就是产生的个体数,初始时每一个bit都从伯努利分布中采样进行随机初始化,并计算初始识别精度。
每一次的迭代中,首先使用俄罗斯转盘选择法选择其中精度较高的模型,然后两两配对进行交叉(为了保证拓扑结构,交叉的最小单元是Stage),最后对没有交叉的个体进行变异,评估精度,再进行下一次的迭代。
最终的输出结果就是一系列个体和识别精度。
由于以上训练过程中计算量非常大,因此训练时首先在较小的数据集(如MNIST,CIFAR10)上训练,然后再迁移到更大的数据集(如ImageNet)。
下图展示了学习到的两个网络结构,它的特点是,在网络浅层,类似于AlexNet和VGGNet,在网络中间层,类似于GoogleNet,在网络深层,类似于ResNet。
上述算法具有一定局限性,比如每一层内卷积核大小和通道数固定,这是后续可以改进的地方,更多工作请参考[2,3]。
3 关于模型优化
公众号写过很多的模型解读了,如下是一些文章总结和直播链接以及资源下载。
【完结】总结12大CNN主流模型架构设计思想
「总结」言有三&天池深度学习模型设计直播汇总,赠超过200页课件
并且最近也出了一本新书,供对模型设计和优化感兴趣的朋友阅读。
言有三新书来袭!业界首次深入全面讲解深度学习模型设计
知识星球中最重要的板块就是模型结构1000变板块,比公众号的内容更深更广。其中的模型优化部分主要包括紧凑模型的设计,剪枝,量化,知识蒸馏,AutoML等内容的详细解读,感兴趣可以移步。
[1] Xie L, Yuille A L. Genetic CNN[C]. international conference on computer vision, 2017.
[2] Miikkulainen R, Liang J, Meyerson E, et al. Evolving Deep Neural Networks[J]. arXiv: Neural and Evolutionary Computing, 2017: 293-312.
[3] Real E, Moore S, Selle A, et al. Large-scale evolution of image classifiers[C]. international conference on machine learning, 2017: 2902-2911.
总结
本次我们简单介绍了进化算法在模型的设计和优化中的基本流程,介绍了基于block作为最小搜索单元的代表性框架,但并没有对各种粒度的算法进行介绍。更多模型设计和优化,AutoML的内容
标签:进化,迭代,模型,NAS,算法,AutoML,Stage From: https://blog.51cto.com/u_14122493/5751545