首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

约翰霍普金斯大学刘晨曦:渐进式神经网络结构搜索

近年来,神经网络已经成为了计算机视觉中主要的机器学习解决方案。然而神经网络结构的设计仍然需要极强的专业知识,在一定程度上妨碍了神经网络的普及。

刘晨曦:约翰霍普金斯大学在读博士,导师是 Alan Yuille 教授,主要研究方向为计算机视觉,自然语言处理等。曾就读于加州大学洛杉矶分校及清华大学。其研究工作曾在 CVPR,ICCV,ECCV 等发表。

分享主题:渐进式神经网络结构搜索

分享大纲:

AutoML 和神经网络结构搜索的背景介绍

网络结构搜索空间

渐进式神经网络结构搜索算法

图像分类的实验结果

雷锋网 AI 研习社将其分享内容整理如下:

今天我要跟大家分享是渐进式神经网络结构搜索(Progressive Neural Architecture Search)。这项工作是我在 Google(美国)实习的时候做的项目,并在不久前的 ECCV 2018 上做口头报告。

AutoML 和神经网络结构搜索的背景介绍

首先介绍一下 AutoML 和神经网络结构搜索的背景。

这篇文章主要涉及的领域是 AutoML,这是一个新兴领域,也是 Google 非常重视的一个具体方向。它的目标很简单但也很重要,就是能够在 Machine Learning solution 的整个设计过程中,减少人的参与。当 AutoML 的实现程度够高,能实现的具体场合是:人只需在早上起来的时候按一个回车键,整个设计过程就能实现高度的自动模式,晚上回来的时候就能够完成。

当然理想很丰满,现实实现难度却比较大,为什么?

现在的 Machine Learning solution 既有参数也有超参数,而现在最受欢迎的机器学习框架是神经网络,这里主要讨论它的优化是否自动化了。目前,参数的调整已经非常自动化了,可以直接用 Backpropagation 函数实现最优的参数调整,而难以实现较大程度自动化的,是超参数的调整。

那超参数都在哪里?

一提到超参数,我们会更多地想到 learning rate 相关的数字,比如说整个 training 有多长时间,绝对数值应该选多少等。但是对于神经网络来说,很多超参数都在它的结构里面。下图就是一个网络结构:

很多神经网络结构需要很多的 expert experience 和 knowledge,但这样得出的结果并不是最优的,这也是我们尝试渐进式神经网络结构搜索最主要的 motivation。

近几年来,大家逐渐开始关注一个问题:能不能不要过于依赖于 expert experience 和 knowledge,而通过自动的方式来得到一个非常好的神经网络结构?

神经网络领域发展得很快,但是现在神经网络结构搜索相关的文章中主要使用的方法是:进化的算法(EA)和强化学习的算法(RL)。

【关于这两种算法的讲解,请回看视频 00:07:00 处,http://http://www.mooc.ai/open/course/550?=aitechtalkliuchenxi】

在我们之前,神经网络结构搜索的相关工作已经做得比较好了,但在我们研究这一领域的时候,发现的问题是,之前的工作都非常依赖计算资源。比如在 Google Brain 2017 年的一篇文章里,为了做神经网络结构搜索用了 800 块 K40 的 GPU,然后训练了 28 天。在今年的一篇文章里,虽然有了很大提升,但还是用了 500 块 P100,并训练了 5 天。

所以我们这项工作的主要目标是尝试把神经网络结构搜索的速度和效率提高,具体的做法是:提出一个创新的算法。在我们描述这个算法前,我们需要了解网络结构搜索空间(Architecture Search Space)。

网络结构搜索空间

网络结构搜索空间大概的结构是:定义整个 Network 由一些 Cell 组成,一个 Cell 进一步由一些 Block 组成。

从 Cell 到 Network 的过程,如右图所示,就是有了一个 Cell  structure 后,组建整个 Network,整个过程借鉴了 ResNet 的设计。

【关于从 Cell 到 Network 的过程更具体的讲解,请回看视频 00:12:40 处,http://www.mooc.ai/open/course/550?=aitechtalkliuchenxi】

从 Block 到 Cell 的过程,是指一个 Cell 由 5 个 Block 组成,整个 Cell 的 output 是 5 个 Block 的 output 的 concatenation(连接)。如右图,H 代表 Cell 的 output,H1 到 H5 代表了五个 Block 的 output。

而一个 Block 大概是下图右边的这样一个结构,这是整个网络最小的形成段,Input1 通过 Operator1 transform 一下,Input2 通过 Operator2 transform 一下,二者通过一定方法 Combine 形成一个 Block。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181008A05AIN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券