存档

‘AI-BI-ML-DL-NLP’ 分类的存档

【百度徐伟】视觉、语言以及人工智能展望

2015年9月14日 没有评论

来源:新智元

参考:百度深度学习实验室

主持人高亮:百度有一位科学家在几个指标下超过了谷歌,超过了微软,成为世界第一。但是这位科学平时比较低调,很少在公开场合发表演讲,这次在百度世界大会组委会的不断努力下,我们终于请他为我们这次的分论坛来做压轴的演讲嘉宾。下面有请百度研究院的杰出科学家徐伟博士,为大家介绍百度在人工智能方面的最新进展!

baidu-world-2015-01

徐伟:谢谢主持人,我叫徐伟,我在百度深度学习实验室,最早开始在清华大学从事人工智能的研究,到现在已经20多年的时间,我感觉最激动的时间是从加入百度开始的。两年多的时间里面,我有幸和百度的同事一起参与了对于人工智能的快速推进,并且推动百度众多的产品,我们能够把最先进的人工智能技术应用到百度的6亿用户里面,这是我觉得非常激动人心的地方。

今天我介绍一下百度最近在人工智能方面的一些研究。包括计算机视觉、语音以及人工智能的应用。

人工智能是一个非常火热的概念,人工智能的讨论有一个非常坚实的技术进步作为基础。最近我们看到是在语音识别、图像识别和传统的人工智能路径上面,都取得了过去几十年不敢想象的进步。这体现了我们对于人工智能未来的期望。

是什么造成了这样巨大和快速的进步呢?一个很主要的研究是大数据和我们能够处理大数据的计算能力。像我们小孩要学习语言一样,我们教他一段时间,通过非常多的交流小孩能够把语言学好,这是因为内在的一些复杂结构需要大量的数据才能够体现出来,但是只有大数据也不够的,我们要教他说话,所以我们还需要一个非常强有力的学习方法。

深度学习有多层次的结构,能够把大数据里面的信息充分地挖掘出来。深度学习和大数据的结合,成为了这次人工智能潮浪的巨大推动力。

baidu-world-2015-02

PADDLE,是百度的深度学习平台。我们在百度有非常多的产品都使用了深度学习技术。这些产品有着有非常多的数据类型,比如说离散的数据,图像的数据,文字的数据,以及数据分析的组合,这些我们可以很好的支持。针对于百度海量的数据资源和应用资源,PADDLE平台都能非常好的支持不同的训练。PADDLE支持灵活的配置,可以根据我们的应用的不同的需求,灵活方便地推出各种不同的深度学习模型的结构,比如说我们可以把这样的网络结合在一起,构造成一个模型,处理图像和文字结合的一些问题。

baidu-world-2015-03

正是因为我们有了非常通用、非常灵活和非常强大的一个深度学习平台,深度学习在百度各种各样的产品里面,得到了非常广泛的应用。这是百度非常核心的两个产品,一个是百度的网页搜索,另外一个是百度的广告排序,这两个产品里面,使用了深度学习以后,它们在搜索的相关性和广告的点击率都有非常大的提升。

除了一些核心产品,还有一些你不太能想到的地方。应用深度学习后,数据中心的管理,病毒的检测,给我们带来了非常大的受益。还有其他的很多的产品都用上了我们的深度学习模型,因为时间有限,就不一一介绍了。

baidu-world-2015-04

随着大数据在深度学习的使用,我们开始看到机器在一些问题上已经逐渐接近甚至超越了人类水平。比如说语音识别在搜索这样的短文本输入上面,已经做得很好了。在这个方面,人的单字错误率现在是8%,我们现在最好的是语音识别系统单字错误率6%,比人还好。另外一个方面是人脸识别,在这个应用上,现在机器人已经做到好很多了。LFW是国际通用人脸测试的评估,是用机器人判断,包括百度在内的一些公司和学校都已经做到了比人还好的识别效果,尤其百度的识别错误率只有0.23%,是世界上目前最好的结果。

baidu-world-2015-05

刚才提到了,百度已经把这么好的人脸识别技术通过API Store开放给大家使用了。开发者使用这样的API可以非常方便的实现人脸注册和认证的功能,我们还提供了整套和配套的SDK,眨眼、张嘴、转头的动作都可以通过系统的人脸认证。

baidu-world-2015-06

另外,我们也开发文字识别技术。在使用了深度学习以后,我们文字识别的应用范围和准确度都有了非常大的提高。比如说可以检测弯曲的文字,还有倾斜视角的文字,还有非常模糊的一些英文和中文,也可以正确地识别。还有比如说公式这样非常复杂结构的文字,也能够正确地处理。

在一些感知问题上,百度用深度学习已经取得非常大的进步。但是我们也知道,人区别于动物一个最大的特点是语言理解能力,接下来我给大家介绍一下百度使用深度学习在语言理解方面的一些具体的进展。

baidu-world-2015-07

这是一个传统的语言理解系统示意图,一开始有语法分析,有词语标注的信息,还有句法分析,最后通过这样的句法树提供语音分析的结果,这样一个流程非常像我20多年前在学校学习英文的时候,非常重视语法的概念,实际上这种学习效果非常不理想,我觉得我个人的英文让这样的学习方法给害了。我们也知道小孩学习英文,实际上不需要语法这样的东西,可以做到非常流利、自然的使用理解母语。

说到这里,我要给大家介绍一下深度学习里面一个非常重要的思想,就是叫做端到端的学习,我们要抛弃人为的硬性分解,还有人为的特征构造,直接通过一个完整的模型,直接学习,这样的思想前面已经用到语音识别,图像识别的任务里面去,剖析了这些特征的东西,取得了几年前完全不可想象的巨大的成功。

baidu-world-2015-08

在百度我们首先把这样的思想用到语言标注里面去,通过这样一个多层的利用网络,直接像小孩学习语言一样,不需要任何的语法分析,直接从文字的训练,直接到这样的关系,取得了非常好的结果。世界上首次不需要语法分析取得了比传统语法分析方法更好的结果。

baidu-world-2015-09

端到端的学习另外一个非常成功的应用是机器翻译,通过这么一个整体的深度学习模型,直接学习从原语言到目标语言的对应关系。今年5月份的时候,百度又首次发布了统计和深度学习的翻译系统,对我们的信息翻译有了非常巨大的提升,如果大家感兴趣的话,可以到百度翻译了解一下。

baidu-world-2015-10

人类语言是一个抽象的东西,是我们对所看到的、听到的和感受到的世界的描述。在百度我们提出把图像识别、语言理解还有语言生成这样传统人工智能上不同的分支,非常紧密地结合在一起,用统一的神经元网络,机器人直接学习和所看到的世界之间的关系。这样一个学习方法,非常像我们小孩学习一样,非常的自然。我们可以想像在不久的将来,我们都可以像教小孩那样教机器人做这样的事情。

这里是我们把图像和语言统一应用的例子,第一个例子是看图说话,机器人看到这样的图以后,可以读出这是一辆火车沿着森林里面的路行驶,第二个例子是冲浪板是什么颜色的,机器人通过对图和问题的理解,可以说出正确的答案,说是黄色的。我们这样的语言和图像的统一的模型,不仅可以理解单一的、静止的图像,也可以理解这样的动态的视频,看到这个视频以后,可以描述说是这是一只狗在桶里玩。

baidu-world-2015-11

百度花了很大的努力来开发人工智能的技术,最终的目的就是为了让我们的生活变得更加美好。今天上午的时候,王劲为大家介绍了DuLight,这款产品就是出于这样的理想诞生的,DuLight是百度深度学习实验室最新开发的可穿戴智能设备,上面集成了图像识别、人脸识别、语音识别、语言理解的核心人工智能技术。我们目的是帮助盲人更好地生活。依托于百度、百度大脑,DuLight可以自动描述,帮助他了解周围环境。另外还有识别纸币面值的功能,解决实际生活问题。还有非常好的人脸识别技术,可以对摄像头的人脸做出识别,让我们更好地融入社会。

