Return to site

智源论坛 | 探索机器学习理论的最新进展,走近云、端、芯上的视觉计算

——机器学习报告会重点梳理

· 新闻

1909 年,莱特兄弟通过纯粹的工程方法首次把飞机送上了天,但彼时的他们并不了解其中的原理。如今,经过几十年的发展,飞机的性能较之当年已然不可同日而语。究其原因,主要在于上世纪四五十年代,人们在空气动力学方向取得了重大进展,能够在理论上理解飞机飞行的原理,从而更好地改进飞机设计。而机器学习理论的研究也与之类似,目的都是希望能在未来设计出更好的机器学习方法,使其性能更好,效率更高。

比之人工智能领域亦然,倘若理论层面持续空白,势头正劲的所谓风口行业又能走多远?

为了探寻当前人工智能算法存在的可解释性缺失、大数据依赖、模型场景化问题的答案,寻找机器学习的更多可能,“智源论坛(第5期)——机器学习”系列报告于 7 月 4 日如约而至。

智源研究项目经理 程斌

上午 9:30,本次论坛在“机器学习”方向智源研究项目经理,360 集团人工智能研究院技术总监程斌的主持下正式开始。北京大学信息学院智能科学系教授王立威、北京旷视科技首席科学家孙剑分别分享了其在这一领域的研究经验。

王立威:从经验性的积累到理论空白的弥补

国家自然科学基金优秀青年基金获得者,“教育部新世纪优秀人才支持计划”获得者,北京大学信息学院智能科学系的王立威针对深度学习的优化及神经网络带来了题为《Some recent advances in machine learning theory》的主题报告,分享了机器学习理论方面的一些新进展。

北京大学信息学院智能科学系教授 王立威

事实上,我们近年来讨论的机器学习乃至广义上的人工智能都多为深度学习,是基于 Yoshua Bengio、Geoffrey Hinton 和 Yann LeCun 几位专家长期研究而取得的突破。然而若站在一个相对冷静客观的角度对近来的深度学习成果加以分析,我们不难发现,眼下我们所掌握的更多是经验性的积累,而对于其理论和理解则可谓缺乏甚至是空白。

深度学习的全局最优点

在训练神经网络的过程中,我们往往是从一个随机的初始点出发,用一阶优化方法随机梯度下降,即可找到一个近似全局最优的点——训练错误可以接近于零。关于这个问题,最核心的一点就是过参数化,下面将围绕一些有趣的过参数化理论性质展开分享。

 

迄今为止,机器学习已经发展了三四十年,之前提出了很多模型,比如线性模型、Boosting等,但至少在图像、语音等方面,神经网络更具优势。从理论层面来看,神经网络可以表示丰富的函数,具有很强的逼近能力。这其中包括Universal Approximation Theorem,即任意给定一个符合一定条件的函数,就一定可以找到一个神经网络,能够非常精确地近似于这个函数。论简而言之,神经网络可以表示任何函数。而早在1989年,就已经有人通过对非常浅层的神经网络进行理解得到了这样一个结论。2017年,我们认识到非常深的神经网络同样有这种逼近的能力。所以从表示上来看,神经网络是一个具有很强大表示能力的模型。

如上图所示,右侧图像是我们在思考神经网络训练做类似优化问题时的自然反映。从Optimization角度来看,神经网络的优化是一个高度非凸的问题,图上有坑坑洼洼的结构,每个坑里面都是一个局部的最优点。针对这样一个高度非凸的问题,从一个随机点出发,沿着梯度下降的方向,很容易就走到一个局部最优点。这是过去经典的非凸优化理论所经常提及的,除非问题本身具有很强的特殊性。

 

以上是我们对该问题给出的“理所应当”的理解,但实际却并非如此——在深度学习训练这个非凸优化问题里,从一个随机的初始点出发用随机梯度下降经常可以找到全局最优点,这不免令人困惑。

 

回顾学者们过去曾得出的一些结论,其中就包括对于线性神经网络的研究。众所周知,神经网络具有逐层结构,而且每层有一个非线性变换,例如最早用 Sigmoid,再到现在的 Relu,但是如果把非线性变换去掉,简化成一个线性网络,即每层不存在非线性,本质上就等价于一个单层网络。在这种情况下,可以证明所有局部最优点即为全局最优点。但这样的结论与真实的神经网络差距很大,不过也算是一个启发,提示我们可以考虑神经网络的一些特殊性,思考对于真正的非线性神经网络而言,其局部最优点和全局最优点之间是否也存在某种等价关系。

 

