神经网络语言模型(Neural Network Language Model)

神经网络语言模型(Neural Network Language Model)

模型介绍

2003年,Bengio首次提出Neural Network Language Model(NNLM), 开创了神经网络运用在语言模型的先河,论文 《A Neural Probabilistic Language Model》
上一章提到传统的统计语言模型的缺点,在高维的情况下,由于N元组的稀疏问题,传统的语言模型需要花大量时间解决平滑,插值等问题;N受限于算力,不大的时候文本的长距离依赖关系无法进行建模;同时N元组共现未必相似等问题。

针对这些传统语言模型的问题,NNLM尝试用三层神经网络进行建模

神经网络语言模型(Neural Network Language Model)
如图所示,整个模型有三层

第一层是输入层:模型的输入wtn+1wt2,wt1w_{t-n+1}{\cdots}w_{t-2},w_{t-1}表示n-1个词,目标是预测当前t时刻的wtw_t,模型引入词向量(Word Vector)的概念,将输入的词通过look-up table映射成为一个n-1个向量,这里我们假设词典大小V|V|, 向量的维度为dd, look-up table C的为VdV{\sdot}d的矩阵,将N-1个向量concat起来,输入层维度为(n1)d(n-1){\sdot}d的向量,这里记为xx

第二层是隐藏层,通过一个fully connect layer传递,神经元的**函数是tanh,参数WhW_{h}(n1)dh(n-1){\sdot}d*h的矩阵,输出为tanh(Whx+bh)tanh(W_h{\sdot}x+b_h),维度大小为h

第三层是输出层,依赖隐藏层的输出和输入层的输出之和Utanh(Whx+bh)+Wox+boU{\sdot}tanh(W_h{\sdot}x+b_h) +W_o{\sdot}x+b_o, 其中WoW_oVd(n1)V*d{\sdot}(n-1)的矩阵, UUVhV*h的矩阵,这里输出的向量维度为VV,再通过softmax函数,每个神经元的节点即为t时刻出现第i个词的概率P(wtiwtn+1wt2,wt1)P(w_t^i|w_{t-n+1}{\cdots}w_{t-2},w_{t-1})

模型的参数 θ=(U,Wh,bh,W0,bo)\theta=(U, W_h, b_h, W_0, b_o), 参数总数为V(1+nd+h)+h(1+(n1)d)|V |(1 + nd + h) + h(1 + (n − 1)d), 其中d为look-up表C的维度, h为隐藏层维度, V为词表大小,n-1为输入层的输入的词的个数

模型的目标是最大化
L=1Ttlogf(wt,wt1,,wtn+1;θ)+R(θ)(1) L=\frac{1}{T}\sum_tlogf(w_t,w_{t-1},{\cdots},w_{t-n+1};\theta) + R(\theta) \tag1
其中f(wt,wt1,,wtn+1;θ)f(w_t,w_{t-1},{\cdots},w_{t-n+1};\theta)为概率P(wtwtn+1wt2,wt1)P(w_t|w_{t-n+1}{\cdots}w_{t-2},w_{t-1}), R(θ)R(\theta)为正则项,其中P(wtwtn+1wt2,wt1)=eywtiVeyiP(w_t|w_{t-n+1}{\cdots}w_{t-2},w_{t-1})=\frac{e^{y_{wt}}}{\sum_i^Ve^{yi}}, 即softmax后的概率,通过反向传播公式优化算法即可得到模型参数θ\theta

优点

  1. 相比传统的统计语言模型,Ngram的N增加只带来线性提升,而非指数复杂的提升
  2. 通过词向量解决统计语言模型中解决稀疏(sparse)的问题,不用进行平滑等操作
  3. 另外词向量的引入解决统计语言模型部分相似性的问题,为后续NLP词向量时代的发展做铺垫
  4. 相比传统的统计语言模型,神经网络的非线性能力获得更好的泛化能力,perplexity(困惑度提升)

困惑度

困惑度(perplexity)的基本思想是:给测试集的句子赋予较高概率值的语言模型较好,当语言模型训练完之后,测试集中的句子都是正常的句子,那么训练好的模型就是在测试集上的概率越高越好,公式如下:
PP(W)=P(w1w2wN)1N=1P(w1w2wN)N(2) PP(W) = P(w_1w_2{\cdots}w_N)^{-\frac{1}{N}}=\sqrt[N]{\frac{1}{P(w_1w_2{\cdots}w_N)}} \tag2
由公式可知,句子概率越大,语言模型越好,迷惑度越小。

缺点

参数较多,部分计算复杂,在word2vec等后续模型中陆续优化