A Neural Probabilistic Language Model(文献阅读笔记)

这篇NNLM使训练得到的模型比传统的统计语言模型使用n-gram能建模更远的关系,并且考虑到了词与词之间的相似性,一些相似的词获得了自然的平滑。前者是因为神经网络的结果使得,后者是因为使用了词向量。

其本身是语言模型,为了验证或者说是预测一句话最可能的表达,在预测的过程中产生word embedding 矩阵,在输入层中将词映射为一个m列的向量,也即词的向量表示,NPLM模型结构一共分为3层,输入 映射-隐含-输出

 


N-gram

N-gram对词的表示是one-hot的离散表示,存在问题:

  •  参数空间随着N成指数增长,当词典数量较大时存在维度灾难问题;
  •  无法理解词与词之间的内在联系,无法建模出多个相似词的关系。

通过引入词向量,从离散表示到连续表示,可以解决上面的问题:

  •  one-hot向量维度大小与词典成正比,稠密向量大小是固定值(50~300);
  •  稠密向量各维度值是实数,不限于0和1,可以表示连续空间,可以通过计算距离度量词与词之间的相似度。类似的思想还有IR中的向量空间模型(VSM)。

 


NNLM

第一次用神经网络来解决语言模型的问题,本文最大的贡献在于用多层感知器(MLP)构造了语言模型,如下图:

A Neural Probabilistic Language Model(文献阅读笔记)_第1张图片

NNLM的目标是训练如下模型:

上图中最下方的w_t-n+1,...,w_t-2,w_t-1就是前n-1个单词,现在根据这已知的n-1个单词预测下一个单词wt:

模型需要满足的约束条件是:

 

模型前向传播的过程:该模型可分为特征映射和计算条件概率分布两部分:

A Neural Probabilistic Language Model(文献阅读笔记)_第2张图片

 

模型一共三层:

  •     第一层是映射层,将n个单词映射为对应word embeddings的拼接,其实这一层就是MLP的输入层;
  1. 输入是当前词w_t的前n个词 (w_t-n+1~w_t-1) 经过C matrix 映射后到了映射层,模型训练的开始C matrix可以随机初始化,在论文的原文是这样的they could be initialized using prior knowledgeof semantic features. 最终模型train后C matrix也更新。
  2. 词向量concat成矩阵x:

  •     第二层是隐藏层直接用d+Hx计算得到,d是一个偏置项,然后激活函数用tanh;

直接用d+Hx计算得到,d是一个偏置项。之后,用tanh作为激活函数。

  •     第三层是输出层,因为是语言模型,需要根据前n个单词预测下一个单词,所以是一个多分类器,用softmax。整个模型最大的计算量集中在最后一层上,因为一般来说词汇表都很大,需要计算每个单词的条件概率,是整个模型的计算瓶颈。

         1.由隐含层到输出层归一化指数函数softmax:

         2.模型的训练目标是最大化以下似然函数,θ为模型的所有参数,R(θ)为正则化项:

         3.通过SGD进行参数更新

 

数学符号说明:

  • C(w):表示单词w对应的词向量,整个模型中使用一套唯一的词向量。
  • C:词向量C(w)存在于矩阵C(|V|*m)中,矩阵C的行数表示词汇表的大小;列数表示词向量C(w)的维度。矩阵C的某一行对应一个单词的词向量表示。
  • |V|:表示词汇表的大小,即语料库中的单词总数
  • m:表示词向量C(w)的维度,一般是50到100
  • w到C(w)的转化:从矩阵C中取出一行
  • d:隐藏层偏置bias(h)
  • H: 隐藏层的权重(h*(n-1)m)
  • U:隐藏层到输出层的权重(|V|*h)
  • b:输出层的偏置bias(|V|)
  • W:输入层到输出层权重(|V|*(n-1)m)
  • h:隐藏层神经元的数量

 


总结:

  • 由于NNLM模型使用了低维紧凑的词向量对上文进行表示,这解决了词袋模型带来的数据稀疏、语义鸿沟等问题。显然nnlm是一种更好的n元语言模型;另一方面在相似的上下文语境中,nnlm模型可以预测出相似的目标词,而传统模型无法做到这一点。

你可能感兴趣的:(文献阅读)