Neural Architecture Search[Nas的入门笔记.1]

1、引言

引言
  在超参数中,Architecture指神经网络结构,比方说有多少个卷积层,每层有多少个卷积核,卷积核的大小等。Optimization Algorithm指优化算法,比方说算法类型(SGD等),batch大小,epoch数量,学习率等。
  我们的目标是在测试集上得到更高的测试精确度,以此来评价模型好坏。所以要更优的权重参数,而超参数决定能否得到更好的权重参数。
  以下来自我在youTube上总结的学习笔记,Neural Architecture Search: Basics & Random Search。除了最后一张在ppt截图了,其它两张都是自己画的,不要白嫖哦。

2、结构超参数 Architectural hyper-parameters

  以CNN的结构为例子
程 序 = { 卷 积 层 ( c o n v   l a y e r s ) 和 全 连 接 层 ( d e n s e   l a y e r s ) 的 数 量 卷 积 核 的 数 量 , 卷 积 核 的 大 小 和 每 一 个 卷 积 层 的 s t r i d e 大 小 全 连 接 层 的 宽 度 ( 输 出 向 量 的 大 小 ) 程序=\left\{ \begin{matrix} 卷积层(conv\ layers)和全连接层(dense\ layers)的数量 \\ 卷积核的数量,卷积核的大小和每一个卷积层的stride大小\\ 全连接层的宽度(输出向量的大小) \end{matrix} \right. =(conv layers)(dense layers)stride()

目前流行的CNN网络结构的超参数都是人工手动设计的

CNN卷积层结构

3、Neural Architecture Search(NAS)神经架构搜索

3.1 定义

  寻找最优的神经网络结构,使得validation 准确率最好。当然,除了准确率,还要考虑计算内存、计算量开销等指标。
  比方说,MobileNet计算内存开销比ResNet要小,但是准确率却低于ResNet。

3.2 Search Space 搜索空间

  搜索空间是用户事先指定的,如下表所示:
  我们想搭建一个10层的CNN网络。我们知道10-100的整数都是可行的卷积核的数量,但不可能全部都罗列进去搜索,否则搜索开销会非常非常大,所以要人工设定候选超参数。

Hyper-parameter TypesCandidates
the number of filters { 24 , 36 , 48 , 64 } \{24,36,48,64\} {24364864}
size of filters { 3 × 3 , 5 × 5 , 7 × 7 } \{3 \times 3,5 \times 5,7 \times 7\} {3×35×57×7}
stride { 1 , 2 } \{1,2\} {12}

  我们的目标搜索空间
{ 24 , 36 , 48 , 64 } 10 × { 3 × 3 , 5 × 5 , 7 × 7 } 10 × { 1 , 2 } 10 \{24,36,48,64\}^{10} \times \{3 \times 3,5 \times 5,7 \times 7\}^{10} \times \{1,2\}^{10} {24364864}10×{3×35×57×7}10×{12}10
  目标搜索空间大小:
是所有可能的神经网络架构的数量, ( 4 × 3 × 2 ) 10 (4\times3\times2)^{10} (4×3×2)10
  Nas的输出:

Layer 1Layer 2 … \dots Layer 10
the number of filters3648 … \dots 64
size of filters 5 × 5 5 \times 5 5×5 3 × 3 3 \times 3 3×3 … \dots 7 × 7 7 \times 7 7×7
stride21 … \dots 2

3.3 Baseline : Random Search

  Nas最简单的方法就是随机搜索,首先在搜索空间中均匀随机搜索出一组超参数,然后搭建神经网络。一直训练,学习参数,直到算法收敛。最后用训练好的模型做预测,用validation准确率来评价模型的好坏。重复这个过程,最终找到最好的validation准确率所对应的那一组超参数,作为定下来的神经网络结构。这种随机搜索的方法也称为交叉验证(Cross-validation)。
最终结果
  最终我们选择达到94%validation准确率的这组超参数来设计CNN的神经网络结构。
  交叉验证维基百科的定义
  交叉验证,有时亦称循环估计,是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子集上做分析,而其它子集则用来做后续对此分析的确认及验证。一开始的子集被称为训练集。而其它的子集则被称为验证集或测试集。交叉验证的目的,是用未用来给模型作训练的新数据,测试模型的性能,以便减少诸如过拟合和选择偏差等问题。

3.4 Nas的挑战

  1. 每次测试/训练的成本/代价都很高
  2. 搜索空间太大
  3. 灾难性遗忘

PS:觉得不错的话,可以三连支持一下,有错误也请指出,谢谢!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TerryBlog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值