word2vec模型(1) - 背景

word2vec主要解决的问题是,把词典中的词表示成一个词向量(或词嵌入,word embedding,把词嵌入到一个向量空间中),这个向量是低维的、稠密的。通过研究词向量的性质,可以得到词之间的各种性质,如距离、相似性等。

1. 统计语言模型

自然语言处理中的一个基本问题:如何计算一段文本序列在某种语言下出现的概率?
统计语言模型给出了这一类问题的一个基本解决框架。对于一段文本序列S=w1,w2,...,wT,它的概率可以表示为:

2. N-gram模型
因为参数空间巨大,所以模型实际上不可用。通过限定过去的N-1个词语,可以得到简化版的N-gram模型,即

3. 从one-hot vector到dense vector
本质上,N-gram对词的表示是one-hot的离散表示,存在问题:1.参数空间随着N成指数增长,当词典数量较大时存在维度灾难问题;2.无法理解词与词之间的内在联系,无法建模出多个相似词的关系。

通过引入稠密向量(dense vector),从离散表示到连续表示,可以解决上面的问题:1. one-hot向量维度大小与词典成正比,稠密向量大小是固定值(50~300);2. 稠密向量各维度值是实数,不限于0和1,可以表示连续空间,可以通过计算距离度量词与词之间的相似度。类似的思想还有IR中的向量空间模型(VSM)。

4. 分布表示与cooccurence矩阵
与词的向量表示相独立的一个问题是,怎样表示一个词的意义?通过分布表示(distributional representation),即上下文环境相似的两个词有着相近的语义,可以度量词之间的相似性。
通过统计上下文中共同出现(cooccurence)的词对,得到cooccurence矩阵,可以用来描述词之间的关系。然而这个矩阵本质上也是one-hot的,存在维度灾难问题,传统方式是对它进行SVD降维表示。

5. NNLM
鉴于N-gram等模型的不足,2003年Bengio等人用神经网络建立统计语言模型的框架NNLM(Neural Network Language Model)。它是一个词嵌入+前馈神经网络,通过前n-1个词来预测第n个词的概率。

流程如下:

  • 通过将词特征层(或嵌入层,embedding layer),提取词向量
    将前n-1个词从one-hot vector转换成dense vector。转换矩阵是一个共享参数矩阵C,维度为|V|*m,|V|表示词典大小,m表示dense vector的维度大小。
  • 基于词向量,训练浅层前馈神经网络
    • 输入层((n-1)*m个神经元)
    • 隐藏层(h个神经元),激活函数tanh
    • 输出层(|V|个神经元),通过softmax输出词典中每个词的概率。注意论文里有输入层到输出层的连接



    • 损失函数:cross-entropy + 正则项

模型的参数空间为 θ = (b,d,W,U,H,C),通过梯度递降来训练。

NNLM引入了连续的词向量和平滑的概率模型,我们就可以在一个连续空间里对序列概率进行建模,从而从根本上缓解数据稀疏性和维度灾难的问题。

NNLM存在的问题:1. 只能处理固定长度的模型;2. 参数空间巨大,训练速度慢。

6. word2vec

针对NNLM的问题,在两个步骤中(词向量提取、神经网络训练),计算瓶颈主要在第二个步骤。如果只想得到词向量,可以对神经网络进行简化:

  • 移除隐藏非线性激活层:直接将embedding layer与输出层的softmax layer连接;
  • 忽略序列信息:输入的所有词向量汇总到同一个embedding layer;
  • 增加上下文窗口:将future words纳入上下文环境

得到了word2vec的CBOW模型(Continuous Bag-of-Words Model)。它依然是从context对target word的预测中学习到词向量的表达。

相反,如果从target word对context的预测中学习到word vector,则得到word2vec的skip-gram模型(名称源于该模型在训练时会对上下文环境里的word进行采样)。

关于word2vec的细节将在下一篇中讲述。

参考资料

  1. https://www.cnblogs.com/iloveai/p/word2vec.html
  2. NNLM论文: http://jmlr.org/papers/volume3/bengio03a/bengio03a.pdf
  3. stanford CS224d 课程讲义:
    http://cs224d.stanford.edu/syllabus.html
    http://cs224d.stanford.edu/lectures/CS224d-Lecture2.pdf

你可能感兴趣的:(word2vec模型(1) - 背景)