除此之外,我们还可以通过某些特殊的假设,比如只考虑单层网络,同样也可以证明即使单层网络存在非线性,也仍然可以用梯度下降法找到全局最优点。但此处指的是只有一层的网络,而我们今天面对的是动辄几十、几百层的网络。简而言之,对于一个很正常的非线性深度神经网络而言,只要满足如下两个条件,再利用一阶优化方法,如梯度下降、随机梯度下降,就一定能以极快的速度找到全局最优点。此处的收敛速度是所谓的线性收敛速度,只消对数步的迭代就能找到全局最优点:

① 网络足够宽,即每一层 Neural 的个数足够大,详见下图公式;

② 网络权重的初始化是通过今天非常常用的高斯随机初始化(Gaussian Random Initialization)。

总而言之,一是网络足够宽,二是用高斯随机初始化,在这两个假设条件下只要从随机初始化点出发,用一阶梯度下降的方法就可以在非常快的迭代步数之内找到全局最优点。这个结论能够使我们理解实验中观测到的很多现象,其中我们关注的核心就是为什么能找到全局最优点——深度神经网络充分宽以后,就相当于一个非常特殊的过参数化(Over-Parameterization)模型,利用到了神经网络的一些特殊性质,和过去的模型有很大差异。

 

以上结论研究的是所谓的全连接网络,若是研究如今更常用的 ResNet,对于假设的限制就会弱一些,例如网络不需要那么宽,而网络的收敛速度也会更快。简言之,理论上 ResNet 是一个更好的结构。值得一提的是,几乎在同一时间,包括微软研究院朱泽园与 CMU 李远志的合作团队以及 UCLA 的顾全全教授团队在内的另外几个机器学习研究组也得到了与王立威团队非常近似的结论。

 

如今,这一方向的研究工作在除却理论的整个机器学习界都得到了比较广泛的关注——希望通过比较宽的网络,来探讨神经网络的部分性质。

二阶优化方法——GGN

随着理论研究的推进,我们也迎来了新问题——这些研究可以为机器学习、深度学习的算法提供什么帮助,又能否帮助我们设计出更好的算法?着眼理论分析的细节,我们会惊讶地发现:网络从 input 到 output 是一个函数,当网络充分宽时,网络的输出其实还依赖于该网络的参数,那么网络的输出对于网络的参数而言,其在局部是近似线性的,这一点与过去的认知有很大差异——过去认为网络的输出对于参数一定是高度非线性、高度非凸的。但此前的理论证明,网络充分宽后,网络的输出对于网络的参数在局部内是高度线性的,且这个局部不仅包含了高斯随机初始的点,还包含全局最优点。正是因为这样的性质,用一阶优化方法可以在很短时间内找到全局最优的点,从而利用这个观察设计新的算法。

今天大家常用的算法是Stochastic Gradient Descent(SGD),其已然是今天深度学习的标准算法。我们用任何一个今天开源的代码或者从库里调用,配备的都会是一阶优化方法。但根据上面的结论,我们不难发现,更好的方法是二阶优化方法。一阶优化方法只利用了函数的一阶导数信息,而二阶优化方法则在一阶导数外,还用到了一些二阶导数信息。以高斯牛顿法这一二阶方法为例,其特点在于,特别适用于函数特别接近于线性的情况,这种情况下它的收敛速度,也就是迭代的轮数会非常少。

如前所述,当深度神经网络充分宽时,输出对参数是非常接近线性的,这与高斯牛顿法非常吻合。而既然如此,包括高斯牛顿法在内的所有二阶优化方法在今天的深度学习中为什么又无人选用?究其原因,在于实际应用中存在的困难——虽然其迭代数很少,但每一步迭代时二阶方法所需的计算量却又远远大于一阶方法,这也是该问题的核心原因。除此之外,类似在过参数化时二阶信息矩阵不可逆等问题也不容忽视。因此,我们在过去综合种种因素,惯于将二阶优化方法排除至选项之外。

 