baidu-world-2015-12

百度作为一个搜索引擎公司,最重要的使命是让我们的方便便捷地找到信息和服务。比较注重打扮的女生,经常会有这样的烦恼,看到一个漂亮的衣服,自己非常喜欢,不知道什么地方去买。百度的人工智能,让这件事情变得非常容易了,只需要把带有服装的照片上传到百度,百度大脑可以通过连接到电商资源里面,找到最相似的服装,并且直接可以到电商平台进行购买,非常地方便和快捷。

我们看到百度已经把人工智能用到产品的方方面面,我们可以有更好的产品,而更好的产品会给我们带来更多的用户和更大量的数据,更多的数据通过百度大脑强大的深度学习能力,可以给我们带来更强的智能,反过来又会让我们得到更好的产品。这是一个正循环,随着时间的推移,百度大脑的智能会越来越强,我们自然会问,我们现在离图像识别的人工智能还有多远?

baidu-world-2015-13

人工智能的概念是在1955年的时候,由著名的四名计算机科学家提出来,他们要用十个人花两个月时间,对人工智能做出重大的提升,显然回过头来看,他们是大大低估了实现人工智能的难度。半个多世纪过去了,我们现在终于看到了一些人工智能的希望。我们是不是真的离人工智能很近了?其实还不是这样。

baidu-world-2015-14

现在的人工智能还缺少非常重要的几个能力,第一个就是小数据的学习能力,今天大家可能听到非常多的大数据,我现在说小数据的学习能力,大家会觉得有一些奇怪,其实不是这样,我们现在的深度学习算法需要成千上万的图像才能认识一个物体,而小孩只需要教几次。我们需要做到,在非常大量的数据里学到非常好的表述,这样才能通过少量数据快速学习。现在我们在这方面相当缺乏。

另外一个方面,人工智能还缺少自主探索环境进行学习的能力,就像小孩一样,一生下来就有非常强的好奇心,不断地动、摸、爬、咬各种各样的东西,做破坏性的行为。小孩就是在这样的过程中不断感知和认识周围的世界,并且不断的成长。我们现在人工智能还缺乏这样的能力。

还有一个方面,现在的人工智能还缺乏通过和人的自然交流进行学习的能力。我们知道人可以在探索环境的过程当中不断的学习,也通过与人的交流学习非常多的知识。

我们现在还有一些非常困难的东西需要解决,百度的研究者正在积极探索这些问题。我们离真正的人工智能还有相当长的一段路,但是我觉得人工智能未来一定是非常光明的。因为我们已经看到百度和其他很多技术公司,已经把人工智能应用到生活的方方面面,我们正在经历一场人工智能的变革。我希望大家能够加入我们,一块去研究最新的、最先进的人工智能技术,或者使用我们的产品,为我们人工智能的成长提供点点滴滴的数据,我希望大家能够和我们一起创造人工智能的美好未来,谢谢大家。

 

分类: AI-BI-ML-DL-NLP 标签:

Nature重磅:Hinton、LeCun、Bengio三巨头权威科普深度学习

2015年7月23日 没有评论

本文选自Nature,机器之心翻译出品。

翻译|微胖、汪汪、张之乎、Kara、Siouxsie、小力、孟婷、桑夏、张楠、安隐、Rainbow、赤龙飞。

校对|微胖、Fatlucas、孟婷。

借助深度学习,多处理层组成的计算模型可通过多层抽象来学习数据表征( representations)。这些方法显著推动了语音识别、视觉识别、目标检测以及许多其他领域(比如,药物发现以及基因组学)的技术发展。利用反向传播算法(backpropagation algorithm)来显示机器将会如何根据前一层的表征改变用以计算每层表征的内部参数,深度学习发现了大数据集的复杂结构。深层卷积网络(deep convolutional nets)为图像、视频和音频等数据处理上带来突破性进展,而递归网络(recurrent nets )也给序列数据(诸如文本、语言)的处理带来曙光。

机器学习为现代生活诸多方面带来巨大动力:从网页搜索到社交网络内容过滤再到电商网商推荐,在相机、智能手机等消费品中也越来越多见。机器学习系统被用来识别图像中的物体、将语音转为文本,根据用户兴趣自动匹配新闻、消息或产品,挑选相关搜索结果。这类被应用程序越来越多地采用的技术,叫做深度学习。

传统机器学习技术在处理原始输入的自然数据方面能力有限。几十年来,建构模式识别或机器学习系统需要利用严谨的工程学和相当丰富的专业知识设计出一个特征提取器,它能将原始数据(例如图像像素值)转化成适于内部描述或表征的向量( vector ),在提取器中,学习子系统(通常是一个分类器)可以检测或分类输入模式。

表征学习(representation learning)是这样一套学习方法:输入原始数据后,机器能够自动发现检测或分类所需的表征信息。深度学习是一种多层描述的表征学习,通过组合简单、非线性模块来实现,每个模块都会将最简单的描述(从原始输入开始)转变成较高层、较为抽象的描述。通过积累足够多的上述表征转化,机器能学习非常复杂的函数。就分类任务来说,更高层的表征会放大输入信号的特征,而这对区分和控制不相关变量非常关键。比如,图片最初以像素值的方式出现,第一特征层级中,机器习得的特征主要是图像中特定方位、位置边沿之有无。第二特征层级中,主要是通过发现特定安排的边缘来检测图案,此时机器并不考虑边沿位置的微小变化。第三层中会将局部图像与物体相应部分匹配,后续的层级将会通过把这些局部组合起来从而识别出整个物体。深度学习的关键之处在于:这些特征层级并非出自人类工程师之手;而是机器通过一个通用(general-purpose)学习程序,从大量数据中自学得出。

某些根深蒂固的问题困扰了人工智能从业者许多年,以至于人们最出色的尝试都无功而返。而深度学习的出现,让这些问题的解决迈出了至关重要的步伐。深度学习善于在高维度的数据中摸索出错综复杂的结构,因此能应用在许多不同的领域,比如科学、商业和政府。此外,除了图像识别和语音识别,它还在许多方面击败了其他机器学习技术,比如预测潜在药物分子的活性、分析粒子加速器的数据、重构大脑回路、预测非编码DNA的突变对基因表达和疾病有何影响等。也许,最让人惊讶的是,在自然语言理解方面,特别是话题分类、情感分析、问答系统和语言翻译等不同的任务上,深度学习都展现出了无限光明的前景。

在不久的将来,我们认为深度学习将取得更多成就,因为它只需要极少的人工参与,所以它能轻而易举地从计算能力提升和数据量增长中获得裨益。目前正在开发的用于深层神经网络的新型学习算法和体系结构必将加速这一进程。

监督式学习

不管深度与否,机器学习最普遍的形式都是监督式学习(supervised learning)。比如说,我们想构造一个系统,它能根据特定元素对图片进行分类,例如包含一栋房子、一辆车、一个人或一只宠物。首先,我们要收集大量包含有房子、车、人或宠物的图片,组成一个数据集(data set),每张图片都标记有它的类别。在训练时,每当我们向机器展示一张图片,机器就会输出一个相应类别的向量。我们希望的结果是:指定类别的分数最高,高于其他所有类别。然而,如果不经过训练,这将是不可能完成的任务。为此,我们通过一个目标函数来计算实际输出与期望输出之间的误差或距离。接下来,为了减小误差,机器会对其内部可调参数进行调整。这些可调参数常被称为「权重」(weight),是实数,可看做定义机器输入-输出功能的「门把手」。在一个典型的深度学习系统中,可能存在着成千上亿的可调权重及用以训练机器的标记样本。

