科技网

当前位置: 首页 >电商

CVPR2018商汤科技Oral论文详解思

电商
来源: 作者: 2019-02-11 17:56:13

CVPR 2018 商汤科技Oral论文详解:BlockQNN自动络设计方法

距离全球计算机视觉会议IEEE CVPR 2018 (IEEE国际计算机视觉与模式识别会议) 召开的脚步越来越近。上周,商汤科技宣布以44篇论文入选CVPR 2018,吸引了诸多朋友点赞。接下来几周,我们将陆续发布商汤科技入选CVPR 2018的重点论文解读报道,欢迎大家关注。 以下是在大规模分布式训练领域,商汤科技发表的一篇重磅大会口头报告(Oral)论文,提出基于分布式训练的深度增强学习BlockQNN算法,自动设计神经络结构。本文由商汤科技实习研究员钟钊在商汤科技研究院副院长闫俊杰和研究经理武伟指导下完成。 神经络结构设计一直是深度学习里的核心问题。在基于深度学习的分类、检测、分割、等任务中,基础神经络的结构对整体算法的性能优劣有着决定性的影响。传统的神经络结构设计需要大量专家的知识和试错成本,甚至还需要一些灵感和“神来之笔”,每年仅有几个有较大影响的新络结构被设计出来,因此,人工设计络结构是一件极其困难的事情。络结构的自动设计/的方法最近受到了广泛的重视,其试图朝着自动化深度学习这个目标,

CVPR2018商汤科技Oral论文详解思

把人从复杂繁琐的络设计调参中解放出来(如图一所示)。 近期的络结构自动设计/算法通常需要耗费巨大的计算资源(例如,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的成本非常高(需要在数据上重新训练新获得的络结构),为了加快它的,作者使用了reward shaping的技巧(如图五所示),因而训练初始阶段终止层的Q值不会过高,让算法不会在训练初始阶段倾向于生成层数过浅的络结构。 虽然能够使用多种技巧来使自动化络结构设计变的更加高效。但是自动络设计中耗费时间的关键还是在于每次获得reward的时间成本非常高,需要将生成的络结构在对应的数据集上训练至,然后获得相应的准确度来表示结构的好坏并且用作reward。本文作者发现,通过调整学习率,只需要正常训练30分之一的过程(例如,CIFAR-100数据集上训练12个epoch),就可以得到络的大致最终精度,这样可以大大降低时间成本。但是,老板给了你饭碗;2这样的络结构精度及其关联的reward会有误差,导致无法精细区分络结构的优劣,本文提出一个凭经验的解决公式: 即真实的reward和提前停止的准确度成正比,但是和络结构的计算复杂度和结构连接复杂度(block中边数除以点数)成反比轻舞蹁跹于烟雨红尘之路。通过这样的公式矫正,得到的reward对络结构的好坏更加具备可鉴别性(如图六所示)。 本文使用了32个GPU,经过3天的,可以在CIFAR数据集上找到性能达到目前先进水平的络结构(如图七所示)。 相比之前的自动络方法(如Google NAS算法的数百块GPU以及一个月时间),BlockQNN算法可谓十分高效(如表二、表三所示)。 另一方面,学习获得的络结构也可以更容易的迁移到ImageNet任务上,取得了不错的精度(如表四所示)。 为了验证BlockQNN算法是否真的学习到了设计络的方式,在同一空间下和进行对比,可以发现本文提出的BlockQNN算法能获得比更好的模型(如图八所示)。 对整个过程和结果络结构进行分析(如图九所示),本文作者发现学习得到的优异结构拥有一些共性。比如multi-branch结构、short-cut连接方式等这些现在常用的设计思想。同时,作者也发现了一些不太常见的结构共性,比如卷积层之间的addition操作出现的十分频繁,这些学习得到的络结构还有待进一步的分析和研究。 本文提出了一种高效的基于强化学习的结构自动设计算法——BlockQNN,其通过“Block”的设计思想,让络结构空间大大降低,并且使得学习得到的络具备非常强的可迁移性。同时,本文使用“提前停止”和分布式架构来加速整个学习过程,达到了百倍于之前Google NAS算法的速度(仅需要32块GPU以及3天的训练)。实验表明,其学习得到的结构在CIFAR数据集上达到人类设计络结构的精度,并且其结构可以迁移到大规模的ImageNet数据集上,也能取得不错的性能。作者希望朝着自动化深度学习这个目标继续发展为了来这里算法,最终把人从复杂繁琐的络设计和调参中解放出来,实现深度学习更进一步的“智能化”。

o2o网站大全报价
高温瞬时灭菌报价
海运运费怎么算

相关推荐