Deep Learning in NLP 词向量与语言模型

上传人:woxinch****an2018 文档编号:39308554 上传时间:2018-05-14 格式:DOCX 页数:17 大小:85.59KB
返回 下载 相关 举报
Deep Learning in NLP 词向量与语言模型_第1页
第1页 / 共17页
Deep Learning in NLP 词向量与语言模型_第2页
第2页 / 共17页
Deep Learning in NLP 词向量与语言模型_第3页
第3页 / 共17页
Deep Learning in NLP 词向量与语言模型_第4页
第4页 / 共17页
Deep Learning in NLP 词向量与语言模型_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《Deep Learning in NLP 词向量与语言模型》由会员分享,可在线阅读,更多相关《Deep Learning in NLP 词向量与语言模型(17页珍藏版)》请在金锄头文库上搜索。

1、DeepDeep LearningLearning inin NLPNLP (一)词向量和(一)词向量和 语言模型语言模型Posted on 2013 年 7 月 29 日 http:/ Deep Learning 在 NLP 领域中应用 的理解和总结,在此分享。其中必然有局限性,欢迎各种交流,随便拍。Deep Learning 算法已经在图像和音频领域取得了惊人的成果,但是在 NLP 领域中尚未见到如此激动人心的结果。关于这个原因,引一条我比较赞同的微博。王威廉:Steve Renals 算了一下 icassp 录取文章题目中包含 deep learning 的 数量,发现有 44 篇,而

2、naacl 则有 0 篇。有一种说法是,语言(词、句子、篇章 等)属于人类认知过程中产生的高层认知抽象实体,而语 音和图像属于较为底层 的原始输入信号,所以后两者更适合做 deep learning 来学习特征。 2013 年 3 月 4 日 14:46第一句就先不用管了,毕竟今年的 ACL 已经被灌了好多 Deep Learning 的论 文了。第二句我很认同,不过我也有信心以后一定有人能挖掘出语言这种高层次抽 象中的本质。不论最后这种方法是不是 Deep Learning,就目前而言,Deep Learning 在 NLP 领域中的研究已经将高深莫测的人类语言撕开了一层神秘的面纱。我觉得其

3、中最有趣也是最基本的,就是“词向量”了。将词用“词向量”的方式表示可谓是将 Deep Learning 算法引入 NLP 领域的 一个核心技术。大多数宣称用了 Deep Learning 的论文,其中往往也用了词向量。本文目录: 0. 词向量是什么 1. 词向量的来历 2. 词向量的训练2.0 语言模型简介2.1 Bengio 的经典之作2.2 C&W 的 SENNA2.3 M&H 的 HLBL2.4 Mikolov 的 RNNLM2.5 Huang 的语义强化2.999 总结 3. 词向量的评价3.1 提升现有系统3.2 语言学评价 参考文献 0.0. 词向量是什么词向量是什么自然语言理解的

4、问题要转化为机器学习的问题,第一步肯定是要找一种方法把 这些符号数学化。NLP 中最直观,也是到目前为止最常用的词表示方法是 One-hot Representation,这种方法把每个词表示为一个很长的向量。这个向量的维度是词 表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个维度就代表了当前 的词。举个栗子,“话筒”表示为 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 .“麦克”表示为 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 .每个词都是茫茫 0 海中的一个 1。这种 One-hot Representation 如果采用稀疏方式

5、存储,会是非常的简洁:也 就是给每个词分配一个数字 ID。比如刚才的例子中,话筒记为 3,麦克记为 8(假设从 0 开始记)。如果要编程实现的话,用 Hash 表给每个词分配一个编号 就可以了。这么简洁的表示方法配合上最大熵、SVM、CRF 等等算法已经很好地完 成了 NLP 领域的各种主流任务。当然这种表示方法也存在一个重要的问题就是“词汇鸿沟”现象:任意两个词 之间都是孤立的。光从这两个向量中看不出两个词是否有关系,哪怕是话筒和麦克 这样的同义词也不能幸免于难。Deep Learning 中一般用到的词向量并不是刚才提到的用 One-hot Representation 表示的那种很长很长

