详解word2vector的原理,结构,训练过程

原始论文:Efficient Estimation of Word Representations in Vector Space

 

原文链接:https://arxiv.org/abs/1301.3781v3

1.介绍

2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性

当我们在说word2vec算法或模型的时候,其实指的是其背后用于计算word vector的CBoW模型和Skip-gram模型。很多人以为word2vec指的是一个算法或模型,这也是一种谬误。word2vec算法的背后是一个浅层神经网络。

本论文的主要目的是介绍从海量的数亿字和数亿字的数据集中学习高质量的词汇向量的技术,我们使用最近提出的技术来测量产生的向量表示的质量,期望不仅相似的词彼此接近,而且这些词可以具有多个相似度。例如,名词可以有多个词尾,如果我们在原始向量空间的子空间中搜索相似的词,就可以找到具有相似词尾的词。

令人惊讶的是,人们发现词语表达的相似性超出了简单的句法规则。使用字偏移技术,在字向量上执行简单的代数运算,例如,矢量(“king”)-矢量(“man”)+矢量(“woman”)产生的矢量最接近于单词queen的矢量表示[20]。

2.前期工作

将单词表示为连续向量有很长的历史,在[1]中,提出了一种非常流行的神经网络语言模型(NNLM)估计模型体系结构,该模型采用线性投影层和非线性隐层的前馈神经网络共同学习字向量表示和统计语言模型

在这里,首先使用具有单个隐藏层的神经网络学习单词vectors。然后使用vectors这个词来训练nnlm。因此,即使不构建完整的nnlm,也可以学习单词向量。在这项工作中,我们直接扩展了这个体系结构,并且只关注使用简单模型学习向量这个词的第一步。

2.1 前馈神经网络语言模型(NNLM)

前馈神经网络语言模型由输入层、投影层、隐藏层和输出层组成。在输入层,前n个单词使用one-hot编码,其中v是词汇表的大小。然后使用共享投影矩阵将输入层投影到尺寸为N×D的投影层P上。由于只有n个输入是每个给定时间的活动,因此项目部分的组合是相对的堆操作。由于投影层中的值很密集,NNLM结构在投影层和隐藏层之间的计算变得复杂。

简单理解就是:①将单词表示成one-hot向量(1 x N),然后乘以一个N x D的投影层P得到1 x D的向量作为输入层) ②接一个隐藏层,激活函数为tanh ③最后经过一个输出层(全连接层),再接一个softmax函数生成概率分布。

N-gram语言模型,每个词仅仅依赖于前n个词,即输入为前n词,输出为当前词,需要最大化当前词出现的概率。

模型的复杂度就是:输入向量的参数 个数 +  隐藏层权重矩阵W的参数个数 + 全连接层矩阵U的参数个数。如下图所示

即 Q = N × D + N × D × H + H × V 

其中主项为h×v。但是,为了避免出现这种情况,我们提出了几种实用的解决方案:

要么使用SoftMax的分层版本,使用词汇表的二叉树表示,需要评估的输出单元的数量可以下降到大约log2(v)。

要么使用培训期间未标准化的模型完全避免标准化模型

 2.2   递归神经网络语言模型(RNNLM)

为了克服前馈神经网络的某些局限性,提出了基于递归神经网络的语言模型,例如需要指定上下文长度(模型n的阶数),因为理论上,RNN比浅层神经网络能有效地表示更复杂的模式[15,2]。RNN模型没有投影层,只有输入层、隐藏层和输出层。这种模型的特殊之处在于使用延时连接将隐藏层连接到自身的循环矩阵。这允许循环模型形成某种短期内存,因为来自过去的信息可以由隐藏层状态表示,隐藏层状态根据当前输入和上一时间步骤中隐藏层的状态进行更新。RNN模型的每个训练示例的复杂性是

 Q = H × H + H × V (即权重W和权重U的参数个数)

当表示词d的维数与隐藏层h的维数相同时,使用层次SoftMax可以有效地将术语h×v简化为h×log2(v)。大部分的复杂性来自h×h。

3.新的对数线性模型

3.1连续Skip-gram 模型

我们使用每个当前单词作为一个具有连续投影层的对数线性分类器的输入,并在当前单词前后的一定范围内预测单词。我们发现,增加范围可以提高结果字向量的质量,但同时也增加了计算的复杂性。由于距离较远的单词通常与当前单词的关联性比与当前单词的关联性小,因此我们通过从训练示例中的单词中抽取较少的样本来减少对距离较远的单词的权重。

Word to id: 将单词映射为下标i(词典),然后构造每个单词的one-hot向量表示(1 x V)

W: v个中心词的D维的词向量,每一行都代表一个词的词向量

W*:周围词向量,每一列是一个词向量

过程:将中心词表示成one-hot向量表示,然后和中心词矩阵相乘得到1xD维的向量,再和周围词矩阵相乘然后softmax得到概率,目标是使得需要预测的周围词所在的下标的概率最大

最后W和W*是我们想要的词向量,得到的词向量为W或者W+W*/2

3.2连续词袋模型CBOW

第一个提议的架构类似于前馈nnlm,其中非线性隐藏层被移除,投影层被所有单词共享(不仅仅是投影矩阵);因此,所有单词被投影到相同的位置(它们的向量被平均)。我们称这种架构为一袋文字模型,因为历史上的文字顺序不影响投射。

CBOW模型希望用上下文的词预测当前的词,模型大致如下所示

训练过程:将周围词表示成one-hot向量表示,然后和周围词矩阵相乘得到1xD维的向量,再把所有的词向量取平均或者求和,再和中心词词矩阵相乘然后softmax得到概率,目标是使得中心词所在的下标的概率最大。(和skip-gram类似)

4.模型的复杂度

5.论文总结

  • 大数据集上的简单模型往往强于小数据集上的复杂模型
  • King的词向量减去Man的词向量加上Woman的词向量和Queen的词向量最接近
  • 我们决定设计简单的模型来训练词向量,虽然简单的模型无法像神经网络那么准确的表示数据,但是我们可以在更多地数据集上更快地训练。
  • 我们相信在更大的数据集上使用更大的词向量维度能够训练得到更好的词向量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值