在这样的背景下,王立威及其团队对此展开研究,在已知二阶方法迭代轮数优势的情况下(特别在深度神经网络较宽时,高斯牛顿法的迭代轮数较之一阶方法优势更甚),面对上文提到的诸多问题,证明存在一个定理。据该定理所述,在矩阵不可逆时,可以找到一个伪逆,并且该伪逆可以通过极小的计算代价实现。

从理论上可以证明,其所提出的 Gram 高斯牛顿方法(Gram-Gauss-Newton ,GGN))具有非常好的性质,其一,是该方法的二次收敛速度极快,为双对数,迭代轮数非常少;其二,是可以用求伪逆的办法证明每一步的迭代计算量,相比于 SGD 只有非常小的 overlap。故而从理论上看,用 GGN 比 SGD 明显具有更大优势。

下图所呈现的为部分实验效果,图中红线是新方法的收敛速度,左图横轴代表时间,右图横轴是 Epoch,另外两条线都是 SGD 加相应的一些其他技术,所以可以看到该方法在收敛速度方面占据了很大的优势。

总结:我们先是通过一个纯粹的理论分析,证明了当网络充分宽的时候,如果用现在的高斯初始化,整个优化展现出一个和我们的过去所认知极为不同的场景——在局部近似线性,且可以在局部找到一个全局最优点。从这一理论结果出发,王立威及其团队设计了一个二阶优化方法——GGN。也许有一天大家再用深度学习去训练深度神经网络时,SGD 将不再是一个标配的优化方法,GGN 这样的二阶优化方法可能有机会取而代之。

Transformer 结构

在深度学习和机器学习中,Transformer 结构可谓是又一个热门话题。Attention Transformer 这类结构在很多问题,特别是机器翻译上取得了非常好的效果。事实上,过去大家用的可能都是 LSTM 这样的一些结构,但随着 Transformer 的出现,也都逐渐成为历史了。

研究 Transformer,本质上还要理解深度神经网络,深度神经网络为什么是一个好的结构?从数学层面来看,深度神经网络从某种程度上可以看作在解常微分方程,其为常微分方程数值解的一个 solver。近一两年来,这一观点已经成为机器学习理论里大家非常看重的一个方法。NIPS 2018 的 Best Paper 就花落这样一篇论文——从解常微分方程的角度去看深度神经网络。

谈及常微分方程,自然会想到 ResNet,它是一个非常典型的常微分方程数值解的方法。换言之,ResNet 和解常微分方程数值解法存在一个非常明确的对应关系。ResNet 比较简单,但是 Transformer 却是一个较为复杂的网络结构,其主要包含两个部分,分别是 Multi-Head Self Attention 结构和 FFN 结构,这两部分组成一个 block,而这个 block 就是这种迭代,衔接下去。所以我们要从解常微分方程数值解的角度去理解这样一种很复杂的网络结构,从而帮助我们设计出更好的网络结构。Multi-Head Self Attention 实际上是一种不同 Neural 之间有互相连接、互相作用的结构;而 FFN 这部分则是每一个 Neural 自己作用,互相之间没有作用。

 

既然要从解常微分方程的角度来看 Transformer,首先要考虑多粒子的动态系统(Multi-particle Dynamic System),这是在物理中非常常见的一种动态系统。这种动态系统的常微分方程,叫做对流扩散方程(Convection-diffusion Equation),对流扩散方程是微分方程中最最常见的一类方程。多粒子动态系统中的对流方程如图所示,比如粒子的位置对时间的导数是两个函数的和,第一个函数是 F,第二个函数是 G, F 函数是 N 个粒子共同作用的一个函数,是 N 元函数,而后面的 G 是对每个粒子的单独作用。这与 Transformer 结构中的 Multi-Head Self Attention 与 FFN 形成了一种很自然的契合,因此我们可以用这种多粒子的对流扩散方程来解释 Transformer结构的含义。

当然,仅仅从这个角度去理解 Transformer 的含义并非我们的最终目的,我们想要的是从这个理解角度出发,探索设计出更好的网络结构。Transformer 的结构实际上对应着对流扩散方程的某一种数值解法——Lie-Trotter splitting scheme,这是一种很常见的常微分方程数值解。众所周知,微分方程要数值解就要将其离散化,这就是一种离散化的方法。如果把 Lie-Trotter splitting scheme 对应到现在的 Transformer 结构上,也会是一个很自然的对应。

 

