Learning Transferable Architectures for Scalable Image Recognition论文简述

本文介绍了对Neural Architecture Search with Reinforcement Learning的优化,采用Proximal Policy Optimization (PPO)更新控制器参数,并针对运算符进行搜索。网络结构基于ResNet和GoogleNet的堆叠思想,使用卷积单元(Convolution Cell)并分为Normal Cell和Reduction Cell。每个Cell由多个block组成,每个block包含多个操作选择步骤,最终通过实验验证了在较少参数下保持高准确性的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        本文是谷歌在2018年提出的一篇神经网络结构最优搜索的论文

        本文的核心思想是基于一篇Neural Architecture Search With Reinforcement Learning,的优化和改进。

我们知道在深度学习任务比如图像识别,图像分类中模型结构是非常关键的,比如VGG,ResNet,DenseNet等在网络结构的设计。但是,这种人为设计的结构就一定好么?不一定,因此希望能通过一个神经网络来按照一定策略学习得到最佳的网络结构。

首先,先简单说一说Neural Architecture Search With Reinforcement Learning这篇论文。

这篇文论的话,现在看来比较粗暴,用强化学习(reinforcement learning)来学习一个最优的网络结构,简单来说就是通过一个controller在搜索空间(search space)中得到一个网络结构(child network),然后用这个网络结构在数据集上训练得到准确率,再将这个准确率回传给controller,controller继续优化得到另一个网络结构,如此反复进行直到得到最佳的结果。

        很明显核心就是如何通过这个controller得到我们的网络结构,以及如何训练我们的controller。首先,如何得到我们的子网络结构,controller采用的就是RNN结构。那么为什么是RNN结构呢?因为作者观察到,神经网络的结构和连通性通常可以用一串长度可变的字符串来表示,因此可以用一个循环神经网络来生成这样的字符串。也就是如图这样

        

 

        那么如何训练呢?这里就用到了强化学习的方法。我每次选出一个子网络,得到子网络精度,这个精度就是我们的reward,而搜索空间就是我们的action空间,controller就是我们的agent,如此便可以训练我们模型了。

        接下来进入正题。

        那么本篇论文,就是基于这样的一个方法的改进。

        首先,在更新controller参数的时候采用 Proximal Policy Optimization (PPO),而不是原先的policy geadient method;同时借鉴了目前优秀网络结构(ResNet,GoogleNet)的重复堆叠思想,与上篇论文不同,这里是针对于算子(op)进行搜索的,之后会详细讲到。

        因此本文的结构为:

        通过借鉴ResNet和GooleNet中网络结构堆叠的思想,这篇论文采用的的最小堆叠单位就是convolution cell,而convlolution cell主要包含两种:第一种是不改变输入feature map的大小的卷积,也就是下图中的Normal Cell;第二种是将输入feature map的长宽各减少为原来的一半的卷积,也就是下图中的Reduction Cell。整体的网络结构就是Normal Cell与Reduction Cell相互穿插,因此当网络结构定义如图,那么本文的controller就用来预测下图中的Normal Cell和Reduction Cell。

        每一个Cell由N个block组成,每个block由5个prediction steps组成。这5个steps分别是:

Step 1. Select a hidden state from hi, hi−1 or from the set of hidden states created in previous blocks.

Step 2. Select a second hidden state from the same options as in Step 1.

Step 3. Select an operation to apply to the hidden state selected in Step 1.

Step 4. Select an operation to apply to the hidden state selected in Step 2.

Step 5. Select a method to combine the outputs of Step 3 and 4 to create a new hidden state.

        首先的两步就是选择隐藏状态,可以看下图就理解了

       而对于step3和step4来说,可选择的op有以下几种

        对于最后一步的话就只有add和concat

        作者在文中举例说明了一种搜出来的结构如图

        最后,通过实验验证NASNet的特点在于在参数数量较少的情况还还能保持较高的准确率。

        如有错误,欢迎各位批评指正!

### NASNet 论文下载链接 NASNet 的论文全名为《Learning Transferable Architectures for Scalable Image Recognition》[^4]。这篇论文详细介绍了如何通过神经架构搜索(Neural Architecture Search, NAS)来设计高效的卷积神经网络结构。 根据已有的资料,可以直接访问以下链接获取原始论文: - **论文地址**: [https://arxiv.org/abs/1707.07012](https://arxiv.org/abs/1707.07012) 此链接指向 ArXiv 平台上的公开版本,读者可以通过点击直接下载 PDF 文件。 此外,在 NAS 方法中,控制器 RNN 负责生成候选网络结构并对其进行优化,最终目标是在验证集上达到更高的性能表现[^5]。这些方法的具体实现细节可以在上述论文中找到。 对于更深入的学习者来说,《ImageNet Classification with Deep Convolutional Neural Networks》也是一篇值得参考的经典文献[^3],尽管它并非直接涉及 NAS 技术,但它奠定了现代 CNN 架构的基础理论框架。 ### 提供的代码片段示例 以下是利用 Python 和 PyTorch 实现的一个简单 NAS 控制器模型骨架: ```python import torch.nn as nn class ControllerRNN(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(ControllerRNN, self).__init__() self.rnn = nn.LSTM(input_size=input_size, hidden_size=hidden_size, batch_first=True) self.fc = nn.Linear(hidden_size, output_size) def forward(self, x): out, _ = self.rnn(x) out = self.fc(out[:, -1, :]) return out ``` 该代码定义了一个基本的 LSTM 结构作为控制器的核心组件,用于生成新的子网参数配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值