解决方案:网络结构自动设计算法——BlockQNN

优采云 发布时间: 2022-11-18 11:08

  解决方案:网络结构自动设计算法——BlockQNN

  以下是商汤科技在*敏*感*词*分布式训练领域发表的一篇重磅口头报告(口头)论文,提出了一种基于分布式训练的深度强化学习BlockQNN算法,用于自动设计神经网络结构。本文由商汤科技实习研究员钟昭在商汤研究院副院长严俊杰、研究经理吴伟指导下撰写。

  神经网络结构设计一直是深度学习的核心问题。在基于深度学习的分类、检测、分割和跟踪任务中,基础神经网络的结构对整体算法的性能具有决定性的影响。传统的神经网络结构设计需要大量的专业知识和试错成本,甚至需要一些灵感和“魔笔”,每年只有少数几个影响更大的新网络结构被设计出来,因此手工设计网络结构是极其困难的。网络结构的自动设计/搜索方法近年来受到广泛关注,它试图将人们从复杂繁琐的网络设计参数中解放出来,以实现自动化深度学习的目标(如图1所示)。

  图 1:(从左到右)。

  从人工设计的网络结构到

  网络结构由算法自动设计

  最近的网络结构自动设计/搜索算法通常需要大量的计算资源(例如,谷歌的 NAS 算法需要数百个 GPU 和近一个月的训练时间),并且由此产生的模型移植性不高,难以实现真正的实际使用。本文提出的BlockQNN算法可以解决现有网络结构自动设计/搜索方法的效率和泛化问题。

  基于“块”的网络结构表示

  目前主流的深度神经网络结构极其复杂,其深度往往达到上百层,直接搜索整个网络结构的搜索空间非常大,这也是以往的自动网络结构设计/搜索算法效率相对低下的原因之一。同时,直接设计整个网络的策略将导致网络结构不被通用化。例如,基于CIFAR数据集搜索的网络结构由于其数据输入的大小限制,仅适用于处理32x32分辨率的数据,这使得搜索网络结构的泛化性能较弱。

  针对这些问题,本文借鉴了现代主流深度神经网络的设计思路,如ResNet、Inception等网络。这些网络由相同结构的子网的重复组合形成,本文称之为块。通过设计块结构,可以大大减少网络结构的搜索空间,并且块结构本身具有很强的泛化性,对于不同的数据集或任务,只需要叠加不同数量的块(如图2所示)。

  图2:

  基于区块设计的网络整体框架

  左边是CIFAR的框架,右边是ImageNet的框架。

  表一:

  网络结构编码表

  为了表示网络块结构,本文设计了一套网络结构编码,将神经网络视为有向无环图,每个节点代表网络中的每一层,边缘代表数据流的方向。整个编码包括神经网络的层序号、类型、内核的大小以及两个序号节点的序号。可以使用这种编码来表示任意神经网络结构,例如 ResNet 和 Inception 的块结构,可以使用图 3 中的编码来表示。

  图3:

  Inception 和 Resnet 中的块结构编码表示

  基于强化学习的网络结构自动设计

  下一个核心问题是如何获得最优的网络结构。尽管通过设计大大减少了网络结构的搜索空间,但对所有可能结构的直接暴力搜索仍然是计算密集型的。因此,该文提出一种基于强化学习的网络设计方法,该方法可以自动学习网络结构。在网络设计中的强化学习中,本文将当前神经网络层定义为强化学习中的

  

  当前状态,将下一层结构的决策定义为强化学习中的动作。此处使用先前定义的神经网络结构编码来表示网络的每一层。这样,通过一系列动作决策,可以获得代表块结构的代码(如图4所示),所提出的强化学习算法通过优化找到最优的动作决策序列。本文采用Q学习算法进行学习,具体公式不展开。

  图4:

  基于强化学习的自动化网络结构设计流程

  值得注意的是,与一般的强化学习问题不同,这个任务只有在决定结束整个序列后(即生成完整的网络结构之后)才会得到奖励,之前的每一个决策对应奖励。由于获得最终奖励的成本非常高(需要在数据上重新训练新获得的网络结构),为了加快其收敛速度,笔者采用了奖励 SHAPING 技术(如图 5 所示),这样初始训练阶段终止层的 Q 值不会太高, 这样算法就不会在训练的初始阶段生成层太浅的网络结构。

  图5:

  奖励整形对收敛效率的影响

  尽早停止策略

  尽管可以使用多种技术来使自动化网络结构设计更加高效。然而,自动网络设计耗时的关键在于每个奖励的时间成本非常高,生成的网络结构需要在相应的数据集上进行训练以收敛,然后获得相应的精度来表示结构的质量并用作奖励。本文作者发现,通过调整学习率,只有正常训练过程的三分之一(例如,在CIFAR-100数据集上训练12个epoch)可以获得网络的近似最终精度,可以大大降低时间成本。然而,这种网络结构及其相关奖励的准确性会产生误差,导致无法精细区分网络结构的优缺点,本文提出了一个经验解公式:

  也就是说,真正的奖励与

  提前停止,但它与网络结构的计算复杂度和结构连接的复杂度(边数除以块中的点数)成反比。通过这样的公式修正,得到的奖励对网络结构的质量更明显(如图6所示)。

  图6:

  提前止损的精度与网络的真实精度相同计算复杂度

  和连接复杂度之间的关系

  实验结果

  本文使用了 32 个 GPU,经过 3 天的搜索,可以在 CIFAR 数据集上找到具有最先进性能的网络结构(如图 7 所示)。

  图七:

  学习的搜索过程和最佳网络结构

  与以往的自动网页搜索方法(如Google NAS算法的数百个GPU和一个月的时间)相比,BlockQNN算法非常高效(如表2和表3所示)。

  

  表二:

  不同的自动网络结构设计算法

  计算资源比较

  表三:

  CIFAR数据集上不同网络结构的错误率

  另一方面,学习到的网络结构也可以很容易地准确地转移到ImageNet任务中(如表4所示)。

  表四:

  图像网数据集上不同网络结构的错误率

  为了验证BlockQNN算法是否

  真正学会了网络的设计方法,将其与同一搜索空间中的暴力搜索进行比较,可以发现本文提出的BlockQNN算法可以获得比暴力搜索更好的模型(如图8所示)。

  图八:

  强化学习和暴力搜索获取网络结构

  CIFAR数据集的准确性通过

  分析整个搜索过程和结果网络结构(如图9所示),作者发现通过学习获得的优秀结构具有一些共性。比如多分支结构、捷径连接法等,这些都是现在常用的设计思路。同时,作者还发现了一些不太常见的结构共性,如卷积层之间的频繁加法运算,学习到的网络结构需要进一步分析和研究。

  图九:

  由 BlockQNN 算法设计的网络结构示例

  结论

  该文提出一种基于强化学习的高效网络结构自动设计算法BlockQNN,通过“Block”的设计思路,大大减少了网络结构搜索空间,使学习网络具有较强的可移植性。同时,本文采用“早停”和分布式架构来加速整个学习过程,达到了之前 Google NAS 算法的百倍速度(仅 32 个 GPU 和 3 天的训练)。实验表明,学习到的网络结构在CIFAR数据集上可以达到人类设计网络结构的精度,其结构可以迁移到*敏*感*词*ImageNet数据集上,也可以取得良好的性能。笔者希望继续朝着自动化深度学习的目标发展算法,最终将人们从复杂繁琐的网络设计和参数调优中解放出来,进一步实现深度学习的“智能化”。

  解决方案:云优CMS快速入门

  # API 管理 API 管理功能包括百度普通收录、百度快速收录、百度

  

  统计查询、百度

  

  切字接口,同义词API,多站点控制平台对接## 百度普通收录需要在百度搜索资源平台注册账号并绑定推送链接,填写下图所示的接口调用地址![ 1.jpg]()## 百度快收录 百度快收录主要是针对优质网站的快收录工具,如果你暂时没有这个功能权限,建议尽量更新优质文章获取权限 ### 无权限 下图是未经许可的界面![ 图片.png]()### 许可 下图是许可接口![图片.png] ()## 百度统计查询![4.png]()进入百度统计,点击管理-左侧的统计图标进行设置,复制链接填写下图![5.png]()## 百度切词界面教程:[]()## 同义词API 设置同义词前,需要设置百度切词界面,模式建议准确+50%## 多站点控制平台对接 购买增值服务请开启一键登录,百度自动推送、接受平台推送、排名监控获得四大功能

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线