但在常微分方程数值解领域里,对此早已有非常深入的研究,且相关研究早已有上百年的历史,而 Lie-Trotter splitting scheme 事实上是一种早已被淘汰掉的数值解法。相较而言,Strang splitting 是一种比较好的数值解。Lie splitting 是一阶的近似方法,而 Strang splitting 是一种二阶的近似方法。在实际中去解常微分方程的时候, 比起无人问津的 Lie splitting,用到的都是 Strang splitting。

这些理论分析的意义就在于如果把 Strang splitting 这种常微分方程的数值解法对应回某一种神经网络的话,这个网络应该如下图所示:

如前所述,传统网络由两部分组成,第一部分是 Multi-Head Self Attention,第二部分是 FFN。但若用新的数值解则如右侧所示,表示原本 FFN 的部分首先应该在最底层做半步?半部,接下来再放 Multi-Head Self Attention 模块,而后再放半步 FFN 模块——一种三明治结构,这样对应的是 Strang splitting 数值解的方程。

 

这相当于从理论上启发我们设计新的结构,而这种新的 Transformer 结构叫马卡龙,它的效果比过去传统的两层 Transformer 能提高约 1 个百分点。而 Google 最近提出的新结构 BERT 则消耗了海量的数据、非常多的 GPU 以及训练时间才使原本的 Transformer 性能有所提高。如果在训练数据相同的情况下,二者的性能更是基本相同,但是 Google 的工作训练实验一次需要花费电费 25 万美元。而马卡龙则在“人力”思考的基础上,用数学的方法设计出了一个更好的网络。

总结:上述工作也属于一种理论上的方法,从纯粹的数学角度出发,将 Deep Neural Networks 看作一种 Ordinary Differential Equation 的 Numerical solver。我们通过找常微分方程更好的数值解的方法,将其对应回一种更好的网络结构。这种新的 Transformer 结构的性能较之传统有了显著提升。近一两年来,特别是以谷歌为代表的一些企业在大力推动所谓的 AutoML,倡导不再去设计网络,即减少人在设计网络这个环节里面的比重,希望用纯 Learning 的方法来找出一些网络的结构。但是我们在这里面给大家提供了一个新的途径——仍然是人设计的方法,但不是纯粹凭经验设计,而是将网络结构和一些数学问题等同起来,例如此前谈到的把网络结构和微分方程数值解等同起来——我们通过利用过去几百年来积累的强大的数学工具,去设计这种更好的网络。这也是一个我们很有必要去探讨的途径。

PGD-based Adversarial training算法

 

关于神经网络,有一张我们常见的图:

左边猪的图像加一点非常小的noise (noisy image),但将此处的noise乘以0.005后再进行叠加,从而得到右图,人眼无法判断出左右两张图的区别,但是Neural network可以识别出左图为“猪”,同时却又得出右图跟“猪”毫无关联的结论,这是眼下深度学习遇到的一个很大的困难。

对于这个问题,今天大量的研究都是所谓的 attack 和 defense,用到了诸如 Algorithm training 等各种方法,试图增强深度学习网路的鲁棒性,但是效果比较差。更有甚者,虽然在这个方向已经有很多机器学习工作者开始展开理论研究,但不幸的是,直到今天大量的理论研究给出的都是负面的结果,例如《Adversarially Robust Generalization Requires More Data》,这是去年NIPS上发表的一篇很有代表性的论文,它证明了如果想要使神经网络对于对抗样本是 robust,那么必须要有非常多的 training data,即如果想要达到正常的 accuracy,所需要的训练数据量可能要有一个指数的增长。

 

我们首先要从理论上分析,诚如研究结论所示,要想得到一个对对抗样本 robust 的 Classifier,确实需要更多的 data,但是我们证明了只需要更多的 unlabeled data,不需要更多的 labled data。

 

事实上,今天数据之所以不容易获取,主要是因为对数据做标注的代价很高。如果是不需要标注的数据,那资源可谓极其丰富。所以如果能用少量的标注数据加上大量的无标注数据,就可以做到对于对抗样本是 robust,这项工作就是极具吸引力的。

 

而所谓“对对抗样本 robust”,指的是对于一张正常图片(原始图片),如果在其周围邻域里任意找一张图片的话,这两张图片的 label 应该是相同的。关于这一点,我们其实根本不需要知道此处的 label 是什么,这就是我们核心的想法。

