NLP(四)神经网络词向量表示技术

本文的全部内容来自参考文献。来斯惟学长的博士论文对我有很大启发,读起来也特别舒服。这里是对感兴趣部分的摘录,如有需要请阅读原文,引用原文。


  • NNLM
  • LBL
  • RNNLM
  • C&W
  • CBOW和skip-gram

1 NNLM(Bengio,2001)

该模型在学习语言模型的同时,也得到了词向量。NNLM对n元语言模型进行建模,估算的值。但与传统方法不同的是,NNLM不通过计数的方法对n元条件概率进行估计,而是直接通过一个神经网络结构,对其进行建模求解。

神经网络语言模型(NNLM)结构图.png
输入层:独热、上文concat

隐藏层:tanh激活函数

输出层:|V|个节点。

将y转换对应的概率值:

由于Bengio等人的工作只考虑对语言模型的建模,词向量知识其副产品,因此他们并没有指出哪一套向量作为词向量效果更好。

参数更新:

其中θ为模型中的所有参数,包括词向量和网络结构中的权重U、H、b。

改进:独热换成分布式的实数词向量。

2 log双线性语言模型(LBL,Mnih和Hinton,2007)

与之前的NNLM相比,没有非线性的激活函数。
后来也有一些改进工作,主要在提高最后一层的归一化效率上:

  • 层级softmax(O(log_2|V|))
  • NCE+skip-gram(O(1))。

3 RNNLM

RNNLM直接对进行建模,而不使用公式对其进行简化。因此,RNNLM可以利用所有的上下文信息,预测下一个词。

循环神经网络语言模型(RNNLM)模型结构图.png

RNNLM的核心在于其隐藏层的算法:
其中,h(i)表示文中第i个词w_i所对应的隐藏层,该隐藏层由当前此的词向量e(w_i)以及上一个词对应的隐藏层h(i-1)结合得到。

4 C&W模型 (Collobert和Weston,2008)

与前面的三个基于语言模型的词向量生成方法不同,C&W模型是第一个直接以生成词向量为目标的模型。

C&W模型结构图.png
语言模型的目标是求解
,其中隐藏层到输出层的矩阵运算时最耗时的部分。因此,前面的各个词向量模型中,几乎都有对这一部分做优化的步骤,如层级softmax、分组softmax和噪声对比估算。C&W模型的目标是更快速地生成词向量,因此它并没有采取语言模型的方式,去求解上述条件概率,转而采用了另一种更高效的方法,直接对n元短语打分。对于语料种出现过的n元短语,模型会对其打高分;而对于语料中没有出现的随机短语,模型会对其打低分。通过这种方式,C&W模型可以更直接地学习得到符合分布假说的词向量。


这个式子是模型需要最小化的损失函数,希望正样本打出的分数至少比负样本大1,否则就会有损失。
C&W模型与NNLM相比,主要的不同点在于C&W将目标词放到了输入层,同时输出层也从语言模型的|V|个节点变为了一个节点,这个节点的数值表示对这组n元组短语的打分。打分只有高低之分,没有概率特性,因此无需复杂的归一化操作。C&W模型使用这种方式把NNLM模型在最后一层的|V|×|h|次运算降为|h|次运算,极大地降低了模型的时间复杂度。

5 CBOW模型和Skip-gram模型(Mikolov等,2013)

他们设计两个模型的目的是希望用更高效的方法获取词向量。因此,他们根据前人在NNLM、RNNLM和C&W模型的经验,简化现有模型,保留核心部分,得到了这两个模型。

5.1 CBOW模型

该模型一方面根据C&W模型的经验,使用一段文本中的中间词作为目标词;另一方面,又以NNLM作为蓝本,并在其基础上做了两个简化。

  • 没有隐藏层,去掉隐藏层之后,模型从神经网络直接转化为log线性结构,与logistic回归一致。log线性结构比三层神经网络少了一个矩阵运算,大幅度地提升了模型的训练速度。
  • 去除了上下文各词的词序信息,使用上下文各词向量的平均值,代替NNLM使用的上文各词词向量的拼接。
    CBOW模型的输入

然后直接进行预测:

CBOW的目标词预测

结果是对训练的每一个当前词,最大化上式的对数值。可是这里面的参数是什么?如何梯度下降?

CBOW模型

5.2 skip-gram模型

与CBOW模型稍有不同,skip-gram模型通过当前词预测上下文。(下图为了和上文保持一致,还是用的上下文预测当前词)
skip-gram模型目标函数
求归一化的概率

改进:

  • 负采样

负采样技术与NCE技术的区别?

负采样技术仅仅是优化正负样本的似然,而不对输出层做概率归一化。NCE技术则是通过噪声样本对概率进行估计。

负采样技术与C&W模型中相应部分的区别?

主要是,负采样技术用了多个负样本。

  • 二次采样技术

在大规模语料中,高频词通常就是停用词。如果词在预料中出现的频率大于阈值,则有的概率在训练时跳过这个词。注意是跳过这个词的概率。


两张有用的图(本文所有的图均来自参考文献):


神经网络词向量模型复杂程度对比图
神经网络词向量模型复杂程度对比图

这里有点问题,CBOW使用的是上下文,不是n-gram。如下图。


Mikolov论文

参考文献:
基于神经网络的词和文档语义向量表示方法研究

你可能感兴趣的:(NLP(四)神经网络词向量表示技术)