深度学习和自然语言处理:诠释词向量的魅力

以下为译文:

今天的帖子,我收集的材料源于五篇论文。本次的主题是“word2vec”,主要是总结了Google公司的Mikolov等人关于词向量的工作(以及你可以用它做什么)。论文分别是:

·       Efficient Estimation of Word Representations in Vector Space – Mikolov et al. 2013

·       Distributed Representations of Words and Phrases and their Compositionality – Mikolov et al. 2013

·       Linguistic Regularities in Continuous Space Word Representations – Mikolov et al. 2013

·       word2vec Parameter Learning Explained – Rong 2014

·       word2vec Explained: Deriving Mikolov et al’s Negative Sampling Word-Embedding Method – Goldberg and Levy 2014

第一篇论文中,我们学习到了词向量方面的连续Bag-of-Words模型和连续 Skip-gram模型(我们马上将谈到词向量)。第二篇文章中,我们充分展示了词向量的魅力,并优化了Skip-gram模型(层次softmax和负采样)。另外,还将词向量的概念和性质推广到短语中。第三篇文章描述了基于词向量的向量推理,并介绍了著名的“King – Man + Woman = Queen”的例子。最后的两篇论文是其他人对Milokov论文的一些思想进行了深入的解释。

可以在Google Code上找到word2vec的实现。

什么是词向量

从某种意义上来讲,词向量只是简单的权重向量。在简单的一位有效编码方式下,向量中每一个元素都关联着词库中的一个单词,指定词的编码只是简单的将向量中相应元素设置为1,其他的元素设置成0。

假设我们的词汇只有五个词:King, Queen, Man, Woman, 和 Child。 我们可以将单词“Queen”编码为:

如果使用这样的编码,除了等量的运算,我们无法对词向量做比较。

在word2vec中,词的分布式表征被使用。在向量维数比较大(比如1000)的情况下,每一个词都可以用在元素的分布式权重来表示。因此,一个词的表示形式在向量中的所有元素中传播,每一个元素都对许多词的定义有影响,而不是简单的元素和词之间的一对一映射。如果我标记了假象词向量的维度(当然,在算法中没有这样的预分配标签),它可能看起来是这样的:

这样的向量来以某种抽象的方式来表示一个词的“意义”,接下来我们可以看到,只是通过简单地检查一个大的语料库,它可能以一个令人惊讶的方式学习词向量并能够捕捉到的词汇之间的关系。当然,我们也可以把向量作为神经网络的输入。

词向量推理

事实上我们发现,被学习的词表征用一种非常简单的方式捕捉有意义的语法和语义规律。具体来说,对于有特定关系的词组,语法规律可以看作固定的向量偏移。举个例子,我们把单词i的向量表示为xi,如果我们关注单复数的关系,我们可以发现xapple–xapples≈xcar–xcars, xfamily–xfamilies ≈ xcar–xcars等这样的规律。更令人惊讶的是,各种语义关系也是一样,正如SemEval 2012年测量关系相似性的工作所揭示的那样。

向量非常适用于解决类比的问题,比如a对b来说正如c对什么这种形式的问题。举个例子,使用基于余弦距离的向量偏移可以解决男人对女人来说正如叔叔对什么(婶婶)的问题。

举个例子,下图表示性别关系的三对词的矢量偏移:

        

下图表示单复数关系:

        

这类型的向量可以回答“King – Man + Woman = ?”的问题并得出结果“Queen”。在没有额外提供信息的情况下,仅仅是通过浏览大量的语义资料(正如我们即将见到的)获取这样的知识是非常令人激动的。

稍微令人惊讶的是,词表征的相似性超过了语法规律。它仅仅是对词向量的简单运算,就能得出如下面例子的vector(“King”) – vector(“Man”) + vector(“Woman”)接近“Queue”的词表征的结果。

 King, Man, Queen, 和Woman的向量如下所示:

向量合成King – Man + Woman = ?的结果:

这里还有一些用同样技术的实现结果:

        这里有国家-首都关系的一个2维的主成分分析预测:

        下面是一些类似于“a对b正如c对什么?”这类问题的例子:

        我们也可以使用向量元素之外的元素智能来解决诸如“德国+航线”的问题,通过合成向量来获得最终的结果:

        

有这样语意关系的词向量可以用来改进很多现有的自然语言处理应用比如机器翻译、信息检索和问答系统,甚至会催生出新的创意和应用。

        下图展示了基于语法和语义的词关系测试,使用一个skip-gram训练模型得到的640维的词向量可以获得55%的语义准确率和59%的语法准确率。

        

学习词向量

Mikolov等人并不是第一个使用词的向量表示形式的,但是他们确实减小了计算的复杂性,使在大量数据上学习高维词向量成为可行的。举个例子,“我们已经使用了谷歌新闻语料库进行训练的单词向量。该语料库包含6B词组。我们已经限制了词汇量的100万个最频繁的单词……”。

        神经网络语言模型(前馈或递归)的复杂性来自于非线性隐层(S)。

        尽管这就是神经网络的魅力所在,我们决定探索更简单的模型,也许精度并不如神经网络,但也可能是更有效的训练更大量数据。

        两种新的架构被提出:Continuous Bag-of-Words model和 Continuous Skip-gram model.我们先看Continuous Bag-of-Words(CBOW)。

        考虑这样一段散文“The recently introduced continuous Skip-gram model is an efficient method for learning high-quality distributed vector representations that capture a large number of precises syntatic and semantic word relationships.”,想象这段文字上有一个滑动窗口,包括当前的词和前后的四个词,具体如下图所示。

        

        上下文词组成了输入层,每一个词都用一位有效编码的方式来表示。如果词汇量是V,这些词都变成V维向量,相应的词被设置成1,其余的为0。下图表示单隐层和一个输出层。

        

        训练的目标是最大限度地观察实际输出词(焦点词)在给定输入上下文且考虑权重的的条件概率。在我们的例子中,给出了输入(“一个”,“有效”,“方法”,“为”,“高”,“质量”,“分布式”,“向量”)我们要最大限度地获得“学习”作为输出的概率。

       由于我们的输入向量都是一位有效编码的方式来表示,和权重矩阵W1相乘就相当于简单的选择一行。

       

        如果输入了C个词向量,隐层的激活函数其实就是用来统计矩阵中的热点行,然后处以C来取平均值。

        这意味着,隐藏层单元的链接(激活)函数就是简单的线性运算(直接将权重和作为下一层的输入)。

       从隐层到输出层,我们用一个权重矩阵W2来为每一个词计算得分,同样,可以使用softmax来计算词的后验分布。

       skip-gram和CBOW正好相反,它使用单一的聚焦词作为输入,目标上下文词作为输出,正如下图所示:

       

       正如之前提到的,隐层的激活函数只是权重矩阵W1 对应行的简单统计。在输出层,我们输出C个多项式分布。训练的最终目标就是减小输出层所有上下文词的预测错误率。举个例子,如果输入“learn”,我们可能得到在输出层得到“an”, “efficient”, “method”, “for”, “high”, “quality”, “distributed”,“vector”。

优化

在一个训练实例中,为每一个词输出词向量代价是非常大的……

首先从直觉上来看,对每次训练实例中更新的输出向量进行一个数量上的限制是解决这个问题的办法。但是我们提供了两种优雅的方法,一个是基于层次的柔性最大传递函数,另一个就是采样。

Hierarchical softmax 使用二叉树来表示词汇表中的所有词,每一个词在树中表示为叶子。对于每一个叶,从根到叶存在一个独特的路径,这条路径是用来估计由叶表示的单词的概率。“我们用从根到叶的随机游走的概率来定义这样的概率。”

这样的好处是不用对V个节点一一评估来获得神经网络中的概率分布,而是只用评估 log2(V)个节点。在这里我们使用二叉哈夫曼树,因为它给高频词汇赋予更短的编码,这样一来,训练过程就变快了。

负采样的想法很简单,就是每一次迭代我们只更新样本的输出词。目标输出词应该被留在样本中,并且应该被更新,我们还要加入一些(非目标)词作为负样本。“在采样过程中,概率分布是必要的,概率分布选择的灵活性比较大, 一般都根据经验来选择”。

Milokov等人也使用简单的二次采样方向来计量训练集合中比率和频次的不平衡性。(举个例子,“in”,“the”, 和“a”比不常出现的词提供更少的信息)。训练集中的每一个词都有一个丢弃概率,可以用下面的公式表示:

f(wi) 表示词 wi 出现的频率t 是一个阈值,一般来说取10-5附近的数。

文章原标题《The amazing power of word vectors》,作者:Adrian Colyer

文章为简译,更为详细的内容,请查看原文

时间: 2024-09-26 09:21:23

深度学习和自然语言处理:诠释词向量的魅力的相关文章

用深度学习来获取文本语义: 词向量应用于自然语言处理

◆ ◆ ◆ 序 词向量是一种把词处理成向量的技术,并且保证向量间的相对相似度和语义相似度是相关的.这个技术是在无监督学习方面最成功的应用之一.传统上,自然语言处理(NLP)系统把词编码成字符串.这种方式是随意确定的,且对于获取词之间可能存在的关系并没有提供有用的信息.词向量是NLP领域的一个替代方案.它把词或短语映射成实数向量,把特征从词汇表大小的高维度空间降低到一个相对低的维度空间. 例如,让我们看看四个词:"woman"(女人)."man"(男人)."

斯坦福深度学习课程第二弹:词向量内部和外部任务评价

像追美剧一样追课程! 大数据文摘已获斯坦福大学深度学习课程CS224d翻译授权, 重磅启动"斯坦福深度学习课程CS224d"的翻译工程, 所有译文将会免费发布,计划每周发布1篇. 期待你的加入,加入要求见文末 报名请点击文末"阅读原文". 大数据文摘作品,转载需授权 翻译:熊杰 王昱森   调整校对:寒小阳 龙心尘 特别鸣谢:曾宪超 大数据文摘"机器学习"专栏介绍 本文为大数据文摘机器专栏推出的[数据科学/机器学习]学习分享项目启动篇,我们将以S