基于这一想法,我们可以建立一套完整的理论,当目标是让 robust accuracy 达到最高,就可以通过数学定义去定义 robust accuracy。同时还可以从理论上证明 test data 上的 robust accuracy 可以完全学习里面一些理论的分析。

 

Robust error 可以分成两项,一项和我们传统的正常 learning error 完全相同;另一项是前面的第一项,可视作一种 consistence,即一张原始图片与其邻域内看起来非常像的图片,它们的 label 应是相同的,可以用大量的 unlabled data 来进行训练。

 

基于上面的分析,可以设计一个新的算法,叫做 PGD-based Adversarial training。这个算法在正常的 training 基础上增加一些 unlabeled data,而后在优化的时候,不仅计算正常的分类 error,还把 unlabeled data 周边邻域里的图像标签是否一致也记作另一组 error,连同此前的 consistence error,一起去做 training。

 

总结:如果想得到一个对对抗样本 robust 的分类器(Classifier),并不像很多之前的工作一样必须要很多 labeled data,实际上我们可以凭借少量 labeled data,再加上足够多的 unlabeled data 来解决——unlabel data 的获取当然要比 labeled data 容易很多。

孙剑:几乎与人工智能相伴而生,计算机视觉的应用场景广度不容小觑

北京旷视科技首席科学家,西安交通大学人工智能学院院长孙剑围绕《云、端、芯上的视觉计算》这一主题展开了分享,在介绍其团队在该领域所做的工作之外,还站在应用层面进行了简单的分析。

北京旷视科技首席科学家 孙剑

长期以来,计算机视觉当属 AI 领域的一大支柱,与之并立的还有 Speech 和 NLP,以及一些通用的人工智能研究。所谓计算机视觉,其核心就是在回答一个问题——机器如何才能读懂照片或视频?与此同时,我们还一直在思考的是,作为一个初创公司或企业,基于当前的现状又能做些什么?

 

事实上,人们对于计算机视觉的研究早在人工智能萌芽的约 5 至 8 年后遍开始了。其中的代表人物就包括人工智能的奠基者之一——Marvin Minsky。面对复杂的人工智能研究,他在某个夏天决定先找一些简单的问题来着手切入,于是便带上几个新招的暑期实习生开始动手了。他计划在一个机械臂上装入摄像头,同时在另一边摆上几个积木,任务是让机械臂将积木摆成其“看”到的人摆出样子。这项看似简单的研究在实操过程中却困难重重,面对超出想象的难度等级,Minsky 也在几年后放弃了这个方向。但作为几乎与人工智能相伴而生的研究课题,计算机视觉于智能领域的意义自然非凡,倘若再扩展到应用层面来看,其用途更是不容小觑。

 

现如今,我们周边环绕着大量各种各样的 camera,因此于计算机视觉的应用而言,如何才能读懂所有摄像头的 input?这些摄像头就相当于我们的眼睛,而计算机视觉就是需要读懂这些眼睛的大脑。除此之外,我们要求的输出内容不仅是简单的意思翻译,可能还需要了解图像、文字等更多信息,例如某样东西在哪里,是什么样的场景,场景里都有谁,他们的动作又是什么……因此,不光输入的场景多种多样,对输出的信息也有诸多要求。如此一来,需要应用到计算机视觉的场景也会很多,这也就解释了今天国内外计算机视觉相关的公司不仅数量大而且体量还不小的原因。

 

计算机视觉包含较多应用,在研究方面一般会归结成几个核心的问题,包括分类、检测、分割,分别是对一张图的整体、一张图的不同区域和一张图的每个像素做语义识别。另外如果输入的是视频,我们还需要利用时间顺序及密度等因素做出更高效的识别。其中最核心的是分类问题,因为它是后面三个任务的核心和基础。而这些问题的最大难度就在于如何研究表示照片在图像中的存储形式,以及存储之后又该如何操作这个图像的表示。David Marr 便是其间的研究代表人物之一。

David Marr 在其 80 年代的著作《视觉》一书中提出了计算机视觉的几层构架,描述了视觉的抽象过程,提出对于输入图应该先检测边缘,形成 2.5 D sketch,然后再恢复 3D。但 MIT 教授 Marvin Minsky 在谈及他的这一构想时表示,这个理论很好,但是忽略了核心问题的研究——如何表述一张图像。

 

