TensorFlow与自然语言处理应用
上QQ阅读APP看书,第一时间看更新

1.5 第三阶段:深度学习阶段

虽然在第二阶段开发的NLP系统,包括语音识别、语言理解和机器翻译,比第一阶段开发系统的表现更好,具有更高的鲁棒性,但它们远未达到人类级别的水平,还有很多地方需要改进。除了少数例外,NLP的(浅)机器学习模型通常没有足够大的容量来吸收大量的训练数据。此外,涉及的这些学习算法、方法和基础结构不够强大。所有这一切都在几年前发生了很大变化,由于深层结构化机器学习或深层学习的新范式推动(Bengio,2009;Deng和Yu,2014;LeCun等,2015;Goodfellow等,2016),引发了NLP的第三波浪潮。

在传统的机器学习中,由于特征是由人设计的,需要大量的人类专业知识,显然特征工程也存在一些瓶颈。同时,相关的浅层模型缺乏表示能力,因此缺乏形成可分解抽象级别的能力,这些抽象级别在形成观察到的语言数据时将自动分离复杂的因素。深度学习的进步是当前NLP和人工智能拐点背后的主要推动力,并且直接推动了神经网络的复兴,包括商业领域的广泛应用(Parloff,2016)。

进一步讲,尽管在第二次浪潮期间开发的许多重要的NLP任务中,判别模型(浅层)取得了成功,但它们仍然难以通过行业专家人工设计特征来涵盖语言中的所有规则。除了不完整性问题之外,这种浅层模型还面临稀疏性问题,因为特征通常仅在训练数据中出现一次,特别是对于高度稀疏的高阶特征。因此,在深度学习出现之前,特征设计已经成为统计NLP的主要障碍之一。深度学习为解决我们的特征工程问题带来了希望,其观点被称为“从头开始NLP”(Collobert等,2011),这在深度学习早期被认为是非同寻常的。这种深度学习方法利用了包含多个隐藏层的强大神经网络来解决一般的机器学习任务,而无须特征工程。与浅层神经网络和相关的机器学习模型不同,深层神经网络能够利用多层非线性处理单元的级联来从数据中学习表示以进行特征提取。由于较高级别的特征源自于较低级别的特征,因此这些级别构成了概念上的层次结构。

深度学习起源于人工神经网络,可以将其视为受生物神经系统启发的细胞类型的级联模型。随着反向传播算法的出现(Rumelhart等,1986),从零开始训练深度神经网络在20世纪90年代受到了广泛的关注。其实在早期,由于没有大量的训练数据,也没有适当的设计模式和学习方法,在神经网络训练期间,学习信号在层与层之间传播时会随着层数呈指数级消失,难以调整深度神经网络的连接权重值,尤其是循环模式。Hinton等人最初克服了这个问题(Hinton等,2006),使用无监督的预训练,首先学习通常有用的特征检测器,然后通过监督学习进一步训练网络,进而对标记数据进行分类。因此,可以使用低级表示来学习高级表示的分布。这项开创性的工作标志着神经网络的复兴。此后各种网络架构被提出并开发出来,包括深度信念网络(deep belief networks)(Hinton等,2006)、栈式自动编码器(stacked auto-encoders)(Vincent等,2010)、深度玻尔兹曼机(deep Boltzmann machines)(Hinton和Salakhutdinov,2012)、深度卷积神经网络(Krizhevsky等,2012)、深度堆叠网络(deep stacking networks)(Deng等,2012)以及深度Q网络(Mnih等,2015)。2010年以来,深度学习能够发现高维数据中复杂的结构,已成功应用于人工智能的各种实际任务中,尤其是语音识别(Yu等,2010;Hinton等,2012)、图像分类(Krizhevsky等,2012;He等,2016)和NLP。

语音识别是NLP的核心任务之一,且它在工业NLP实际应用中受到深度学习很大的影响,所以我们这里对此进行一些解读。深度学习在大规模语音识别中的工业应用在2010年左右开始起飞。相关工作是由学术界和产业界合作发起的,最初的成果是在2009年NIPS语音识别和相关应用的深度学习研讨会上发布的。这次研讨会的目的是语音深层生成模型的局限性,以及大计算、大数据时代需要对深层神经网络进行认真研究的可能性。当时认为,使用基于对比散度学习算法(Contrastive Divergence Learning Algorithm)的深度信念网络生成模型进行DNNs预处理,可以克服20世纪90年代神经网络遇到的主要困难(Dahl等,2011;Mohamed等,2009)。然而,在微软早期关于这项的研究中,人们发现,没有对比散度预训练,而是使用大量的训练数据,连同深层神经网络,这些深层神经网络设计成具有相应的大型、上下文相关的输出层,并且经过精心的工程设计,可以获得比当时最先进的(浅)机器学习系统显著更低的识别误差(Yu等,2010,2011;Dahl等,2012)。北美的其他几个主要语音识别研究小组(Hinton等,2012年;Deng等,2013年)以及随后一些海外研究小组很快就证实了这一发现。此外,还发现这两种类型系统产生的识别错误的本质是不同的,这为如何将深度学习集成到现有的由主要参与者在语音识别中部署的高效运行的语音解码系统提供了技术支持(Yu和Deng,2015;Abdel-Hamid等,2014;Xiong等,2016;Saon等,2017)。如今,应用于各种形式的深层神经网络的反向传播算法被统一应用于所有当前最先进的语音识别系统(Yu和Deng,2015;Amodei等,2016;Saon等,2017),以及所有主要的商业语音识别系统——微软Cortana、Xbox、Skype翻译、亚马逊Alexa、谷歌助理、苹果Siri、百度小度和iFlyTek语音搜索等——都基于深度学习方法。

