炼丹术的终结二——可迁移结构学习

张雨石 张雨石     2022-12-10     203

关键词:

本文首发于我的知乎专栏深度学习与计算机视觉, 欢迎关注,最新内容抢先看。

上一文中介绍了如何用控制器(LSTM)搜索CNN网络和LSTM网络结构,从而生成出不逊于人类手工设计的网络结构。方法虽然已经work了,但是由于需要生成的参数很多,导致最后的网络结构的搜索空间非常的大,以至于非常耗时,在一个小的数据集上仍然需要800个GPU并行运算数天乃至一周之多。为了解决这个问题,文献[1]中提出了一种降低搜索空间的方法,使控制器能够更快的学到最优的网络结构。

需要注意的是,本文所探讨的要生成的神经网络是卷积神经网络。LSTM的网络设计并不在讨论范畴中,当然,LSTM仍然被用作控制器。

想法来源

在网络结构手工设计的时代,AlexNet,VGG,ResNet和Inception系列纷纷被设计出来,这些网络结构有一个共同的特点,那就是网络结构是层次性的,每层的结构都具有一定的相似性。因而,在这个基础上,自动学习的网络结构也可以是基于层的,设计出一个特定的结构来作为一层,然后将这个结构重复多遍,就得到一个完整的网络结构。

实现细节

基于上述的想法,首先,对之前的网络结构进行汇总分析可得,卷积神经网络的结构分为两个大类,一类是将输入的feature map等大小输出,即Normal Cell,另一类是将输入的feature map长宽各降低一半输出,即Reduction Cell。

有了这两个Cell之后,就可以得到一个完整的神经网络。如下图所示:

更具体的,每个Cell有更细致的微结构。从大的层面来看,Normal Cell和Reduction Cell都接受两个输入hi和hi-1。从小的层面看,Normal Cell和Reduction Cell中的子结构也是类似的,两个输入得到一个输出。但子结构的输入不一定是Cell的输入,也可能是中间状态。

在生成Cell结构的过程中,论文巧妙的将其递归的分成几步,每一步的操作都是一样的。具体的,生成Normal Cell和Reduction Cell的过程,就是将下面的过程重复B次,先验条件下,B=5。步骤如下:

  1. 从hi和hi-1或上一步中得到的隐含状态中选择一个作为输入一。
  2. 从从hi和hi-1或上一步中得到的隐含状态中选择一个作为输入二。(可以与第一个一样)
  3. 从操作集合中选择一个操作应用在输入一上。
  4. 从操作集合中选择一个操作应用在输入二上。
  5. 选择一个方法将第三步和第四步的结果合并。

其中,第三步和第四步的操作集合如下:

第五步的操作有两个:

  • element-wise addition
  • concatenation

将上述步骤重复B次,其中每次称之为一个Block。每次生成的子结构如下:

每一个Block的生成如下:

在生成Cell最后的输出的时候,将所有没有用到的Hidden states拼接到一起,作为输出。

在生成最后的神经网络的时候,需要注意:

  • 由之前的经验,每次使用Reduction Cell时,将filter数目翻倍。
  • 由两个参数需要自己调整,一个是Normal Cell重复的次数N,还有一个是初始第一层的filter数目。

实验

经过学习,得到的最终的Normal Cell和Reduction Cell的结构如下:

实验结果

在cifar10上的实验结果如下:

在ImageNet数据集上的实验结果如下:

参考文献

[1]. Zoph B, Vasudevan V, Shlens J, et al. Learning transferable architectures for scalable image recognition[J]. arXiv preprint arXiv:1707.07012, 2017.

gluon炼丹(kaggle120种狗分类,迁移学习加双模型融合)(代码片段)

...其修远兮,吾将上下而求索Gluon炼丹(Kaggle120种狗分类,迁移学习加双模型融合)这是在kaggle上的一个练习比赛,使用的是ImageNet数据集的子集。注意,mxnet版本要高于0.12.1b2017112。下载数据集。train.ziptest.ziplabels然后解压在d 查看详情

深度学习炼丹-数据标准化(代码片段)

...eaning后,我们需要使用以下数据转换策略更改数据的值、结构或格式。Generalization:使用概念层次结构将低级或粒度数据转换为高级信息。例如将城市等地址中的原始数据转化为国家等更高层次的信息。Normalization:目的是将数字属... 查看详情

深度学习炼丹-数据标准化(代码片段)

...g后,我们需要使用以下数据转换策略更改数据的值、结构或格式。Generalization:使用概念层次结构将低级或粒度数据转换为高级信息。例如将城市等地址中的原始数据转化为国家等更高层次的信息。Normalization:目的是将数字属... 查看详情

深度学习炼丹-数据预处理和增强(代码片段)

前言一,Normalization概述1.1,Normalization定义1.2,什么情况需要Normalization1.3,DataNormalization方法1.4,示例代码二,normalizeimages2.1,图像normalization定义2.2,图像normalization的好处2.3,PyTorch实践图像normalization三,数据增强(扩增)3.1,open... 查看详情