为了正确地调整权重矢量( weight vector),学习算法会计算出一个梯度矢量( gradient vector)。对每一个权重,这个梯度矢量都能指示出,当权重略微增减一点点时,误差会随之增减多少量。接着,权重矢量就会往梯度矢量的反方向进行调整。

从所有训练范例之上,平均看来,目标函数( objective function)可被视为一片崎岖的山地,坐落于由权重组成的高维空间。梯度矢量为负值的地方,意味着山地中最陡峭的下坡方向,一路接近最小值。这个最小值,也就是平均输出误差最小之处。

在实践中,大多数业内人士都是用一种被称为「随机梯度下降」(SGD – Stochastic Gradient Descent)的算法(梯度下降Grident Descent 是「最小化风险函数」以及「损失函数」的一种常用方法,「随机梯度下降」是此类下的一种通过迭代求解的思路——译者注)。每一次迭代包括以下几个步骤:获取一些样本的输入矢量( input vector),计算输出结果和误差,计算这些样本的平均梯度,根据平均梯度调整相应权重。这个过程在各个从整个训练集中抽取的小子集之上重复,直到目标函数的平均值停止下降。它被称做随机(Stochastic)是因为每个样本组都会给出一个对于整个训练集( training set)的平均梯度(average gradient)的噪音估值(noisy estimate)。较于更加精确的组合优化技术,这个简单的方法通常可以神奇地快速地找出一个权重适当的样本子集。训练过后,系统的性能将在另外一组不同样本(即测试集)上进行验证,以期测试机器的泛化能力( generalization ability) ——面对训练中从未遇过的新输入,机器能够给出合理答案。

很多当今机器学习的实际应用都在人工设定的特征上使用「线性分类」(linear classifiers)。一个「二元线性分类器」(two-class linear classifier)可以计算出特征向量的「加权和」(weighted sum)。如果「加权和」高于阈值,该输入样本就被归类于某个特定的类别。

二十世纪六十年代以来,我们就知道线性分类只能将输入样本划分到非常简单的区域中,即被超平面切分的半空间。但是,对于类似图像及语音识别等问题,要求「输入-输出函数」(input–output function)必须对输入样本的无关变化不敏感,比如,图片中物体的位置,方向或者物体上的装饰图案,又比如,声音的音调或者口音;与此同时「输入-输出函数」又需要对某些细微差异特别敏感(比如,一匹白色的狼和一种长得很像狼的被称作萨摩耶的狗)。两只萨摩耶在不同的环境里摆着不同姿势的照片从像素级别来说很可能会非常地不一样,然而在类似背景下摆着同样姿势的一只萨摩耶和一只狼的照片在像素级别来说很可能会非常相像。一个「线性分类器」(linear classifier),或者其他基于原始像素操作的「浅层(shallow)」分类操作是无论如何也无法将后者中的两只区分开,也无法将前者中的两只分到同样的类别里的。这也就是为什么「浅层」「分类器(classifiers)」需要一个可以出色地解决「选择性-恒常性困境」( selectivity–invariance dilemma)的「特征提取器」(feature extractor)—— 提取出对于辨别图片内容有意义的信息,同时忽略不相关的信息,比如,动物的姿势。我们可以用一些常规的非线性特征来增强「分类器」(classifiers)的效果,比如「核方法」(kernel methods),但是,这些常规特征,比如「高斯核」(Gaussian Kernel)所找出来的那些,很难泛化( generalize )到与训练集差别别较大的输入上。传统的方法是人工设计好的「特征提取器」,这需要相当的工程技巧和问题领域的专业知识。但是,如果好的「特征提取器」可以通过「通用学习程序(General-Purpose learning procedure)」完成自学习,那么这些麻烦事儿就可以被避免了。这就是深度学习的重要优势。

图1| 多层神经网路和反向传播。

