【AutoML】进化算法如何用于自动模型搜索(NAS)

大家好,欢迎来到专栏《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位进行表示。

【AutoML】进化算法如何用于自动模型搜索(NAS)_第1张图片

下图则展示了K=4时,VGGNet,ResNet,DenseNet网络结构的示意及其编码向量。

【AutoML】进化算法如何用于自动模型搜索(NAS)_第2张图片

2.2 种群迭代

有了编码过程后,接下来就可以进行种群迭代, 具体来说就是实现3个步骤,选择,交叉与变异,其中整个流程的伪代码如下。

【AutoML】进化算法如何用于自动模型搜索(NAS)_第3张图片

T表示要迭代次数,N就是产生的个体数,初始时每一个bit都从伯努利分布中采样进行随机初始化,并计算初始识别精度。

每一次的迭代中,首先使用俄罗斯转盘选择法选择其中精度较高的模型,然后两两配对进行交叉(为了保证拓扑结构,交叉的最小单元是Stage),最后对没有交叉的个体进行变异,评估精度,再进行下一次的迭代。

最终的输出结果就是一系列个体和识别精度。

由于以上训练过程中计算量非常大,因此训练时首先在较小的数据集(如MNIST,CIFAR10)上训练,然后再迁移到更大的数据集(如ImageNet)。

下图展示了学习到的两个网络结构,它的特点是,在网络浅层,类似于AlexNet和VGGNet,在网络中间层,类似于GoogleNet,在网络深层,类似于ResNet。

【AutoML】进化算法如何用于自动模型搜索(NAS)_第4张图片

上述算法具有一定局限性,比如每一层内卷积核大小和通道数固定,这是后续可以改进的地方,更多工作请参考[2,3]。

3 关于模型优化

公众号写过很多的模型解读了,如下是一些文章总结和直播链接以及资源下载。

【完结】总结12大CNN主流模型架构设计思想

「总结」言有三&天池深度学习模型设计直播汇总,赠超过200页课件

并且最近也出了一本新书,供对模型设计和优化感兴趣的朋友阅读。

言有三新书来袭!业界首次深入全面讲解深度学习模型设计

【AutoML】进化算法如何用于自动模型搜索(NAS)_第5张图片

知识星球中最重要的板块就是模型结构1000变板块,比公众号的内容更深更广。其中的模型优化部分主要包括紧凑模型的设计,剪枝,量化,知识蒸馏,AutoML等内容的详细解读,感兴趣可以移步。

【AutoML】进化算法如何用于自动模型搜索(NAS)_第6张图片

[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的内容,请大家移步有三AI知识星球长期学习。

有三AI知识星球

知识星球是有三AI的付费内容社区,里面包括各领域的模型学习,数据集下载,公众号的付费图文原稿,技术总结PPT和视频,知识问答,书籍下载,项目推荐,线下活动等资源,了解详细请阅读以下文章:

【杂谈】有三AI知识星球一周年了!为什么公众号+星球才是完整的?

【杂谈】万万没想到,有三还有个保密的‘朋友圈’,那里面都在弄啥!

转载文章请后台联系

侵权必究

【AutoML】进化算法如何用于自动模型搜索(NAS)_第7张图片

往期精选

  • 【AutoML】如何选择最合适的数据增强操作

  • 【AutoML】激活函数如何进行自动学习和配置

  • 【AutoML】归一化(Normalization)方法如何进行自动学习和配置

  • 【AutoML】优化方法可以进行自动搜索学习吗?

  • 【AutoML】损失函数也可以进行自动搜索学习吗?

  • 【AutoML】如何使用强化学习进行模型剪枝?

  • 【AutoML】强化学习如何用于模型量化?

  • 【AutoML】强化学习如何用于模型蒸馏?

  • 【AutoML】强化学习如何用于自动模型设计(NAS)与优化?

  • 【AutoML】当前有哪些可用的AutoML平台?【星球知识卡片】残差网络家族10多个变种学习卡片,请收下!

  • 【星球知识卡片】移动端高效率的分组网络都发展到什么程度了?

  • 【星球知识卡片】注意力机制发展如何了,如何学习它在各类任务中的应用?

  • 【星球知识卡片】模型剪枝有哪些关键技术,如何对其进行长期深入学习

  • 【星球知识卡片】模型量化的核心技术点有哪些,如何对其进行长期深入学习

  • 【星球知识卡片】模型蒸馏的核心技术点有哪些,如何对其进行长期深入学习

你可能感兴趣的:(【AutoML】进化算法如何用于自动模型搜索(NAS))