来源:《中国计算机学会通讯》 2015年第3期《专题》
作者:刘树杰 董力 张家俊等
深度学习简介
深度学习是近年来机器学习领域发展最为迅速的领域。严格来说,深度学习并不是一种全新的机器学习方法,而是基于深层神经网络 (Deep Neural Network, DNN)的学习方法的别称。这里的深层神经网络和传统的多层神经网络描述的几乎是完全相同的概念。深度学习之所以在沉寂多年之后重新得到学术界的高度关注,是因为其在一系列人工智能的重要任务中所取得的突破性成果。例如,在机器学习标志性的基准测试手写体识别任务中,深度学习可以将错误率从1.4%(SVM模型)降低到0.39%;在语音识别领域,深度学习历史性地将错误率从27.4%降低到18.5%。
现代深度学习方法最引人注目的一个特点是其具有自动特征学习的能力。有效的特征提取是各类机器学习方法共同的基础要素。给定一个学习任务,比如语音识别、人脸检测、机器翻译等,首先需要解决的是什么样的特征对任务是最有用的。发现和选择有效的特征对机器学习的性能起到至关重要的作用。特征可以是专家人工定义的,也可以是机器学习得到的。让机器自动学习特征,称为特征学习。
深度学习是特征学习的一种。和大多数简单的特征学习的方法不同,深度学习方法可以自动地学习一个特征的层次结构。在该层次结构中,高层特征通过底层特征构建,不同底层特征的不同方式的组合,可以构建不同的高层特征。如图1所示,使用深层神经网络可以从原始的像素输入学习到第一层次的特征,来描述点和线;通过使用第一层次的特征,进而学习到第二层次的特征,来描述眼睛、鼻子以及汽车的轮胎等更高层次的特征;深层神经网络还可以学习更具体的描述人脸、汽车等的特征。
从结构上说,深层神经网络就是前向多层神经网络,是由沃伦•麦卡洛克(Warren McCulloch)在1943年提出的,“深层”是相对于单层神经网络(感知机模型)而言的。如图1所示,多层神经网络有一个输入层、多于一个的隐状态层以及一个输出层(可以是一个向量)。以下一层作为输入,每一层通过一个线性或者非线性的函数获得该层的状态。
深层神经网络通常使用反向传播的方法来训练,然而由于层数较多并且随机初始化造成的训练结果不稳定等,使得深层神经网络一直没有在实际应用中推广起来。直到2006年,辛顿(Hinton)等人使用了基于受限贝尔兹曼机(restricted Bolzman machine)的逐层无监督训练的预处理方法,率先在数字图像识别上获得了突破(将错误率降低到1.4%)。随后,本希奥(Bengio)和萨拉赫丁诺夫(Salakhutdinov)提出了基于自动编码的预处理方法,也取得了比较好的效果(将错误率降低到1.2%)。
深度学习的训练框架分为逐层无监督训练的预处理和有监督的反向传播两部分。当进行无监督的预处理时,通过给定输入,从第一层隐状态开始,使用受限贝尔兹曼机或者自动编码的方法进行无监督的学习以获得该层的参数,然后固定该层,作为第二层的输入,使用同样的无监督学习方法获得第二层的参数。这种逐层学习的无监督预处理可以为下一步有监督的反向传播提供一个比较好的初始参数。
给定当前层的状态,如何使用无监督的训练方法获得下一层的状态和连接两层的参数呢?这里简单介绍基于自动编码的训练方法。如图2所示,假设当前层为一个n维的向量F(其值固定,作为输入),下一层为一个m维的向量G。首先构造一个n维的输出层F’,并随机将两层的参数初始化。给定输入F,隐含层状态G,并得到输出层的结果F’,然后使用F和F’的差异作为损失进行反向传播,进而更新两层的参数。这个构造的单隐含层的神经网络可以理解为一个对输入F进行编码,获得隐含层G,并对隐含层G进行解码,以期获得输入F的过程。如果m<n,如此训练得到的参数能够在编码损失最小的情况下,对F进行压缩降维。如果m≥n,那么我们需要在损失函数上添加正则项(L1或者L2)来进行稀疏编码或者升维。
自然语言处理中的深度学习
随着语音和图像处理领域的突破性进展,深度学习在自然语言处理领域也越来越受到重视,并逐渐应用于自然语言处理的各种任务中。然而自然语言处理任务有其自身的特点,与语音和图像处理之间的不同主要体现在以下两方面。
语音和图像在处理过程中的输入信号可以在向量空间内表示,而自然语言处理通常在词汇一级进行。将独立的词语转换为向量并作为神经网络的输入是将神经网络应用于自然语言处理的基础。
自然语言任务中通常要处理各种递归结构。语言模型、词性标注等需要对序列进行处理,而句法分析、机器翻译等则对应更加复杂的树形结构。这种结构化的处理通常需要特殊的神经网络。
词汇向量化表示
词是自然语言处理的基本单元。词汇本身通常作为统计模型的特征应用于自然语言处理的各种任务中。在传统研究方法里,词汇通常表示为one-hot的形式,即假设词表大小为V,第k个词表示为一个大小为V的向量,其中第k维为1,其他维为0。该表示方式的缺点是无法有效刻画词的语义信息,即不管两个词义相关性如何,它们的one-hot的向量表示都是正交的。这种表示方式也容易造成数据稀疏。当不同的词作为完全不同的特征应用于统计模型中时,由于不常见的词在训练数据中出现的次数比较少,导致对应特征的估计存在偏差。
科洛贝尔(Collobert)等人提出了使用神经网络的方法自动学习词汇的向量化表示,其基本原则是:一个词包含的意义应该由该词周围的词决定。如图3所示,首先将词汇表中的每一个词随机初始化为一个向量,然后用大规模的单语语料作为训练数据来优化此向量,使相似的词具有相近的向量表示。具体优化方法是,从训练数据中随机选取一个窗口大小为n的片段phr+(图3中窗口大小为4,片段为“cat sat on the mat”)作为正例。将phr+对应的词向量进行拼接作为神经网络的输入层,经过一个隐含层后得到得分f +。f +表示此片段是否为一个正常的自然语言片段。将窗口中间的词随机替换为词表中的另外一个词,得到一个负例的片段phr-,进而得到负例的打分f -。损失函数定义为排序合页损失(ranking hinge loss),该损失函数使正例的得分f +至少比负例的得分f -大1。对该损失函数进行求导得到梯度,并使用反向传播的方式来学习神经网络各层的参数,同时更新正负例样本中的词向量。这样的训练方法能够将适合出现在窗口中间位置的词聚合在一起,而将不适合出现在这个位置的词分离开来,从而将语义(语法或者词性)相似的词映射到向量空间中相近的位置。
与替换中间词的方法不同,米可洛夫(Mikolov)等人提出了一种使用周围词预测中间词的连续词袋模型(CBOW)。如图4所示,连续词包模型将相邻的词向量直接相加得到隐层,并用隐层预测中间词的概率。同词袋模型一样采用的是直接相加,所以周围词的位置并不影响预测的结果,因此也称为词袋模型。米可洛夫等人还提出了一种连续skip-gram模型。同连续词袋模型的预测方式相反,连续skip-gram模型通过中间词来预测周围词的概率。这两个模型是基于开源工具word2vec开发的。黄(Huang)等人将词语在句子中的上下文同全局上下文相结合来学习词向量表示。全局上下文是出现该词的文档中所有词向量的加权平均。此外,一些研究发现,使用神经网络方法学习到的词向量能够刻画一些有意思的线性关系,比如 king-man+woman≈queen。
由于大规模单语数据的获得相对容易,使得神经网络训练词汇的向量化表示成为可能。训练得到的词向量可以应用于自然语言处理的其他任务中,并一定程度上解决了由于特定任务的训练数据不充足而造成的数据稀疏问题。
语言模型
传统的N-Gram语言模型同样存在数据稀疏问题。为此,本希奥(Bengio)和施文克(Schwenk)提出了一个基于神经网络的语言模型[10],如图5所示。该神经网络具有与图3类似的结构,将词表示为向量的形式,作为神经网络的输入,训练的过程中会对词向量进行优化和更新。图5与图3在结构上的不同之处是增加了跨层的连接(skip layer connections),输出不仅仅依赖于隐含层,还依赖于词向量本身,输出的是给定输入词片段(在这里是cat sat)时下一个词的概率。该模型通过最后的softmax层保证了输出一个词表大小的向量,且该向量各元素大小之和为1。softmax函数的计算量非常大,导致模型的训练速度比较慢。为解决这一问题,米妮红(Minih)和辛顿首先将词进行聚类,构建层次的二叉树,并将预测下一个词的概率转化为在二叉树中路径的概率,从而将softmax的计算用多个sigmoid函数取代,加快了训练速度。
图5中的模型只能使用有限的历史来预测下一个词。为了使用更多的历史,米可洛夫等人引入了重现神经网络来训练语言模型[11]。重现神经网络是指,新生成的历史状态可以作为下一个时间点神经网络(参数不变)的输入,从而形成递归重现的结构。如图6所示,重现神经网络输入层分为两部分,一部分为当前词xt,另一部分为t-1时刻的历史ht-1。xt和ht-1通过神经网络合并生成当前的历史向量ht,ht和xt一起预测下一个词。重现神经网络通过不断地将输入词的信息添加到历史向量中,理论上可以保存无限的历史。图6显示的是使用前一个历史“the cat”和当前词“sat”生成当前历史“the cat sat”,并预测下一个词“on”。新生成的历史“the cat sat”又与新生成的词“on”一起预测下一个词“the”。
句法分析
索赫尔(Socher)等人提出了使用递归神经网络( Recursive Neural Network, RNN)实现对树型结构的预测[12] 。递归神经网络的输入层有两部分,分别是左子节点的向量表示和右子节点的向量表示。两个子节点的向量表示通过神经网络后生成父节点的向量表示,同时生成一个打分。该打分表示创建父节点的可信程度。如图7所示,左右子节点的表示分别为(8, 5)和(3, 3),经过神经网络后形成父节点的向量表示(8, 3)以及可信度打分1.3。父节点的向量表示又可以与其他子节点通过相同的递归神经网络组合形成更大的父节点。依次递归,直至生成整个句子的根节点表示,从而形成一棵完整的句法分析树。整棵树的可信度打分是所有节点可信度打分的总和。基于每个节点的向量化表示,可以添加一个softmax层来计算每个节点对应句法标记的概率。句法分析树的叶节点是句子中的词,而叶节点的向量化表示通过在大规模的单语数据上训练得到的词向量初始化,并通过递归神经网络进行更新。
为了更好地描述不同的句法结构的信息,索赫尔将标准的递归神经网络扩展为组合矢量文法[13]。标准的递归神经网络使用相同参数的神经网络组合子节点,计算父节点的可信度和句法标记的概率;而组合矢量文法则对不同的句法标记使用不同参数的神经网络。例如当两个节点(句法标记分别为B和C)组合生成一个新的父节点时,使用一个对应B和C类型的神经网络;而当D和E组合生成一个父节点时,则使用另外一个神经网络。这样,使训练得到的神经网络能更准确地描述不同句法结构的组合形式和语义信息。为了进一步提高模型的性能,索赫尔等人将组合矢量文法同概率上下文无关文法(Probabilistic Context Free Grammar, PCFG)相结合[13],当句法标记分别为B和C类型的子节点生成父节点D时,其可信度的打分为:s(D)=(v(B,C ))TD+logP(D→B C),其中,(v(B,C ))TD表示通过父节点的向量表示得到的可信度打分,logP(D→B C)表示PCFG中规则D→B C概率的对数。
机器翻译
深度神经网络同样被引入到统计机器翻译的研究中。杨(Yang)等人借鉴和扩展了语音识别中的CD-DNN-HMM模型,并应用于词汇对齐中[14]。该方法一方面通过词向量解决了对齐的数据稀疏问题,另一方面引入上下文来对翻译进行消歧。奥利(Auli)等人通过词对齐信息引入源语言的信息来扩展重现神经网络,提出了一种翻译和语言的联合模型[15]。该联合模型的打分作为特征添加到对数线性模型中,提高了翻译性能。刘(Liu)等人提出了一种累加神经网络来描述翻译概率。该方法将单语数据训练得到的词向量输入一个单隐含层的神经网络,并输出一个基于词向量的翻译概率[16]。
基于词汇的最大熵调序模型采用边界词作为特征来判断目标语言片段是顺序还是逆序。李(Li)等人提出了使用递归自动编码神经网络的方法来利用整个片段信息[17]的方法。递归自动编码神经网络在初始化递归神经网络的参数时,使用自动编码的原则来训练,即给定两个子节点,通过递归神经网络获得父节点的编码,然后基于父节点的编码,尽可能地还原输入的两个子节点。如图8所示,使用递归自动编码的神经网络可以从词向量开始递归生成源语言和目标语言片段的向量化表示,并基于两个翻译对的源语言和目标语言片段,通过神经网络获得顺序和逆序的概率。
张(Zhang)等人将递归自动编码的神经网络用于学习双语的片段向量化表示[18](如图9所示),但是分别生成的源语言和目标语言的片段向量化表示并不存在语义上的对应关系。为了得到语义上的相关性,他们使用交互优化的方式训练神经网络,即首先固定目标语言片段的向量表示;然后以该向量表示为优化目标,优化源语言的神经网络;最后固定源语言片段的向量表示,优化目标语言的神经网络。这种双语约束得到的片段表示应用于统计机器翻译的概率估计中,取得了显著的效果。
传统的递归神经网络在组合两个子节点时,并不能像重现神经网络那样引入新的信息。为了将语言模型知识引入到递归神经网络,对统计机器翻译的解码过程进行建模,刘(Liu)等人提出了递归重现神经网络(R2NN)方法,将递归神经网络和重现神经网络[19]结合在了一起。如图10所示,递归重现神经网络是在递归神经网络中引入了三个输入层,分别是两个子节点的额外输入信息和父节点的额外信息,前者用来生成父节点的向量表示,后者用来生成父节点的置信度打分。递归重现神经网络除了可以自动学习对翻译有用的特征外,还可以自然地将传统的特征以额外信息的形式添加到神经网络模型中。
崔(Cui)等人将深度神经网络学习到的主题表达用于统计机器翻译消歧[20]。传统方法通常使用句子内部的信息来对翻译进行消歧,而崔等人的方法则是通过信息检索技术获取与要翻译的句子相关的文档,这些文档使用深度神经网络方法学习得到句子的主题表达,进而利用翻译候选的主题表达与句子主题表达的一致性来对翻译候选进行消歧。
情感分析
尝试理解人类情感一直是人工智能的目标。目前深度学习在此问题上主要用于给定一段文本来判断其情感类别及强度。为了更好地处理情感分析问题中语义合成的问题(如“不是很喜欢”与“喜欢”的情感极性相反),一些研究工作利用自然语言的递归性质与语义的可合成性,使用递归神经网络对句子的情感语义进行建模。索赫尔等人在递归自动编码模型的基础上,除了使用重构损失外,还加入了情感类别的监督信息[21]。这样,这个半监督递归自动编码模型在由词向量构建短语向量表示时,就可以更多地保留情感信息。句法分析树用来决定语义合成的顺序,以此替代递归自动编码模型中通过贪心搜索损失最小的递归结构。为了更好地处理情感分析的语义合成,索赫尔等人提出了矩阵-向量递归神经网络(Matrix-Vector Recurrent Neural Network, MV-RNN)。如图11所示,每个单词除了有一个向量外,还有一个矩阵来表示某种语义操作。在进行语义合成时,首先用两个语义操作矩阵分别对另一半进行操作,然后进行语义合成,得到短语的向量表示。为了刻画两个向量之间的相互作用,索赫尔等人进一步提出了递归张量神经网络[22]。与普通神经网络的不同,递归张量神经网络使用基于张量的合成函数来取代原有的线性函数,以此扩展语义合成函数的能力范围。同样为了解决语义合成问题,董(Dong)等人提出自适应递归神经网络(AdaRNN)。在构建短语向量表示时,自适应递归神经网络根据当前合成向量自适应地使用多个语义合成函数[23]。这样可将每个词的情感语义操作信息嵌入到词向量中,进而用来选择不同的语义合成函数。通过结合依存关系树信息,董等人将自适应递归神经网络用于解决目标依赖的情感分类任务[24]。
Kalchbrenner等人在卷积神经网络中引入动态k-max池化(dynamic k-max pooling)技术来处理自然语言变长的特性,在情感分类任务上取得了不错的效果[25]。Quoc等人在神经网络语言模型中引入段落向量来表示全局语义信息,从而得出段落(或句子)的向量表示。通过结合情感类别的监督信息,在句子级与文档级的情感分类任务上得到了提高[26]。
为了学习含有情感信息的词向量,拉布托夫(Labutov)等人在现有词向量的基础上加入了情感分类监督信息,使新修改的词向量尽可能与原有向量相像,同时又能在分类任务上表现得更好。实验结果表明,根据情感分析任务修改过的词向量能够获得更好的分类效果[27]。唐(Tang)等人将推特中的表情符作为弱标注,在学习词向量时直接将情感信息嵌入到向量表示中[28],而不是修改无监督学习得来的词向量。他们将此思路扩展后,将词(或短语)向量作为词语的特征,用来自动构建大规模的情感词典[29]。
其他自然语言处理任务
科洛贝尔等人基于深度神经网络提出了一个统一的多任务框架来处理自然语言处理中的词性标注、浅层句法分析、命名实体识别和语义角色标注,并发布了基于这个框架的开源工具SENNA 。索赫尔等人使用动态池化(dynamic pooling)技术解决了两个句子长度不一致的问题,并成功将递归自动编码神经网络应用于复述检测任务中[30]。陆(Lu)等人将深度神经网络同层次主题模型相结合,解决了复杂的多层次匹配问题,并将其成功应用于自动问答和微博评注的匹配中[31]。何(He)等人使用去噪自动编码的神经网络来学习文档表示,并将其应用于实体链接的任务中,取得了不错的效果[32]。博兹(Bordes)等人将深度神经网络应用于语义消歧,显著地提高了性能[33]。吴(Wu)等人提出了使用基于文本窗口的去噪自动编码神经网络来做中文分词,显著降低了错误率[34]。
展望
尽管深度学习已经在语音和图像处理中取得重大进展,然而语言与语音、图像不同,是特殊的人工符号系统,将深度学习应用于自然语言处理需要进行更多的研究和探索:针对特殊任务的词汇表达的学习以及词汇之间关系的探索越来越受到重视;处理自然语言的结构化输出需要更为复杂的神经网络;复杂神经网络又对高效和并行化的训练算法提出了新的要求。我们相信,随着可用的训练数据越来越多,计算能力会越来越强,在自然语言处理领域,深度学习也会更有用武之地。
图:
作者简介
刘树杰
微软亚洲研究院副研究员。主要研究方向为统计机器翻译、自然语言处理、机器学习。
董力
北京航空航天大学研究生。主要研究方向为情感分析、自然语言处理、人工智能。
张家俊
CCF会员。中科院自动化所副研究员。主要研究方向为自然语言处理、机器翻译、统计学习等。
其他作者:韦福如 李沐 周明
参考文献
Marc’AurelioRanzato, Christopher Poultney, Sumit Chopra, and et al.. Efficient learning of sparse representations with an energy-based model. In J. Plattet al., editor, In Proceedings of NIPS, MIT Press, 2006.
Seide, Frank, Gang Li, and Dong Yu. Conversational speech transcription using context-dependent deep neural networks. Proceedings of Interspeech, 2011:437~440.
McCulloch, Warren S., and Walter Pitts. A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics 1943: 115~133.
Hinton, G. E., Osindero, and et al... A fast learning algorithm for deep belief nets. Neural Computation, 2006; 18: 1527~1554.
Hinton, G. E. and Salakhutdinov, R.. Reducing the dimensionality of data with neural networks. Science, 2006; 313(5786):504~507.
RonanCollobert, Jason Weston, Léon Bottou, and et al.. Natural language processing (almost) from scratch. J. Mach. Learn. Res. 2011:2493~2537.
Mikolov, Tomas, Kai Chen, and et al.. Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781, 2013.
Huang, Eric H., Richard Socher, and et al.. Improving word representations via global context and multiple word prototypes. Proceedings of the 50th Annual Meeting of the Association for Computational Linguistics: Long Papers-Volume 1. Proceedings of ACL, 2012:873~882.
Mikolov, Tomas, Wen-tau Yih, and et al.. Linguistic regularities in continuous space word representations. Proceedings of NAACL-HLT, 2013:746~751.
[10] Bengio, Yoshua, HolgerSchwenk, and et al.. Neural probabilistic language models. Innovations in Machine Learning. Springer Berlin Heidelberg, 2006:137~186.
[11] Mikolov, T., Karafiát, M., Burget, et al.. Recurrent neural network based language model. Proceedings of INTERSPEECH, 2010:1045~1048.
[12] Socher, R., Lin, C. C., Manning, C., & Ng, A. Y.. Parsing natural scenes and natural language with recursive neural networks. Proceedings of ICML, 2011:129~136.
[13] Socher, R., Bauer, J., Manning, C. D., & Ng, A. Y. Parsing with compositional vector grammars. Proceedings of ACL, 2013.
[14] Yang Nan, Liu Shujie, Li Mu, and et al.. Word alignment modeling with context dependent deep neural network. Proceedings of ACL, 2013.
[15] Auli, Michael, Michel Galley, and et al..Joint language and translation modeling with recurrent neural networks. Proceedings of EMNLP, 2013.
[16] Liu, Lemao, Taro Watanabe, EiichiroSumita, and et al.. Additive neural networks for statistical machine translation. Proceedings of ACL, 2013.
[17] Peng Li, Yang Liu, and Maosong Sun. Recursive autoencoders for ITG-based translation. Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing, 2013:567~577.
[18] Jiajun Zhang, Shujie Liu, Mu Li, and et al.. Bilingually-constrained phrase embeddings for machine translation. Proceedings of ACL, 2014.
[19] Shujie Liu, Nan Yang, Mu Li and et al.. A recursive recurrent neural network for statistical machine translation. Proceedings of ACL, 2014.
[20] Lei Cui, Dongdong Zhang, Shujie Liu, and et al.. Learning topic representation for SMT with neural networks. Proceedings of ACL, 2014.
[21] Socher, Richard, Jeffrey Pennington, and et al.. Semi-supervised recursive autoencoders for predicting sentiment distributions. Proceedings of EMNLP, 2011:151-161.
[22] Socher, Richard, Alex Perelygin, and et al.. Recursive deep models for semantic compositionality over a sentiment treebank. Proceedings of EMNLP, 2013:1631~1642.
[23] Li Dong, Furu Wei, Ming Zhou and et al.. Adaptive multi-compositionality for recursive neural models with applications to sentiment analysis. Proceedings of AAAI, 2014.
[24] Li Dong, Furu Wei, Chuanqi Tan, and et al.. Adaptive recursive neural network for target-dependent Twitter sentiment classification. Proceedings of ACL, 2014.
[25] NalKalchbrenner, Edward Grefenstette and Phil Blunsom. A convolutional neural network for modelling sentences. Proceedings of ACL, 2014.
[26] Quoc Le and Tomas Mikolov. Distributed representations of sentences and documents. Proceedings of ICML, 2014.
[27] IgorLabutov and Hod Lipson. Re-embedding Words. Proceedings of ACL, 2013.
[28] Duyu Tang, Furu Wei, Nan Yang, and et al.. Learning sentiment-specific word embedding for Twitter sentiment classification. Proceedings of ACL, 2014.
[29] Duyu Tang, Furu Wei, Bing Qin, and et al.. Building large-scale Twitter-specific sentiment lexicon: a representation learning approach. Proceedings of COLING, 2014.
[30] Socher, Richard, Eric H. Huang, and et al.. Dynamic pooling and unfolding recursive autoencoders for paraphrase detection. Proceedings of NIPS, 2011; 24 801~809.
[31] Lu, Zhengdong, and Hang Li. A deep architecture for matching short texts. Proceedings of NIPS, 2013:1367~1375.
[32] Zhengyan He, Shujie Liu, Mu Li and et al.. Learning entity representation for entity disambiguation. Proceedings of ACL, 2013.
[33] Bordes, Antoine, Xavier Glorot, and et al.. Joint learning of words and meaning representations for open-text semantic parsing. International Conference on Artificial Intelligence and Statistics, 2012:127~135.
[34] Ke Wu, Zhiqiang Gao, Cheng Peng, and et al.. Text window denoisingautoencoder: building deep architecture for chinese word segmentation. Proceedings of NLP-CC, 2013.