计算机视觉的早期图像表示模型是 Part-based,比如人体可以分解成头、胳膊、腿;人脸可以分解成眉毛、眼睛、鼻子,这样就可以通过 Part 这种组合式的方法表示物体。如果一个物体有结构,这种组合式方法很合适,但很多自然场景的物体没有这么强的结构就不合适了。

 

此后流行的方法是 Feature-Based 方式,这类表示的方法可能抽出几百上千的 Feature,最后变成非常高的向量,这个向量最后寻找其特征的表示。此方法是在深度学习之前统治图象识别领域的方法,其不但可以用作图象,对特殊的物体及人脸识别也较为有效。它最早用在 Surface 人脸的功能上,其特性是可以对图象做一些不同的变化,但是同时也有两大缺点:第一,这个方法整体上是从输入向量到另外高维向量的非线性变换,这个向量的变换次数是有限的,如果真正算它的非线性变换至多有三、四次,性能不会提高;第二,其中大多数参数是人工设计的,包括 Feature,但人设计复杂系统的能力是有限的。

 

今天的主流方法是深度神经网络,这两个特性就被改变了,整个非线性变换非常长,可以做非常多次,所以系统的表示能力非常强;第二是所有的参数联合训练。这两点让深度神经网络真正能够取得非常好的效果,也包括当时我们在微软提出的 152 层的残差网络 ResNet,第一次在 ImageNet 上超过了人的性能。

 

至于 ResNet 为什么能够工作的问题,至今也没有一个明确答案,这个过程中当然有过很多解释。其中,最直观的解释是说当你的非线性变换层数非常多,相邻两层变换的差别就非常小,与其直接学习这个映射,不如学习映射的变化,这样的方式就让整个学习过程,特别是训练优化过程变得更容易。

除此之外,还有一个解释来自《Deep Residual Learning For Image Recognition》这篇论文(Kaiming He,Xiangyu Zhang,Shaoqing Ren,Jian Sun. Deep Residual Learning For Image Recognition. CVPR 2016.)的第二作者张祥雨,他认为 ResNet 的整个学习过程是一个由浅到深的动态过程,在训练初期等效训练一个浅层网络,在训练后期等效训练一个深层网络。

 

论文第一作者何恺明有另外一个更“科学”的解释,他认为整个训练过程相当于深度学习的梯度下降过程中,最为困难的梯度消失问题被 ResNet 解决了,该解释也发表在 ECCV 2016 的一篇论文(Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Identity Mapping in Deep Residual Networks. ECCV 2016.)中,并在该论文中第一次训练了一个 1001 层的神经网络。

 

还有一些同行提出的解释。一种是把 ResNet 和 RNN 关联起来,认为如果有 Weight Share, ResNet 可以看作是一种 RNN。还有一种解释把 ResNet 看成是指数多个不同深度网络的集成。用“集成”这个词其实有些问题,因为一般我们做集成算法不联合训练,但这里面整个 ResNet 里指数多个网络是联合训练的,所以很难定义它是不是集成。

 

孙剑博士在分享过程中还特别提到了其个人比较认同的一种解释——Iterative Refinement,认为网络初期的层学习表示,后期很多层不断迭代和 Refine 这个表示。这跟人理解看图识字很相似,一个不容易理解的东西你要看一会,基于当前一些已看内容的理解,反复看才能看懂。

 

还有从优化观点的解释,如果不用 ResNet 这种构造,系统的损失函数会非常坑坑洼洼和高低不平,所以很难优化。我们知道整个网络训练是非凸的优化问题,如果是这种不光滑的损失函数,训练很难跳出局部极小;如果使用 ResNet,就可以比较容易抵达一个很好的局部极小。最近研究表明,局部极小区域的面积和平坦性和一个方法的推广能力非常强相关。

 

由是观之,深度学习从完全不 work 或是不能呈现,发展到今天所有人都可以非常高效、精确地呈现结果,实际上经历了很多这样的过程。其间当然还涉及诸多计算、数据,以及一些细节上的问题,像是初始化方法的使用也不容忽视。因为对于一个非常复杂的边缘系统而言,一个有效的初始化可谓不可或缺。此外还有非线性单元的问题,我们之前惯用Sigmoid非线性单元,但这个单元对收敛性是有障碍的,因此在实际中常用的都是一种叫做分段线性的非线性化单元,这种方式可以让整个收敛非常流畅——这些都是“细节”。我们都说网络结构让ResNet对优化更友好,但它并没有解决一个真正的深度学习系统可能会撞上的其他问题,例如网络的表示能力问题、推广能力问题等。因此,正是因为有这些前人做了各种各样大大小小的详细改进,才使得我们今天的深度学习一步步成长为一个相当强大的有监督的学习工具。

 