2010年、2011年语音识别的惊人成功预示着第三波NLP和人工智能的到来。随着深度学习在语音识别领域的成功,计算机视觉(Krizhevsky等,2012)和机器翻译(Bahdanau等,2015)也很快被类似的深度学习范式所取代。特别是,虽然早在2001年就开发了强大的词汇神经词嵌入技术(Bengio等,2001,Bengio等人在2001年发表在NIPS上的文章《A Neural Probabilistic Language Model》,现在多数看到的是他们在2003年投到JMLR上的同名论文),但直到十多年后,由于大数据的可用性和计算机更快的计算能力,它才被证明在实际大规模场景下具有真正的价值(Mikolov等,2013)。此外,还有大量的其他NLP应用,如图像字幕(Karpathy和Fei-Fei,2015;Fang等,2015;Gan等人,2017)、视觉问答(Fei-Fei和Perona,2016)、语音理解(Mesnil等,2013)、网络搜索(Huang等,2013)和推荐系统;由于深度学习的广泛应用,也有许多非NLP任务,像药物发现和毒理学、客户关系管理、手势识别、医学信息学、广告、医学图像分析、机器人、无人驾驶车辆和电子竞技游戏(例如,雅达利Atari、Go、扑克和最新的DOTA2)等。

在基于文本的NLP应用领域,机器翻译可能受到深度学习的影响最大。当前,在实际应用中表现最佳的机器翻译系统是基于深度神经网络的模式,例如,谷歌于2016年9月宣布开发第一阶段的神经网络机器翻译,而微软在2个月后发表了类似的声明。Facebook已经致力于神经网络机器翻译一年左右,到2017年8月,它正在全面部署。最近,谷歌发布了机器翻译领域最强的BERT的多语言模型。BERT的全称是Bidirectional Encoder Representations from Transformers,是一种预训练语言表示的最新方法。

BERT在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩:两个衡量指标上全面超越人类,而且在11种不同NLP测试中同样给出了最好的成绩,其中包括将GLUE基准推至80.4%(绝对改进率7.6%),MultiNLI准确度达到86.7%(绝对改进率5.6%)等。对于机器翻译的解读,本书也会在第11章进行深入探讨。

在将深度学习应用于NLP问题的过程中,近年来出现的两个重要技术突破是序列到序列学习(Sutskevar等,2014)和注意力建模(Bahdanau等,2015)。序列到序列学习引入了一个强大的思想,即利用循环网络以端到端的方式进行编码和解码。虽然注意力建模最初是为了解决对长序列进行编码的困难,但随后的发展显然扩展了它的功能,能够对任意两个序列进行高度灵活的排列,且可以与神经网络参数一起进行学习。与基于统计学习和单词\短语的局部表示的最佳系统相比,序列到序列学习和注意力机制的关键思想提高了基于分布式嵌入的神经网络机器翻译的性能。在这一成功之后不久,这些概念也被成功地应用到其他一些与NLP相关的任务中,例如图像字幕生成(Karpathy和Fei-Fei,2015;Devlin等,2015)、语音识别(Chorowski等,2015)、句法解析、文本理解、问答系统等。

其实,基于神经网络的深度学习模型通常比早期开发的传统机器学习模型更易于设计。在许多应用中,以端到端的方式同时对模型的所有部分执行深度学习,从特征提取一直到预测。促成神经网络模型简化的另一个因素是相同模型构建的模块(例如不同类型的层)通常也可以适用于许多不同的任务。另外,还开发了软件工具包,以便更快更有效地实现这些模型。基于这些原因,深度神经网络现在是大型数据集(包括NLP任务)上的各种机器学习和人工智能任务的主要选择方法。

尽管深度学习已经被证明能够以革命性的方式对语音、图像和视频进行重塑处理,并且在许多实际的NLP任务中取得了经验上的成功,在将深度学习与基于文本的NLP进行交叉时,但其效果却不那么明显。在语音、图像和视频处理中,深度学习通过直接从原始感知数据中学习高级别概念,有效地解决了语义鸿沟问题。然而,在NLP中,研究人员在形态学、句法和语义学上提出了更强大的理论和结构化模型,提炼出了理解和生成自然语言的基本机制,但这些机制与神经网络并不容易兼容。与语音、图像和视频信号相比,从文本数据中学习到的神经表征似乎不能同样直接洞察自然语言。因此,将神经网络特别是具有复杂层次结构的神经网络应用于NLP,近年来得到了越来越多的关注,也已经成为NLP和深度学习社区中最活跃的领域,并取得了显著的进步(Deng,2016;Manning和Socher,2017)。