6、的词向量,而是用 DistributedDistributed RepresentationRepresentation(不 知道这个应该怎么翻译,因为还存在一种叫 “Distributional Representation”的表示方法,又是另一个不同的概念)表示 的一种低维实数向量。这种向量一般长成这个样子:0.792, 0.177, 0.107, 0.109, 0.542, .。维度以 50 维和 100 维比较常见。这种向量的表示不是唯 一的,后文会提到目前计算出这种向量的主流方法。(个人认为)Distributed representation 最大的贡献就是让相关或者相似 的词,在

7、距离上更接近了。向量的距离可以用最传统的欧氏距离来衡量,也可以用 cos 夹角来衡量。用这种方式表示的向量,“麦克”和“话筒”的距离会远远小于 “麦克”和“天气”。可能理想情况下“麦克”和“话筒”的表示应该是完全一样的, 但是由于有些人会把英文名“迈克”也写成“麦克”,导致“麦克”一词带 上了一些人名的语义,因此不会和“话筒”完全一致。1.1. 词向量的来历词向量的来历Distributed representation 最早是 Hinton 在 1986 年的论文Learning distributed representations of concepts中提出的。虽然这篇文章没有说要 将

8、词做 Distributed representation,(甚至我很无厘头地猜想那篇文章是为了 给他刚提出的 BP 网络打广告,)但至少这种先进的思想在那个时候就在人们的心 中埋下了火种,到 2000 年之后开始逐渐被人重视。Distributed representation 用来表示词,通常被称为“Word Representation”或“Word Embedding”,中文俗称“词向量”。真的只能叫“俗 称”,算不上翻译。半年前我本想翻译的,但是硬是想不出 Embedding 应该怎么 翻译的,后来就这么叫习惯了-_-| 如果有好的翻译欢迎提出。Embedding 一词 的意义可以参

9、考维基百科的相应页面(链接)。后文提到的所有后文提到的所有“词向量词向量”都是指都是指 用用 DistributedDistributed RepresentationRepresentation 表示的词向量。表示的词向量。如果用传统的稀疏表示法表示词,在解决某些任务的时候(比如构建语言模型) 会造成维数灾难Bengio 2003。使用低维的词向量就没这样的问题。同时从实践 上看,高维的特征如果要套用 Deep Learning,其复杂度几乎是难以接受的,因此 低维的词向量在这里也饱受追捧。同时如上一节提到的,相似词的词向量距离相近,这就让基于词向量设计的一 些模型自带平滑功能,让模型看起来

10、非常的漂亮。2.2. 词向量的训练词向量的训练要介绍词向量是怎么训练得到的,就不得不提到语言模型。到目前为止我了解 到的所有训练方法都是在训练语言模型的同时,顺便得到词向量的都是在训练语言模型的同时,顺便得到词向量的。这也比较容易理解,要从一段无标注的自然文本中学习出一些东西,无非就是 统计出词频、词的共现、词的搭配之类的信息。而要从自然文本中统计并建立一个 语言模型,无疑是要求最为精确的一个任务(也不排除以后有人创造出更好更有用 的方法)。既然构建语言模型这一任务要求这么高,其中必然也需要对语言进行更 精细的统计和分析,同时也会需要更好的模型,更大的数据来支撑。目前最好的词 向量都来自于此,

11、也就不难理解了。这里介绍的工作均为从大量未标注的普通文本数据中无监督地学习出词向量 (语言模型本来就是基于这个想法而来的),可以猜测,如果用上了有标注的语料, 训练词向量的方法肯定会更多。不过视目前的语料规模,还是使用未标注语料的方 法靠谱一些。词向量的训练最经典的有 3 个工作,C&W 2008、M&H 2008、Mikolov 2010。 当然在说这些工作之前,不得不介绍一下这一系列中 Bengio 的经典之作。2.02.0 语言模型简介语言模型简介插段广告,简单介绍一下语言模型,知道的可以无视这节。语言模型其实就是看一句话是不是正常人说出来的。这玩意很有用,比如机器 翻译、语音识别得到若