a. 一个多层神经网络(如图所示相互连接的点)能够整合(distort)输入空间(图中以红线与蓝线为例)让数据变得线性可分。注意输入空间的规则网格(左侧)如何转被隐藏单元(中间)转换的。例子只有两个输入单元、两个隐藏单元和一个输出单元,但事实上,用于对象识别和自然语言处理的网络通常包含了数十或成千上万个单元。(本节引用改写自 C. Olah (http://colah.github.io/).)

b. 导数链式法则告诉我们,两个微小增量(即x关于y的增量,以及y关于z的增量)是如何构成的。x的增量Δx导致了y的增量Δy,这是通过乘以∂y/∂x来实现的(即偏导数的定义)。同样,Δy的变化也会引起Δz的变化。用一个方程代替另一个方程引出了导数的链式法则( the chain rule of derivatives),即增量Δx如何通过与∂y/∂x及 ∂z/∂x相乘使得z也发生增量Δz。当x,y 和 z都是向量时这一规律也同样适用(使用雅克比矩阵)。

c. 这个公式用于计算在包含着两个隐层和一个输出层的神经网络中的前向传输,每个层面的逆向传递梯度都构成了一个模组。在每一层,我们首先计算面向每个单元的总输入值z,即上一层的输出单元的加权和;然后,通过将一个非线性函数f(.)应用于z来得出这个单元的输出。为了简化流程,我们忽略掉一些阈值项(bias terms)。在神经网络中使用的非线性函数包含了近些年较为常用的校正线性单元(ReLU) f(z) = max(0,z),以及更传统的 sigmoid函数,比如,双曲线正切函数, f(z) = (exp(z) − exp(−z))/(exp(z) + exp(−z)) 和 逻辑函数f(z) = 1/(1 + exp(−z)).

d. 该公式用于计算反向传递。在每一个隐藏层中,我们都会计算每个单元输出的导数误差,即上述层中上一层所有单元输入的导数误差的加权总和。 然后,将关于输出的导数误差乘以函数f(z)的梯度(gradient),得到关于输入的导数误差。 在输出层中,通过对成本函数进行微分计算,求得关于输出单元的误差导数。因此我们得出结论 yl – tl 如果对应于单元l的成本函数是 0.5(yl – tl) 2 (注意tl是目标值)。一旦∂E/∂zk已知,那么,就能通过yj ∂E/∂zk调整单元j的内星权向量wjk。


图2 | 卷积网络的内部。一个典型的卷积网络架构的每一层(水平)输出(不是过滤器)应用到一个萨摩耶犬的图像(图2左下方,RGB输入(红绿蓝),下方右侧)。 每一个长方形图片都是一张对应于学习到的输出特征的特征地图,这些特征可以在图片的各个位置被侦测到。信息流是从下往上的,低级的特征充作导向性边际检测因子( edge detectors),每个输出图像类都会被计算出一个分值。ReLU,整流线性单元。

深度学习架构由简单模组多层堆叠而成,全部(或绝大部分)模组都从事学习,大部分会计算非线性的输入输出映射。堆叠架构中的每个模组都会转换它的输入,同时增强可选择性和所呈现状态的一致性。 通过多个非线性层面(例如,深度5-20层),系统可以实现对于输入数据的极其微小细节的敏感性功能 — 例如,区别开白色的狼和萨摩耶犬 — 并且对于较大的无关变量会不敏感(例如,主体周围的环境、姿势、光照条件和周围物体。)

训练多层架构的反向传播算法

从最早的模式识别开始,研究者们就一直试图用可训练的多层网络代替人工设计特征,尽管这种解决方案很简单,直到20世纪80年代中期,它才得到人们的广泛认可。事实证明,多层架构可以通过简单的随机梯度下降法得以训练。只要模组是由它们的输入值及其内部权重构成的相对平滑的函数(relatively smooth functions),人们就可以使用反向传播算法来计算梯度。20世纪70至80年代,几个不同的研究小组分别发现这一方法确实可行、有用。

计算一个目标函数关于一个多层堆叠模组的权重梯度的反向传播过程,只不过是导数链式法则的一个实际应用。其中关键之处在于,关于模组输入值的函数的导数(或梯度),可以借助关于该模组的输出值(或序列模组的输入值)的梯度反向计算出来(图1)。反向传播方程可在所有模组中传播梯度时被反复应用,从顶部(top)(神经网络产生预测的那一层)输出开始,一直到底部(bottom)(被接收外部输入的那一层)。这些梯度一经计算,就可直接计算出关于每个模组权重的梯度。

深度学习的许多应用,都会使用前馈神经网络架构( feedforward neural network architectures)(图1)——该架构可学习将一个固定大小的输入映射到(例如,一幅图像)到一个固定大小的输出上(例如,每种分类的概率)。从一层到下一层,单元组计算其前一层输入的加权总和,并通过一个非线性函数输出结果。目前,最受欢迎的非线性函数是整流线性单元(ReLU),一个简单的半波整流器f(z) = max(z, 0)。在过去的几十年里,神经网络使用的是更平滑的非线性,比如,tanh(z)或1 /(1 + exp(−z)),但ReLU在多层网络中的学习速度通常更快,可允许在没有无监督预训练(without unsupervised pre-training)的情况下进行深度监督网络训练。不在输入或输出层中的单元通常被称为隐层单元(hidden units)。隐层可被看作是以非线性方式变换输入,从而使所有类别在最后一层变得线性可分( linearly separable by the last layer)(图1)。

20世纪90年代末,神经网络和反向传播被机器学习社区大量遗弃,同时也被计算机视觉和语音识别领域忽略。人们普遍认为,学习有用的、多层级的、几乎不靠先验知识的特征提取器并不现实可行。尤其是,人们通常认为简单的梯度下降法会深陷局部极小的泥潭——在这种权重配置当中,除非进行大的改动,否则很难降低平均误差。

实践中,对大型网络而言,局部极小几乎不构成问题。无论初始条件如何,系统基本总能得到质量非常相似的解决方案。最近的理论和实证研究结果均有力地表明,总的来说,局部极小不是一个严重问题。相反,解空间( landscape)充满了大量梯度为0的鞍点( saddle points ),且在多数维度中表面向上弯曲,少数维度中表面向下弯曲。分析结果似乎表明,向下弯曲的鞍点在整体中占比相对较小,但这些鞍点的目标函数值大多相近。因此,算法陷入这些鞍点(不能继续寻优),无关紧要。

2006年前后,加拿大高级研究所(CIFAR)聚集了一批研究人员,他们重燃了人们对深度前馈网络的兴趣。这些研究人员引入无监督学习程序——无需标记数据便可创建特征检测器层。各层特征检测器的学习目标便是在下一层重构或模拟特征检测器(或原始输入)的活动。利用这种重构学习目标来「预训练(pre-training)」几层复杂度递增的特征检测器,深层网络的权重可以被初始化为合理值。接着,最终层的输出单元可被添加到网络顶端,整个深度系统可被微调至使用标准的反向传播。在识别手写数字或检测行人时,特别是当标记的数据量非常有限的时候,这一程序非常有效。

这种预训练的方法的首次重要应用是在语音识别上,这之所以可行归功于便于编程的GPUs的诞生,它让研究人员可以用10到20倍的速度训练神经网络。2009年,这个方法被用来计算一段声音采样中提取短时系数窗口对应的一系列概率值,这些概率值反映出由窗口中帧表示语音各个段落的可能性。在小词汇表的标准语音识别测试上,这种方法的训练效果打破纪录,很快它又发展到打破大词汇表的标准语音测试纪录。

到2012年,2009年以来的各种深度网络一直的得到多个主要语音研究小组持续开发并被布局在安卓手机上。对于较小数据集来说,无监督预训练有助于防止过拟合( overfitting), 当标注数据样本小( number of labelled examples is small)或需要迁移( in a transfer setting )——有很多源领域的标注数据样本但缺少目标领域的标注数据样本——的时候,深度网络的泛化( generalization)效果显著提升。深度学习重新获得认识,人们发现,预训练阶段只是小规模数据集的必需品。

然而,还有一种特殊类型的深度前馈网络( deep feedforward network),不仅更易训练而且泛化能力要比那些相邻两层完全相连的神经网络强大很多。这就是卷积神经网络 (ConvNet)。 在神经网络「失宠 」的日子里,卷积神经网络在实践运用中获得许多成功,最近已被计算机视觉领域广泛采用。

卷积神经网络

卷积神经网络最初是用来处理多维数组数据,比如,一张由三个2D数组组成、包含三个彩色通道像素强度的彩色图像。大量的数据模式都是多个数组形式:1D用来表示信号和序列信号包括人类语言;2D用来表示图片或声音;3D代表视频或有声音的图像。卷积神经网络利用自然信号特征的核心理念是:局部连接(local connections),权重共享,池化(pooling)和多网络层的使用。

典型的卷积神经网络的架构(图二)包括一系列阶段:最初的几个阶段由卷积层和池化层组成,卷积层的单元被组织到特征图(feature map)中,每个单元通过一组被称作滤波器(filter bank)的权值被连接到前一层的特征图的局部数据块。接下来,得到的局部加权和会传递至一个非线性函数,例如ReLU。同一个特征图中的所有单元共享相同的滤波器,不同特征图使用不同滤波器。采用这种架构有两方面的原因。首先,在诸如图像这样的数组数据中,数值与附近数值之间通常是高度相关的,容易生成易被探测到的局部特征(motif)。其次,图像和其他类似信号的局部统计特征通常又与位置无关,易言之,出现在某处的某个特征也可能出现在其他任何地方,因此,不同位置的单元会共享同样的权值并且可以探测相同模式。数学上,由一个特征图完成的过滤操作是一个离线的卷积,卷积神经网络由此得名。

和卷积层用来探测前一层中特征之间的局部连接不同,池化层的作用则是对语义相似的特征进行合并。由于构成局部主题的特征之间的相对位置关系不是一成不变的,可以通过粗粒度检测每个特征的位置来实现较可靠的主题识别。一个池化层单元通常会计算一个或几个特征图中一个局部块的最大值,相邻的池化单元则会移动一列或一行从小块读取输入,这种设计不仅减少了数据表征需要的维数,而且也能对数据小规模的偏移、扭曲保持不变。两到三个卷积层,非线性层和池化层被叠加起来,后面再加上更多的卷积和全连接层。在卷积神经网络的反向传播算法和在一般深度网络上一样简单,能让所有滤波器中的权值得到训练。

多数自然信号都是分级组合而成,通过对较低层信号组合能够获得较高层的信号特征,而深度神经网络充分利用了上述特性。在图像中,线条组合形成图案,图案形成部件,部件组成物体。类似的层次结构存在于由声音到电话中的语音及文本形成过程,音素组成音节,音节组成单词,单词组成句子。当输入数据在前一层中的位置有变化的时候,池化操作让这些特征表示对变化具有鲁棒性。

卷积神经网络中的层次的卷积和汇聚的灵感直接来源于视觉神经科学中的简单细胞和复杂细胞的经典概念,并且其整体架构让人想起视觉皮层腹侧通路的LGN-V1-V2-V4-IT层次结构。当向卷积神经网络模型和猴子同时展示相同的画面时,卷积神经网络的高级单元被激活,解释了猴子颞下皮层随机设置的160个神经元的变化。卷积神经网络有着神经认知机的基础,两者的体系结构有些类似,但是,卷积神经网络没有诸如反向传播的那种端对端的监督学习算法。原始的1D卷积神经网络被称为「延时神经网络(time-delay neural net )」,用于识别语音和简单的单词。

早在20世纪90年代初,卷积网络就已有非常广泛的应用 ,最开始延时神经网络被用在语音识别和文档阅读上。文本阅读系统使用了受过训练的延时神经网络以及一个实现了语言约束的概率模型。到20世纪90年代末,该系统能够读取美国超过十分之一的支票。随后,微软发明了许多基于卷积神经网络的光学字符识别和手写识别系统。卷积神经网络在20世纪90年代初就被尝试用于包括脸、手、面部识别的自然图像目标检测中。

使用深层卷积网络进行图像识别

从21世纪初开始,卷积神经网络就被成功用于检测、分割和物体识别以及图像各区域。这些应用都使用了丰富的标签数据,比如,交通标志识别、生物图像(特别是神经链接组学方面)分割、面部探测、文本、行人和自然图像中的人体的检测。近些年来,卷积神经网络的一项重要成功应用就是人脸识别。

值得注意的是,图像可以在像素级别上被标记,这样就能被用于诸如自主移动机器人(autonomous mobile robots)和无人驾驶汽车等技术中。像Mobileye和NVIDIA 这些公司正在将这些基于卷积神经网络的方法应用于即将面世的汽车视觉系统中。其他重要的应用程序涉及到自然语言理解和语音识别。

尽管取得了这些成就,但在2012年ImageNet竞争之前,卷积神经网络在很大程度上并未获得主流计算机视觉和机器学习团体的青睐。当深层卷积网络被应用于来源于包含1000个不同类型约100万个图像的数据集中,它们取得了惊人的成果,错误率仅是当时最佳方法的一半。该成功源于高效利用了GPUs和ReLUs、一项新的被称为「dropout 」的正规化技术( regularization technique )以及分解现有样本产生更多训练样本的技术。成功给计算机视觉领域带来一场革命。如今,卷积神经网络几乎覆盖所有识别和探测任务,在有些任务中,其表现接近人类水平。最近一个令人震惊的例子,利用卷积神经网络结合递归网络模块来生成图像标题( image captions )(如图3)。

图3 |从图像到文本。将递归神经网络(RNN)生成的标题作为额外输入,深度卷积神经网络(CNN)会从测试图片中提取表征,再利用训练好的RNN将图像中高级( high-level )表征「翻译成 」标题(上图)。当RNN一边生成单词(黑体所示),一边能将注意力集中在输入图像的不同位置(中间和底部;块状越亮,给予的注意力越多)的时候,我们发现,它能更好地将图像「翻译成」标题。

当前的卷积神经网络由10~20层ReLUs,数百万个权值及数十亿个连接组成。两年前,训练如此庞大的网络可能需要数周时间,而随着硬件、软件和算法并行化(algorithm parallelization)的进步,训练时间已经缩短至几个小时。

卷积神经网络的视觉系统良好表现促使包括谷歌、Facebook、微软、IBM、雅虎、推特和Adobe在内的多数主要科技公司以及数量激增的创业公司开始启动研发项目,部署基于卷积神经网络的图像识别产品和服务。

卷积神经网络易于在芯片或现场可编程门列阵(FPGA)中得以高效实现。为了实现智能手机、相机、机器人和无人驾驶汽车上的实时视觉应用,NVIDIA、Mobileye、因特尔、高通和三星等许多公司都正在开发卷积神经网络芯片。

分布式表征和语言处理

深度学习理论显示,与不适用分布式表征的经典学习算法相比,深度网络有两处异常明显的优势。这些优势源于节点权重(the power of composition)以及底层数据生成分布具有适当的组成结构。第一,学习分布式表征能够将通过训练而学习获得的特性值泛化为新的组合(例如,n元特征有2n 组合可能)。第二,深度网络中的表征层相互组合带来了另一个指数级优势的潜力(指数性的深度)。

多层神经网络的隐藏层学会以一种易于预测目标输出的方式来再现网络输入。一个很好的示范就是训练多层神经网络根据局部文本中的前述语句预测下一个词。文本的每个词表示成网络中的N分之一向量,也就是说,每个成分的值为1,余下的为0。在第一层中,每个字创建一个不同模式的激活或单词向量(如图4所示)。在语言模型中,网络中的其他层学习如何将输入的单词向量转化成输出单词向量来预测下一个单词,也能用来预测词汇表中单词作为文本中下一个单词出现的概率。正如学习分布表征符号文本最初展示的那样,网络学习了包含许多激活节点(active components )、且每一个节点都可被解释成一个单词独立特征的单词向量。这些语义学特征并没有在输入时被清晰表现出来。而是在学习过程中被发现的,并被作为将输入与输出符号结构化关系分解为微规则(micro-rules)的好方法。当词序列来自一个大的真实文本语料库,单个微规则并不可靠时,学习单词向量也一样表现良好。当网络被训练用于预测新文本中的下一个词时,一些单词向量非常相似,比如Tuesday和Wednesday,Sweden和Norway 。这种表征被称为分布式表征,因为它们的元素(特性)并非相互排斥,且它们构造信息与观测到的数据变化相对应。这些单词向量由所习得的特性组成,这些特性并非由科学家们事先决定而是由神经网络自动发现。现在,从文本中习得的单词向量表征被非常广泛地使用于自然语言应用。

表征问题是逻辑启发与神经网络启发认知范式争论的核心问题。在逻辑启发范式中,一个符号实体表示某一事物,因为其唯一的属性与其他符号实体相同或者不同。它并不包含与使用相关的内部结构,而且为理解符号含义,就必须与审慎选取的推理规则的变化相联系。相比之下,神经网络使用大量活动载体( big activity vectors)、权重矩阵和标量非线性,实现一种快速「直觉 」推断,它是轻松常识推理的基础。

在介绍神经语言模型前,语言统计模型的标准方法并没有使用分布式表征:它是基于计算短符号序列长度N(称为N-grams,N元文法)出现的频率。N-grams可能出现的次数与VN一致,这里的V指的是词汇量的大小,考虑到词汇量大的文本,因此需要更庞大的一个语料库。N-grams把每一个词作为一个原子单位,因此它不能在语义紧密相关的单词序列中,一概而论,但是,神经语言模型可以实现上述功能,因为它们将每个单词与真实特征值的向量关联起来,并且语义相关的单词在该向量空间中更为贴近。(如图4)。


图4|已完成学习的单词向量的可视化展现。左边介绍了为了建模语言而习得的词汇表征,通过使用 t-SNE算法[103]非线性映射至二维空间中以便于观察。右边是一个由实现英-法互翻的递归神经网络学习短语的二维空间表示。由图可知,语义或排序相似的单词表征映射较为接近 。词汇的分布式表征通过使用反向传播获得,以此来学习每个单词的表征形式及预测目标数量的功能,比如序列中的后续单词(如语言建模)或者翻译文字的全部序列(机器翻译)。

递归神经网络

最初引入反向传播时,最令人激动的应用便是训练递归神经网络(简称RNNs)。对于那些需要序列连续输入的任务(比如,语音和语言),RNNs是上乘之选(图5)。RNNs一次处理一个输入序列元素,同时维护隐式单元中隐含着该序列过去所有元素的历史信息的「状态向量」。当我们考虑隐式单元在不同的离散时间步长的输出,就好像它们是在多层网络深处的不同神经元的输出(图五,右)如何利用反向传播训练RNNs,一目了然。

RNNs是非常强大的动力系统,但训练它们也被证实存在一些问题,因为反向传播梯度在每个时间间隔内或增长或下降,因此,一段时间之后通常会导致结果激增或者降为零。

因先进的架构和训练的方式,RNNs不仅被证实擅长预测文本中下一个字符或句子中下一个单词,还可应用于更加复杂的任务。例如,某时刻阅读英文句子中的单词后,一个英语的「编码器」网络将被生成,从而帮助隐式单元的最终状态向量很好地表征句子所传达的思想。这种「思想向量(thought vector)」可以作为一个集大成的法语「编码器」网络的初始化隐式状态(或额外的输入),其输出为法语翻译首单词的概率分布。如果从概率分布中选择一个特定首单词作为编码网络的输入,将会输出翻译句子中第二个单词的概率分布,依此类推,直到停止选择为止。总体而言,这一过程是根据英语句子的概率分布而生成的法语单词序列。这种近乎直接的机器翻译方法的表现很快和最先进(state-of-the-art)的方法不相上下,同时引发人们对于理解句子是否需要使用推理发掘内部符号表示质疑。这与日常推理中涉及到根据合理结论类推的观点是匹配的。

除了将法语句子翻译成英语句子,还可以学习将图片内容「翻译」为英语句子(如图3)。编码器是一种在最后隐层将像素转换为活动向量的深度卷积网络。解码器是一种类似机器翻译和神经网络语言模型的递归神经网络。近年来,引发了人们对深度学习该领域的热议。RNNs一旦展开(如图5),可被视作是所有层共享同样权值的深度前馈神经网络。虽然它们的主要目的是长期学习的依赖性,但有关理论和经验的例证表明很难学习并长期储存信息。

为了解决这一问题,一个扩展网络存储的想法出现。第一种方案是采用了特殊隐式单元的LSTM,该自然行为便是长期的保存输入。一种类似累加器和门控神经元的称作记忆细胞的特殊单元:它通过在下一个时间步长拥有一个权值并联接到自身,从而拷贝自身状态的真实值和累积外部信号,但这种自联接是另一个学习并决定何时清除记忆内容的单元的乘法门所操控。

LSTM网络最终被证明比传统的递归神经网络(RNNs)更为有效,尤其是,每一个时间步长内有若干层时,整个语音识别系统能够完全一致地将声学转录为字符序列。目前,LSTM网络及其相关形式的门控单元同样也用于编码与解码网络,并在机器翻译中表现良好。

过去几年里,几位学者提出一些不同的方案来增强RNNs存储器模块。这些建议包括,神经图灵机——通过加入RNNs可读可写的“类似磁带”的存储来增强网络,而记忆网络中的常规网络通过联想记忆来增强。记忆网络在标准的问答基准测试中表现良好,记忆是用来记住稍后要求回答问题的事例。

除了简单记忆化、神经图灵机和记忆网络被用于通常需要推理和符号操作的任务以外,还可以教神经图灵机「算法」。除此以外,他们可以从未排序的输入符号序列(其中每个符号都有与其在列表中对应的表明优先级的真实值)中,学习输出一个排序的符号序列。可以训练记忆网络用来追踪一个设定与文字冒险游戏和故事的世界的状态,回答一些需要复杂推理的问题。在一个测试例子中,网络能够正确回答15句版的《指环王》中诸如「Frodo现在在哪?」的问题。


图5 |一个递归神经网络在时间中展开的计算和涉及的相关计算。人工神经元(例如,隐式样单元分组节点在时间t的标准值下)获得其他神经元的输入——在之前的步骤中(黑色区域呈现,代表一步延迟,如左)。这样,一个递归神经网络可由xt的输入序列元素,映射到一个输出序列与元素ot,每次ot值取决于所有前面的xtʹ(tʹ≤t)。相同的参数(U,V矩阵W)在每步中使用。许多其他结构是可行的,包括一个变体的网络可以生成的输出序列(例如,词语),每一个都作为下次的输入步骤。反向传播算法(图1)可以直接应用于计算机图形展开网络,并对所有的标准陈述和参数,计算其总误差的导数(例如,生成正确的输出序列的对数概率)。

深度学习的未来

无监督学习促进了人们重燃对深度学习的兴趣,但是,有监督学习的成功盖过了无监督学习。虽然我们没有关注这方面的评论,但是,从长远来看,我们还是期望无监督学习能够变得更加重要。(因为)人类和动物的学习方式大多为无监督学习:我们通过观察世界来发现它的结果,而不是被告知每个对象的名称。

人类视觉是一个智能的、基于特定方式的利用小或大分辨率的视网膜中央窝与周围环绕区域对光线采集成像的活跃的过程。我们希望机器视觉能够在未来获得巨大进步,这些进步来自于那些端对端的训练系统,并集合卷积神经网络(ConvNets)和递归神经网络(RNNs),利用强化学习来决定走向。结合了深度学习和强化学习的系统尚处在婴儿期,但是,在分类任务上,它们已经超越了被动视觉系统,并在尝试学习操作视频游戏方面,产生了令人印象深刻的结果。

未来几年,理解自然语言会是深度学习产生巨大影响的另一个领域。我们预测,当它们学习了某时刻选择性地加入某部分的策略,那些使用递归神经网络(RNNs)的系统将会更好地理解句子或整个文档。

最终,人工智能的重大进步将来自将表征学习与复杂推理结合起来的系统。尽管深度学习和简单推理已经用于语音和手写识别很长一段时间了,我们仍需要通过大量向量操作的新范式替换基于规则的字符表达操作。

分类: AI-BI-ML-DL-NLP 标签:

深度学习,神经网络为人工智能展示了新希望

2014年10月4日 没有评论

本文转载自:《程序员》

作者余凯,百度技术副总监,千人计划国家特聘专家。贾磊,百度主任架构师,语音技术负责人。陈雨强,百度商务搜索部资深研发工程师,负责搜索广告CTR预估。

摘要:深度学习带来了机器学习的新浪潮,推动“大数据+深度模型”时代的来临,以及人工智能和人机交互大踏步前进。如果我们能在理论、建模和工程方面突破深度学习面临的一系列难题,人工智能的梦想不再遥远。

2012年6月,《纽约时报》披露了Google Brain项目,吸引了公众的广泛关注。这个项目是由著名的斯坦福大学机器学习教授Andrew Ng和在大规模计算机系统方面的世界顶尖专家Jeff Dean共同主导,用16000个CPU Core的并行计算平台训练一种称

为“深层神经网络”(DNN,Deep Neural Networks)的机器学习模型,在语音识别和图像识别等领域获得了巨大的成功。2012年11月,微软在中国天津的一次活动上公开演示了一个全自动的同声传译系统,讲演者用英文演讲,后台的计算机一气呵成自动完成语音识别、英中机器翻译,以及中文语音合成,效果非常流畅。据报道,后面支撑的关键技术也是DNN,或者深度学习(DL,Deep Learning)。

2013年1月,在百度的年会上,创始人兼CEO李彦宏高调宣布要成立百度研究院,其中第一个重点方向就是深度学习,并为此而成立Institute of Deep Learning(IDL)。这是百度成立十多年以来第一次成立研究院。2013年4月,《麻省理工学院技术评论》杂志将深度学习列为2013年十大突破性技术(Breakthrough Technology)之首。

读者一定非常好奇,什么是深度学习?为什么深度学习受到学术界和工业界如此广泛的重视?深度学习技术研发面临什么样的科学和工程问题?深度学习带来的科技进步将怎样改变人们的生活?

机器学习的两次浪潮:从浅层学习到深度学习

在解释深度学习之前,我们需要了解什么是机器学习。机器学习是人工智能的一个分支,而在很多时候,几乎成为人工智能的代名词。简单来说,机器学习就是通过算法,使得机器能从大量历史数据中学习规律,从而对新的样本做智能识别或对未来做预测。从1980年代末期以来,机器学习的发展大致经历了两次浪潮:浅层学习(Shallow Learning)和深度学习(Deep Learning)。需要指出是,机器学习历史阶段的划分是一个仁者见仁,智者见智的事情,从不同的维度来看会得到不同的结论。这里我们是从机器学习模型的层次结构来看的。

第一次浪潮:浅层学习

1980年代末期,用于人工神经网络的反向传播算法(也叫Back Propagation算法或者BP算法)的发明,给机器学习带来了希望,掀起了基于统计模型的机器学习热潮。这个热潮一直持续到今天。人们发现,利用BP算法可以让一个人工神经网络模型从大量训练样本中学习出统计规律,从而对未知事件做预测。这种基于统计的机器学习方法比起过去基于人工规则的系统,在很多方面显示出优越性。这个时候的人工神经网络,虽然也被称作多层感知机(Multi-layer Perceptron),但实际上是一种只含有一层隐层节点的浅层模型。

90年代,各种各样的浅层机器学习模型相继被提出,比如支撑向量机(SVM,Support Vector Machines)、Boosting、最大熵方法(例如LR, Logistic Regression)等。这些模型的结构基本上可以看成带有一层隐层节点(如SVM、Boosting),或没有隐层节点(如LR)。这些模型在无论是理论分析还是应用都获得了巨大的成功。相比较之下,由于理论分析的难度,加上训练方法需要很多经验和技巧,所以这个时期浅层人工神经网络反而相对较为沉寂。

2000年以来互联网的高速发展,对大数据的智能化分析和预测提出了巨大需求,浅层学习模型在互联网应用上获得了巨大成功。最成功的应用包括搜索广告系统(比如Google的AdWords、百度的凤巢系统)的广告点击率CTR预估、网页搜索排序(例如Yahoo!和微软的搜索引擎)、垃圾邮件过滤系统、基于内容的推荐系统等。

第二次浪潮:深度学习

2006年,加拿大多伦多大学教授、机器学习领域泰斗——Geoffrey Hinton和他的学生Ruslan Salakhutdinov在顶尖学术刊物《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。这篇文章有两个主要的信息:1. 很多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2. 深度神经网络在训练上的难度,可以通过“逐层初始化”(Layer-wise Pre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。

自2006年以来,深度学习在学术界持续升温。斯坦福大学、纽约大学、加拿大蒙特利尔大学等成为研究深度学习的重镇。2010年,美国国防部DARPA计划首次资助深度学习项目,参与方有斯坦福大学、纽约大学和NEC美国研究院。支持深度学习的一个重要依据,就是脑神经系统的确具有丰富的层次结构。一个最著名的例子就是Hubel-Wiesel模型,由于揭示了视觉神经的机理而曾获得诺贝尔医学与生理学奖。除了仿生学的角度,目前深度学习的理论研究还基本处于起步阶段,但在应用领域已显现出巨大能量。2011年以来,微软研究院和Google的语音识别研究人员先后采用DNN技术降低语音识别错误率20%~30%,是语音识别领域十多年来最大的突破性进展。2012年,DNN技术在图像识别领域取得惊人的效果,在ImageNet评测上将错误率从26%降低到15%。在这一年,DNN还被应用于制药公司的Druge Activity预测问题,并获得世界最好成绩,这一重要成果被《纽约时报》报道。

正如文章开头所描述的,今天Google、微软、百度等知名的拥有大数据的高科技公司争相投入资源,占领深度学习的技术制高点,正是因为它们都看到了在大数据时代,更加复杂且更加强大的深度模型能深刻揭示海量数据里所承载的复杂而丰富的信息,并对未来或未知事件做更精准的预测。

大数据与深度学习

在工业界一直有个很流行的观点:在大数据条件下,简单的机器学习模型会比复杂模型更加有效。例如,在很多的大数据应用中,最简单的线性模型得到大量使用。而最近深度学习的惊人进展,促使我们也许到了要重新思考这个观点的时候。简而言之,在大数据情况下,也许只有比较复杂的模型,或者说表达能力强的模型,才能充分发掘海量数据中蕴藏的丰富信息。运用更强大的深度模型,也许我们能从大数据中发掘出更多有价值的信息和知识。

为了理解为什么大数据需要深度模型,先举一个例子。语音识别已经是一个大数据的机器学习问题,在其声学建模部分,通常面临的是十亿到千亿级别的训练样本。在Google的一个语音识别实验中,发现训练后的DNN对训练样本和测试样本的预测误差基本相当。这是非常违反常识的,因为通常模型在训练样本上的预测误差会显著小于测试样本。因此,只有一个解释,就是由于大数据里含有丰富的信息维度,即便是DNN这样的高容量复杂模型也是处于欠拟合的状态,更不必说传统的GMM声学模型了。所以从这个例子中我们看出,大数据需要深度学习。

浅层模型有一个重要特点,就是假设靠人工经验来抽取样本的特征,而强调模型主要是负责分类或预测。在模型的运用不出差错的前提下(如假设互联网公司聘请的是机器学习的专家),特征的好坏就成为整个系统性能的瓶颈。因此,通常一个开发团队中更多的人力是投入到发掘更好的特征上去的。要发现一个好的特征,就要求开发人员对待解决的问题要有很深入的理解。而达到这个程度,往往需要反复地摸索,甚至是数年磨一剑。因此,人工设计样本特征,不是一个可扩展的途径。
深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。所以“深度模型”是手段,“特征学习”是目的。区别于传统的浅层学习,深度学习的不同在于:1. 强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;2. 明确突出了特征学习的重要性,也就是说,同过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,使分类或预测更加容易。

与人工规则构造特征的方法相比,利用大数据来学习特征,更能刻画数据丰富的内在信息。所以,在未来的几年里,我们将看到越来越多的例子:深度模型应用于大数据,而不是浅层的线性模型。

深度学习的应用

语音识别

语音识别系统长期以来,在描述每个建模单元的统计概率模型时,大多采用的是混合高斯模型(GMM)。这种模型由于估计简单,适合海量数据训练,同时有成熟的区分度训练技术支持,长期以来,一直在语音识别应用中占有垄断性地位。但这种混合高斯模型本质上是一种浅层网络建模,不能充分描述特征的状态空间分布。另外,GMM建模的特征维数一般是几十维,不能充分描述特征之间的相关性。最后,GMM建模本质上是一种似然概率建模,虽然区分度训练能够模拟一些模式类之间的区分性,但能力有限。

微软研究院语音识别专家邓立和俞栋从2009年开始和深度学习专家Geoffery Hinton合作。2011年微软宣布基于深度神经网络的识别系统取得成果并推出产品,彻底改变了语音识别原有的技术框架。采用深度神经网络后,可以充分描述特征之间的相关性,可以把连续多帧的语音特征并在一起,构成一个高维特征。最终的深度神经网络可以采用高维特征训练来模拟。由于深度神经网络采用模拟人脑的多层结果,可以逐级地进行信息特征抽取,最终形成适合模式分类的较理想特征。这种多层结构和人脑处理语音图像信息时,是有很大的相似性的。深度神经网络的建模技术,在实际线上服务时,能够无缝地和传统的语音识别技术相结合,在不引起任何系统额外耗费情况下,大幅度提升了语音识别系统的识别率。其在线的使用方法具体如下:在实际解码过程中,声学模型仍然是采用传统的HMM模型,语音模型仍然是采用传统的统计语言模型,解码器仍然是采用传统的动态WFST解码器。但在声学模型的输出分布计算时,完全用神经网络的输出后验概率乘以一个先验概率来代替传统HMM模型中的GMM的输出似然概率。百度在实践中发现,采用DNN进行声音建模的语音识别系统相比于传统的GMM语音识别系统而言,相对误识别率能降低25%。最终在2012年11月,百度上线了第一款基于DNN的语音搜索系统,成为最早采用DNN技术进行商业语音服务的公司之一。

国际上,Google也采用了深层神经网络进行声音建模,是最早突破深层神经网络工业化应用的企业之一。但Google产品中采用的深度神经网络只有4-5层,而百度采用的深度神经网络多达9层。这种结构差异的核心其实是百度更好地解决了深度神经网络在线计算的技术难题,因此百度线上产品可以采用更复杂的网络模型。这将对于未来拓展海量语料的DNN模型训练有更大的优势。

图像识别

图像是深度学习最早尝试的应用领域。早在1989年,Yann LeCun (现纽约大学教授) 和他的同事们就发表了卷积神经网络(Convolution Neural Networks, 简称CNN)的工作。CNN是一种带有卷积结构的深度神经网络,通常至少有两个非线性可训练的卷积层,两个非线性的固定卷积层(又叫Pooling Laye)和一个全连接层,一共至少5个隐含层。CNN的结构受到著名的Hubel-Wiesel生物视觉模型的启发,尤其是模拟视觉皮层V1和V2层中Simple Cell和Complex Cell的行为。在很长时间里,CNN虽然在小规模的问题上,如手写数字,取得过当时世界最好结果,但一直没有取得巨大成功。这主要原因是,CNN在大规模图像上效果不好,比如像素很多的自然图片内容理解,所以没有得到计算机视觉领域的足够重视。这个情况一直持续到2012年10月,Geoffrey Hinton和他的两个学生在著名的ImageNet问题上用更深的CNN取得世界最好结果,使得图像识别大踏步前进。在Hinton的模型里,输入就是图像的像素,没有用到任何的人工特征。

这个惊人的结果为什么在之前没有发生? 原因当然包括算法的提升,比如dropout等防止过拟合技术,但最重要的是,GPU带来的计算能力提升和更多的训练数据。百度在2012年底将深度学习技术成功应用于自然图像OCR识别和人脸识别等问题,并推出相应的桌面和移动搜索产品,2013年,深度学习模型被成功应用于一般图片的识别和理解。从百度的经验来看,深度学习应用于图像识别不但大大提升了准确性,而且避免了人工特征抽取的时间消耗,从而大大提高了在线计算效率。可以很有把握地说,从现在开始,深度学习将取代“人工特征+机器学习”的方法而逐渐成为主流图像识别方法。

自然语言处理

除了语音和图像,深度学习的另一个应用领域问题是自然语言处理(NLP)。经过几十年的发展,基于统计的模型已经成为NLP的主流,但作为统计方法之一的人工神经网络在NLP领域几乎没有受到重视。最早应用神经网络的NLP问题是语言模型。加拿大蒙特利尔大学教授Yoshua Bengio等人于2003年提出用embedding的方法将词映射到一个矢量表示空间,然后用非线性神经网络来表示N-Gram模型。世界上最早的最早的深度学习用于NLP的研究工作诞生于NEC美国研究院,其研究员Ronan Collobert和Jason Weston从2008年开始采用embedding和多层一维卷积的结构,用于POS Tagging、Chunking、Named Entity Recognition、Semantic Role Labeling等四个典型NLP问题。值得注意的是,他们将同一个模型用于不同任务,都能取得与业界最前沿相当的准确率。最近以来,斯坦福大学教授Chris Manning等人在将深度学习用于NLP的工作也值得关注。

总的来说,深度学习在NLP上取得的进展没有在语音图像上那么令人影响深刻。一个很有意思的悖论是:相比于声音和图像,语言是唯一的非自然信号,是完全由人类大脑产生和处理的符号系统,但模仿人脑结构的人工神经网络却似乎在处理自然语言上没有显现明显优势? 我们相信,深度学习在NLP方面有很大的探索空间。从2006年图像深度学习成为学术界热门课题到2012年10月Geoffery Hinton在ImageNet上的重大突破,经历了6年时间。我们需要有足够的耐心。

搜索广告CTR预估

搜索广告是搜索引擎的主要变现方式,而按点击付费(Cost Per Click,CPC)又是其中被最广泛应用的计费模式。在CPC模式下,预估的CTR(pCTR)越准确,点击率就会越高,收益就越大。通常,搜索广告的pCTR是通过机器学习模型预估得到。提高pCTR的准确性,是提升搜索公司、广告主、搜索用户三方利益的最佳途径。

传统上,Google、百度等搜索引擎公司以Logistic Regression(LR)作为预估模型。而从2012年开始,百度开始意识到模型的结构对广告CTR预估的重要性:使用扁平结构的LR严重限制了模型学习与抽象特征的能力。为了突破这样的限制,百度尝试将DNN作用于搜索广告,而这其中最大的挑战在于当前的计算能力还无法接受1011级别的原始广告特征作为输入。作为解决,在百度的DNN系统里,特征数从1011数量级被降到了103,从而能被DNN正常地学习。这套深度学习系统已于2013年5月开始服务于百度搜索广告系统,每天为数亿网民使用。

DNN在搜索广告系统中的应用还远远没有成熟,其中DNN与迁移学习的结合将可能是一个令人振奋的方向。使用DNN,未来的搜索广告将可能借助网页搜索的结果优化特征的学习与提取;亦可能通过DNN将不同的产品线联系起来,使得不同的变现产品不管数据多少,都能互相优化。我们认为未来的DNN一定会在搜索广告中起到更重要的作用。

深度学习研发面临的重大问题

理论问题

理论问题主要体现在两个方面,一个是统计学习方面的,另一个是计算方面的。我们已经知道,深度模型相比较于浅层模型有更好的对非线性函数的表示能力。具体来说,对于任意一个非线性函数,根据神经网络的Universal Approximation Theory,我们一定能找到一个浅层网络和一个深度网络来足够好地表示。但深度网络只需要少得多的参数。但可表示性不代表可学习性。我们需要了解深度学习的样本复杂度,也就是我们需要多少训练样本才能学习到足够好的深度模型。从另一方面来说,我们需要多少计算资源才能通过训练得到更好的模型?理想的计算优化方法是什么?由于深度模型都是非凸函数,这方面的理论研究极其困难。

建模问题

在推进深度学习的学习理论和计算理论的同时,我们是否可以提出新的分层模型,使其不但具有传统深度模型所具有的强大表示能力,还具有其他的好处,比如更容易做理论分析。另外,针对具体应用问题,我们如何设计一个最适合的深度模型来解决问题?我们已经看到,无论在图像深度模型,还是语言深度模型,似乎都存在深度和卷积等共同的信息处理结构。甚至对于语音声学模型,研究人员也在探索卷积深度网络。那么一个更有意思的问题是,是否存在可能建立一个通用的深度模型或深度模型的建模语言,作为统一的框架来处理语音、图像和语言?

工程问题

需要指出的是,对于互联网公司而言,如何在工程上利用大规模的并行计算平台来实现海量数据训练,是各家公司从事深度学习技术研发首先要解决的问题。传统的大数据平台如Hadoop,由于数据处理的Latency太高,显然不适合需要频繁迭代的深度学习。现有成熟的DNN训练技术大都是采用随机梯度法(SGD)方法训练的。这种方法本身不可能在多个计算机之间并行。即使是采用GPU进行传统的DNN模型进行训练,其训练时间也是非常漫长的,一般训练几千小时的声学模型所需要几个月的时间。而随着互联网服务的深入,海量数据训练越来越重要,DNN这种缓慢的训练速度必然不能满足互联网服务应用的需要。Google搭建的DistBelief,是一个采用普通服务器的深度学习并行计算平台,采用异步算法,由很多计算单元独立地更新同一个参数服务器的模型参数,实现了随机梯度下降算法的并行化,加快了模型训练速度。与Google采用普通服务器不同,百度的多GPU并行计算平台,克服了传统SGD训练的不能并行的技术难题,神经网络的训练已经可以在海量语料上并行展开。可以预期,未来随着海量数据训练的DNN技术的发展,语音图像系统的识别率还会持续提升。

深度学习带来了机器学习的一个新浪潮,受到从学术界到工业界的广泛重视,也导致了“大数据+深度模型”时代的来临。在应用方面,深度学习使得语音图像的智能识别和理解取得惊人进展,从而推动人工智能和人机交互大踏步前进。同时,pCTR这样的复杂机器学习任务也得到显著提升。如果我们能在理论、建模和工程方面,突破深度学习技术面临的一系列难题,人工智能的梦想将不再遥远。

分类: AI-BI-ML-DL-NLP 标签: