word embedding系列(一)背景知识

word embedding范围非常广泛,内容很多,所以先从基础的背景知识讲起。这个系列准备分为四部分:

一、背景知识

二、word2vec

三、fasttext

四、Wsabie和TagSpace

词向量

最初的词向量是one-hot形式的向量,即只有单词所在的那一维是1,其他维都是0,向量长度和词汇表大小一样。缺点显而易见,容易造成维度灾难,并且对词语之间的语义关系起不到任何表达作用。所以考虑用稠密的实数向量来对词语进行表示。

于是后来就有人提出用稠密实数向量来表示词语,如下图所示:

这样可以被计算机理解,如果能找到比较好的映射方法,那么能够很好地表示语义相关性。学习出来的wordembedding每一维度不会像图中所示一样具有特定的意思。

如果将词向量降维成2维画散点图,有

可以看到,虽然是不同的语言体系,可是相同语义的词语分布形式是基本一致的。

2.统计语言模型

一个文本W的概率为P(W),W表示由T个词wi按顺序构成的一个句子:

利用贝叶斯公式可以被分解为下式,,w的上下标意思是从下标位置的词到上标位置的词组成的文本

利用大数定理可以将概率近似为词语出现的频率

利用最大似然可以将目标函数设为下式,

context(w)表示模型定义词语w的相关语料,比如ngram就是w的前序文本,word2vec是上下文。

在实际中经常采用最大对数似然,也就是:

3.神经网络语言模型NNLM

图中是NNLM的结构图,输入层(input+projection layer)、隐藏层和输出层。

它的输入是词的context中的词初始化的词向量,输出y每一维是词汇表中每个词的未归一化的log概率而不是词向量。

网络每一层的计算和输出如公式所示

目标函数是让词w的概率最大化

利用梯度上升来求解

这里需要更新的参数是

梯度上升过程中,将词向量也视为参数,进行更新。于是训练后能同时得到词向量和网络中的权重。

它的缺点很明显,从隐藏层到输出的softmax层的计算量很大,因为要计算所有词的softmax概率。

下一篇中要介绍的word2vec方法就比较机智的提出了两种替代隐层的方法,大大降低了计算量。

本篇有哪里讲得不太清楚欢迎交流~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180809G1U8UW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券