一、【word2vec学习路线】神经网络语言模型

时间:2021-10-30 01:44:06

1. 统计语言模型 (statistical model of language)

统计语言模型中,把一段包含T个词的语料表示为

一、【word2vec学习路线】神经网络语言模型

w_t 表示第t个词,统计每个词在前面n个词出现的条件下的概率,用一幅图来表达就是:

一、【word2vec学习路线】神经网络语言模型

应用这个模型的时候,为了降低复杂度,基于马尔科夫假设(Markov Assumption):下一个词的出现仅依赖于它前面的一个或几个词,上面的公式可以近似为:

一、【word2vec学习路线】神经网络语言模型

上面那张图就变成(n=2):

一、【word2vec学习路线】神经网络语言模型

这就变成了n-gram 模型,也就是构造了一个每个词关于最近n个词的条件概率表。

那么,我们在面临实际问题时,如何选择依赖词的个数,即n。

  • 更大的n:对下一个词出现的约束信息更多,具有更大的辨别力;
  • 更小的n:在训练语料库中出现的次数更多,具有更可靠的统计信息,具有更高的可靠性。
一般选择一个折衷,取n=3,即 trigrams

2. 神经网络语言模型(Neural Probabilistic Language Model )

n-gram模型有两个缺点
  1. 由于训练语料限制,无法追求更大的n
  2.  没有考虑到相似的语法结构。

为了提高语言模型在这方面的表现,Yoshua Bengio等人提出的神经网络语言模型:

方法如下:
  1. 将词典中每个词表示为向量
  2. 用词向量表示每个词在句子中的联合概率函数
  3. 同时学习词向量和联合概率函数参数

表示为一个神经网络: 

一、【word2vec学习路线】神经网络语言模型


最后一层是一个softmax

一、【word2vec学习路线】神经网络语言模型

softmax输入表示为

一、【word2vec学习路线】神经网络语言模型

其中x为

一、【word2vec学习路线】神经网络语言模型

C(w_t) 表示将词 w_t向量化。

相当于有两层隐含层,一层向量化层C,一层tanh H。

需要学习的参数总共:θ = (b,d,W,U,H,C). 

#θ = |V |(1 + nm + h) + h(1 + (n − 1)m). 

V为词数,n为窗口大小,m为词向量维度,h为隐含层H的节点数。

使用最大似然最优化:

一、【word2vec学习路线】神经网络语言模型

具体求解方法还请阅读paper 

虽然模型在有限训练数据下,可以提高n的取值,且可以描述出更细致的词与词的关系,但模型优化计算复杂度要远高于n-gram,因为n-gram要得到一个样本的联合概率不需要计算词典中所有词的概率,而神经网络表达需要在最后一层softmax计算所有词的输出做归一化。

训练一个样本需要的计算复杂度是 

|V |(1 + nm + h) + h(1 + nm) + nm 

如果V很大的话,这个计算是非常耗时的,下篇我会介绍层次神经网络语言模型,通过把词表表示成一个树的结构,可以吧 |V| 降到 log|V|,使得问题可解。

参考文献

A Neural Probabilistic Language Model