ubuntu+docker+pycharm环境深度学习远程炼丹使用教程(代码片段)

文章目录前言一、docker环境准备1.下载镜像2.运行容器3.给容器安装openssh-server和openssh-client4.vim打开并修改配置文件5.创建docker中root用户的密码:6.重启ssh服务7.确认docker容器内python位置8.生成新的镜像9.导出镜像10.导入镜像二... 查看详情

pe文件结构(代码片段)

...误,还请各位指正。MicrosoftWindowsPortableExecutable是微软可迁移可执行软件的全称,简称PE文件。对PE文件结构的学习虽然并不是程序员必须学的,但是学习对PE文件结构的学习过程中能够提升我们的个人编程能力,从中学到很多东... 查看详情

深度学习调参(炼丹)指南来了!

 Datawhale干货 方向:深度学习调参,编辑:机器之心「大量的实践经验已被提炼成这份强大的深度学习模型调参指南。」——GeoffreyHinton。众所周知,AI的超参数决定着模型学习效果和速度。相比普通机器学习任... 查看详情

云原生应用架构的迁移二:扼杀单体

...构的迁移二:扼杀单体分解应用,抽微服务扼杀终结新服务崛起Q&A附录云原生应用架构的迁移二:扼杀单体云原生应用架构,以快速创新、服务弹性扩展、持续交付价值的特性,使企业产品服务在市场中具... 查看详情

云原生应用架构的迁移二:扼杀单体

...构的迁移二:扼杀单体分解应用,抽微服务扼杀终结新服务崛起Q&A附录云原生应用架构的迁移二:扼杀单体云原生应用架构,以快速创新、服务弹性扩展、持续交付价值的特性,使企业产品服务在市场中具... 查看详情

深度学习远程炼丹:一文离线完成ubuntu+docker+pycharm环境配置(代码片段)

文章目录前言一、Ubuntu离线安装docker二、dockerhub下载合适镜像三、配置docker容器1.运行容器2.给容器安装openssh-server和openssh-client3.vim打开并修改配置文件4.创建docker中root用户的密码:5.重启ssh服务6.确认docker容器内python位置7.测... 查看详情

告别炼丹,googlebrain提出强化学习助力neuralarchitecturesearch|iclr2017

...构的gradient-based方法,主要包含4个步骤:thecontroller.网络结构可能看成是可变长的字符串,因此,论文使用循环神经网络(recurrentnetwork)来产生这样的字符串childnetwork.在实际数据集上训练字符串对应的网络(childnetwork),在验证集上... 查看详情

efcore迁移

Efcore迁移Add-MigrationXX:1、根据模型的实际结构对比当前快照,从而生成新迁移文件的Up和Down方法2、根据模型的实际结构修改快照和新迁移文件-----------------Remove-Migration一、我们定义:1、最后一次的迁移文件,称为:A2、倒数第... 查看详情

小白学习pytorch教程十二迁移学习:微调vgg19实现图像分类(代码片段)

@Author:Runsen前言:迁移学习就是利用数据、任务或模型之间的相似性,将在旧的领域学习过或训练好的模型,应用于新的领域这样的一个过程。从这段定义里面,我们可以窥见迁移学习的关键点所在,... 查看详情

迁移学习在自然语言处理中的应用

 迁移学习近年来在图形领域中得到了快速的发展,主要在于某些特定的领域不具备足够的数据,不能让深度模型学习的很好,需要从其它领域训练好的模型迁移过来,再使用该模型进行微调,使得该模型能很好地拟合少量数... 查看详情

基于端到端可迁移深度强化学习的图优化

文/YanqiZhou和SudipRoy,研究员,GoogleResearch各式各样加速器上训练的大规模复杂神经网络驱动着越来越多的应用的发展。机器学习(ML)编译器为这一进程提供了便利,它将高级计算图映射到特定设备可执行的低级文件。为... 查看详情

dlng[结构化ml项目]第二周迁移学习+多任务学习

1.迁移学习 比如要训练一个放射科图片识别系统,但是图片非常少,那么可以先在有大量其他图片的训练集上进行训练,比如猫狗植物等的图片,这样训练好模型之后就可以转移到放射科图片上,模型已经从其他图片中学习... 查看详情

你都有哪些炼丹神器深度学习(rnn、cnn)调参的经验?

对于rnn和cnn这种深度学习模型,常用的炼丹神器可能包括:调节学习率:学习率较小可以保证模型在训练时稳定,但是训练速度较慢;学习率较大可能会使模型在训练时快速收敛,但是有可能导致过拟合。调节隐藏单元数量:隐... 查看详情

数据结构第五章学习小结(代码片段)

一、本章学习内容小结:本章学习了新的数据结构--树,与前面的学习不同的是,树是一种非线性结构,树只有一个根结点,其子树本身也是一棵树,所以其定义是递归定义。本章还学习了二叉树和哈夫曼树。二叉树:结点的度... 查看详情