《中国人工智能学会通讯》——7.2 基于深度学习的自然语言处理

7.2 基于深度学习的自然语言处理 深度学习旨在模拟人脑对事物的认知过程,一般是指建立在含有多层非线性变换的神经网络结构之上,对数据的表示进行抽象和学习的一系列机器学习算法.该方法已对语音识别.图像处理等领域的进步起到了极大的推动作用,同时也引起了自然语言处理领域学者的广泛关注. 如图 1 所示,深度学习为自然语言处理的研究主要带来了两方面的变化,一方面是使用统一的分布式(低维.稠密.连续)向量表示不同粒度的语言单元,如词.短语.句子和篇章等:另一方面是使用循环.卷积.递归等神经网络模型对不同的

中国人工智能学会通讯——深度学习在自然语言处理领域的最新进展

下面我来介绍一下深度学习在自然语言处理(NLP)的最新进展.我主要想针对机器翻译.聊天机器人和阅读理解这三个最活跃的方向来探讨深度学习在NLP领域的发展到了什么水平,还存在什么问题,然后再引申出未来的研究方向. 上图是自然语言处理主要技术的一览图.从左开始,第一列是自然语言的基本技术,包括词汇级.短语级.句子级和篇章级的表示,比如词的多维向量表示(word embedding).句子的多维向量表示,还有就是分词.词性标记.句法分析和篇章分析.第二列和第三列是自然语言的核心技术,包括机器翻译.提问

《中国人工智能学会通讯》——1.31 深度学习 在自然语言处理研究上的进展

1.31 深度学习 在自然语言处理研究上的进展 近年来,深度学习在人工智能的多个子领域都取得了显著的进展.在自然语言处理领域,虽然深度学习方法也收到越来越多的关注,在很多任务上也取得了一定效果,但是并没有其他领域那么显著.传统的主流自然语言处理方法是基于统计机器学习的方法,所使用的特征大多数是基于 onehot 向量表示的各种组合特征.这个特征表示方式会导致特征空间非常大,但也带来一个优点.就是在非常高维的特征空间中,很多任务上都是近似线性可分的.因此,在很多任务上,使用线性分类器就是可以取得比

重磅启动!翻译斯坦福大学课程:深度学习与自然语言处理

像追美剧一样追课程! 大数据文摘已获得斯坦福大学深度学习课程CS224d的翻译授权,重磅启动"斯坦福深度学习课程CS224d"的翻译工程,所有译文将会免费发布,计划每周发布1篇.期待你的加入,加入要求见文末,报名请点击文末"阅读原文". 大数据文摘作品,转载需授权 作者|寒小阳 && 龙心尘 感谢@Fantzy同学的帮助  大数据文摘"机器学习"专栏介绍 本文为大数据文摘机器专栏推出的[数据科学/机器学习]学习分享项目启动篇,我们

深度学习必备手册(上)

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 请收下这份关于人工智能的根目录--博客整理系列(一) 关于数据科学的那些事--博客整理系列(二) 机器学习必备手册--博客整理系列(三) 扩展眼界的都在这--博客整理系列(四) 深度学习必备手册--博客整理系列(六) 深度学习的概念源于人工神经网络的研究,如果追溯深度学习的概念还是要回到2006年Hinton那篇论文,基于深信度网(DNB)提出非监督贪心逐层训练算法,未解决深层结构相关的优化难题出现的论文.

运用深度学习教机器人理解自然语言

雷锋网按:本文作者Jonathan是21CT的首席科学家.他主要研究机器学习和人工智能如何使用在文本和知识中让计算机变得更智能.他在德克萨斯农工大学获得心理学学士学位和工商管理硕士,在德克萨斯大学获得计算机博士学位.译者/赵屹华 审校/刘帝伟.朱正贵 责编/周建丁. 在深度学习出现之前,文字所包含的意思是通过人为设计的符号和结构传达给计算机的.本文讨论了深度学习如何用向量来表示语义,如何更灵活地表示向量,如何用向量编码的语义去完成翻译,以及有待改进的地方. 在深度学习出现之前,我们书写的文字所包

深度学习与中文短文本分析总结与梳理

1.绪论 过去几年,深度神经网络在模式识别中占绝对主流.它们在许多计算机视觉任务中完爆之前的顶尖算法.在语音识别上也有这个趋势了.而中文文本处理,以及中文自然语言处理上,似乎没有太厉害的成果?尤其是中文短文本处理的问题上,尚且没有太成功的应用于分布式条件下的深度处理模型?(大公司或许有,但没有开源)本文暂且梳理一下,尝试围绕深度学习和短文本处理的方方面面就最简单的概念进行一次梳理,并且试图思考一个问题: 深度学习处理中文短文本的最终效果是什么? 我思考后的答案是:是一种模型,可以无需任何语言学知