秒速赛车平台:网络结构自动设计算法——B

2018-03-26 23:36| 发布者: | 查看: |

  秒速赛车以下是在大规模分布式训练领域,商汤科技发表的一篇重磅大会口头报告(Oral)论文,秒速赛车平台:提出基于分布式训练的深度增强学习BlockQNN算法,自动设计神经网络结构。本文由商汤科技实习研究员钟钊在商汤科技研究院副院长闫俊杰和研究经理武伟指导下完成。

  神经网络结构设计一直是深度学习里的核心问题。在基于深度学习的分类、检测、分割、跟踪等任务中,基础神经网络的结构对整体算法的性能优劣有着决定性的影响。传统的神经网络结构设计需要大量专家的知识和试错成本,甚至还需要一些灵感和“神来之笔”,每年仅有几个有较大影响的新网络结构被设计出来,因此,人工设计网络结构是一件极其困难的事情。网络结构的自动设计/搜索的方法最近受到了广泛的重视,其试图朝着自动化深度学习这个目标,把人从复杂繁琐的网络设计调参中解放出来(如图一所示)。

  近期的网络结构自动设计/搜索算法通常需要耗费巨大的计算资源(例如,Google的NAS算法需要使用数百块GPU以及近一个月的训练时间),而且生成的模型可迁移性不强,难以做到真正的实用化。本文提出的BlockQNN算法能够解决现有网络结构自动设计/搜索方法效率和泛化性的问题。

  目前主流的深度神经网络结构极其复杂,其深度往往达到数百层,直接搜索整个网络结构的搜索空间非常庞大,这也是之前自动网络结构设计/搜索算法比较低效的原因之一。同时,直接设计整个网络的策略会导致网络结构不具备泛化性。例如,基于CIFAR数据集搜索出来的网络结构,因为其数据输入的大小限制,只适合处理输入为32x32分辨率的数据,从而使得搜索出的网络结构泛化性能较弱。

  针对这些问题,本文借鉴了现代主流深度神经网络的设计思想,比如ResNet、Inception等网络。这些网络是由同样结构的子网络重复组合在一起形成,本文把这种能重复组合的子结构称为block。通过设计block结构,可以让网络结构的搜索空间大大减小,并且block结构本身具有强大的泛化性,针对不同的数据集或者任务,只需要叠加不同个数的block即可完成(如图二所示)。

  为了表示网络block结构,本文设计了一套网络结构编码,把神经网络看做一个有向无环图,每个节点表示网络中的每一层,而边就表示数据流动的方向。整个编码包括神经网络的层数序号,类型,核的大小,以及两个前序节点的序号。使用这种编码方式就可以表示任意的神经网络结构,例如ResNet和Inception的block结构就能使用图三中的编码进行表示。

  接下来的核心问题即是如何获得最优的网络结构。尽管网络结构的搜索空间已经通过设计block大大减小,但是直接暴力搜索所有可能结构,依然十分耗费计算资源。本文因此提出一种基于强化学习的网络设计方法,自动学习得到网络结构。

  在网络设计强化学习中,本文把当前神经网络层定义为增强学习中的目前状态(current state),而下一层结构的决策定义为增强学习中的动作(action)。这里使用之前定义的神经网络结构编码来表示每一层网络。这样,通过一系列的动作决策,就能获得一条表示block结构的编码(如图四所示),而提出的强化学习算法通过优化寻获最优的动作决策序列。本文使用Q-learning算法来进行学习,具体的公式不再展开。

  值得注意的一点是,与一般的强化学习问题不同,该任务只在结束整个序列的决策后(即生成完整网络结构后)才会得到一个reward,而之前的每个决策是对应reward。由于获得最终reward的成本非常高(需要在数据上重新训练新获得的网络结构。

<
>
相关文章
 
QQ在线咨询
售前咨询热线
400-800-8888
售后服务热线
400-800-8888
返回顶部