12、干候选之后,可以利用语言模型挑一个尽量靠谱的结果。在 NLP 的其它任务里也都能用到。语言模型形式化的描述就是给定一个字符串,看它是自然语言的概率 P(w1,w2,wt)。w1 到 wt 依次表示这句话中的各个词。有个很简单的推论是:P(w1,w2,wt)=P(w1)P(w2|w1)P(w3|w1,w2)P(wt|w1,w2,wt1)常用的语言模型都是在近似地求 P(wt|w1,w2,wt1)。比如 n-gram 模型就是用 P(wt|wtn+1,wt1) 近似表示前者。顺便提一句,由于后面要介绍的每篇论文使用的符号差异太大,本博文里尝试 统一使用 Bengio 2003 的符号系统(略做简化

13、),以便在各方法之间做对比和分 析。2.12.1 BengioBengio 的经典之作的经典之作用神经网络训练语言模型的思想最早由百度 IDL 的徐伟于 2000 提出。(感 谢 余凯_西二旗民工 博士指出。)其论文Can Artificial Neural Networks Learn Language Models?提出一种用神经网络构建二元语言模型(即 P(wt|wt1))的方法。文中的基本思路与后续的语言模型的差别已经不大了。训练语言模型的最经典之作,要数 Bengio 等人在 2001 年发表在 NIPS 上的 文章A Neural Probabilistic Language Mo

14、del。当然现在看的话,肯定是要 看他在 2003 年投到 JMLR 上的同名论文了。Bengio 用了一个三层的神经网络来构建语言模型,同样也是 n-gram 模型。 如图 1。图 1(点击查看大图)图中最下方的 wtn+1,wt2,wt1 就是前 n1 个词。现在需要根据这已知的 n1 个词预测下一个词 wt。C(w) 表示词 w 所对应的词向量,整个模型中使用的是一套唯一的词向量,存在矩阵 C(一个 |V|m 的矩阵)中。其中 |V| 表示词表的大小(语料中的总词数),m 表示词向量的维度。w 到 C(w) 的转化就是从矩阵中取出一行。网络的第一层(输入层)是将 C(wtn+1),C(w

15、t2),C(wt1) 这 n1 个向量首尾相接拼起来,形成一个 (n1)m 维的向量,下面记为 x。网络的第二层(隐藏层)就如同普通的神经网络,直接使用 d+Hx 计算得到。d 是一个偏置项。在此之后,使用 tanh 作为激活函数。网络的第三层(输出层)一共有 |V| 个节点,每个节点 yi 表示 下一个词为 i 的未归一化 log 概率。最后使用 softmax 激活函数将输出值 y 归一化成概率。最终,y 的计算公式为:y=b+Wx+Utanh(d+Hx)式子中的 U(一个 |V|h 的矩阵)是隐藏层到输出层的参数,整个模型的多数计算集中在 U 和隐藏层的矩阵乘法中。后文的提到的 3 个工

16、作,都有对这一环节的简化,提升计算的速度。式子中还有一个矩阵 W(|V|(n1)m),这个矩阵包含了从输入层到输出层的直连边。直连边就是从输入层直接到输出层的一个线性变换,好像也是神经网络中的一种常用技巧(没有仔细考察过)。如果不需要直连边的话,将 W 置为 0 就可以了。在最后的实验中,Bengio 发现直连边虽然不能提升模型效果,但是可 以少一半的迭代次数。同时他也猜想如果没有直连边,可能可以生成更好的词向量。现在万事俱备,用随机梯度下降法把这个模型优化出来就可以了。需要注意的是,一般神经网络的输入层只是一个输入值,而在这里,输入层 x 也是参数(存在 C 中),也是需要优化的。优化结束之后,词向量有了,语言模型也有了。这样得到的语言模型自带平滑,无需传统 n-gram 模型中那些复杂的平滑算法。 Bengio

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号