多层 ResNet 学习高度非线性映射的能力非常强。2017年年底,ResNet 成功应用于 DeepMind 的 AlphaGo Zero 系统中,从而使整个系统得到了简化,用一个40 或 80 层的网络就可以学到从棋盘图像到落子位置这样一个高度复杂的映射。在实际应用中,随着网络与数据越来越大,会逐渐呈现出这样一种特性:在一定问题上以及特定领域中,深度学习在很多场景下超过了人的能力,例如一些图像识别、人脸识别任务。从学术上来说,这也让研究员的工作实现了转变,他们越来越多地从以前设计 Feature 直接转变到了设计网络的结构。

 

2012 年开始有各种各样的神经网络结构出现。如果从计算平台的角度看这些工作,大概可以分成三类:第一类是在“云”上,像 GoogleNet、ResNet,其目标是向着最高精度方向走,有 GPU、TPU 可以训练非常大的模型,来探知我们的认知边界;第二类平台是在“端”上,特别是一些嵌入式设备,这些设备上的计算能力,内存访问都有限制,但很多真实的场景就是如此,那你怎么去做这上面的研究工作呢?谷歌在去年提出 MobileNet 运行在移动端设备上,旷视科技提出了 ShuffleNet,其目标是在一个给定计算量的设备上得到最好的效果。

一个网络的最基本结构是多个 3×3 的卷积,ResNet 加了一个跳转连接,我们在 ResNet 中还引入一个 Bottleneck 结构,先做 1×1,再做 3×3,再回到 1×1,这样可以提高卷积的效率。

 

2017 年有一项工作叫 ResNeXt,它在 3x3 的基础上引入分组卷积的方法,可以很好地提高卷积的有效性;谷歌的 MobileNet 是一个 3x3 分层卷积的方式,每个层各卷各的,这种方式非常有效,特别是在低端设备上。ShuffleNet 结合分组卷积和分层卷积的思想,对 1×1 Conv 分组;但是如果只分组的话,组间的信息不会交换,这样会影响特征学习,因此我们通过引入 Shuffle 操作,让不同分组的信息更好地交换,然后做 3×3 的分层卷积,再回到 1×1 分组卷积,这就是 ShuffleNet 的核心思想。和其它方法相比,在相同的精度下,ShuffleNet 在真实设备上的速度要比 AlexNet 快 20 倍左右。

 

我们还需要将神经网络运行在芯片上,这不光对网络结构设计有要求,还要对网络内部精度的表示做限制,现在最流行的方法是做低精度化,比如 BNN 和 XNOR Net,还有旷视科技提出的 DorefaNet。低精度方法是指神经网络的权重或激活值用低精度表示,比如 1 位,2 位,4 位。如果可以用低精度表示两个向量,那么卷积计算就可以通过芯片上非常简单的位运算完成计算。

上述分类问题网络设计需要考虑不同的平台,其它问题多是以分类为基础,比如检测,上图是检测最近几年的发展路程,它们都是先应用基础分类网络,然后构建不同的物体检测框架。

 

今年,旷视科技与北京智源研究院联合推出了 Objects365,该数据集包含 365 类,远超 COCO 的 80 多类,并包含 60 余万张照片,以及超 1000 万个物体框,是目前最大的物体检测数据集。

 

最后,除了算法的演进,也要关注如何利用今天快速增长的计算能力。眼下,我们的计算力增速已远超波尔定律,而计算能力快速增长的原因则在于计算结构的转变,即可以将所有计算都换成神经网络向量和矩阵的计算,这些计算最大的好处是能够突破带宽瓶颈,把所有数据同时拉进来进行计算后再传回去,远超现在的传统 CPU 体系结构构架,所以增长非常快,这也将会是一个快速发展的趋势。

 

(部分图片和内容来源于网络)

All Posts
×

Almost done…

We just sent you an email. Please click the link in the email to confirm your subscription!

OK