本文的全部内容来自参考文献。来斯惟学长的博士论文对我有很大启发,读起来也特别舒服。这里是对感兴趣部分的摘录,如有需要请阅读原文,引用原文。
- NNLM
- LBL
- RNNLM
- C&W
- CBOW和skip-gram
1 NNLM(Bengio,2001)
该模型在学习语言模型的同时,也得到了词向量。NNLM对n元语言模型进行建模,估算的值。但与传统方法不同的是,NNLM不通过计数的方法对n元条件概率进行估计,而是直接通过一个神经网络结构,对其进行建模求解。
隐藏层: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的核心在于其隐藏层的算法:
其中,h(i)表示文中第i个词w_i所对应的隐藏层,该隐藏层由当前此的词向量e(w_i)以及上一个词对应的隐藏层h(i-1)结合得到。
4 C&W模型 (Collobert和Weston,2008)
与前面的三个基于语言模型的词向量生成方法不同,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论文
参考文献:
基于神经网络的词和文档语义向量表示方法研究
网友评论