欢迎光临
一起学习,一起进步

神经网络语言模型(NNLM)

1. 模型原理

用神经网络来训练语言模型的思想最早由百度 IDL (深度学习研究院)的徐伟提出[1],NNLM(Nerual Network Language Model)是这方面的一个经典模型,具体内容可参考 Bengio 2003年发表在JMLR上的论文[2]
模型训练数据是一组词序列w1wT,wtV。其中 V 是所有单词的集合(即词典),Vi 表示字典中的第 i 个单词。NNLM的目标是训练如下模型:

  • f(wt,wt1,...,wtn+2,wtn+1)=p(wt|w1t1)

其中wt表示词序列中第 t 个单词,w1t1表示从第1个词到第t 个词组成的子序列。模型需要满足的约束条件是:

  • f(wt,wt1,...,wtn+2,wtn+1)>0
  • |V|i=1f(i,wt1,...,wtn+2,wtn+1)=1

下图展示了模型的总体架构:
图片名称
该模型可分为特征映射计算条件概率分布两部分:

  1. 特征映射:通过映射矩阵 CR|V|×m 将输入的每个词映射为一个特征向量,C(i)Rm表示词典中第 i 个词对应的特征向量,其中 m 表示特征向量的维度。该过程将通过特征映射得到的C(wtn+1),...,C(wt1) 合并成一个 (n1)m 维的向量:(C(wtn+1),...,C(wt1))
  2. 计算条件概率分布:通过一个函数 g (g 是前馈或递归神经网络)将输入的词向量序列(C(wtn+1),...,C(wt1)) 转化为一个概率分布 yR|V| ,y 中第 i 位表示词序列中第 t 个词是 Vi 的概率,即:
    • f(i,wt1,...,wtn+2,wtn+1)=g(i,C(wtn+1),...,C(wt1))

下面重点介绍神经网络的结构,网络输出层采用的是softmax函数,如下式所示:

  • p(wt|wt1,...,wtn+2,wtn+1)=eywtieyi

其中 y=b+Wx+Utanh(d+Hx),模型的参数 θ=(bdWUHC)x=(C(wtn+1),...,C(wt1)) 是神经网络的输入。WR|V|×(n1)m是可选参数,如果输入层与输出层没有直接相连(如图中绿色虚线所示),则可令W=0HRh×(n1)m是输入层到隐含层的权重矩阵,其中h表示隐含层神经元的数目。UR|V|×h是隐含层到输出层的权重矩阵。dRh 和 bR|V|分别是隐含层和输出层的偏置参数。
需要注意的是:一般的神经网络模型不需要对输入进行训练,而该模型中的输入x=(C(wtn+1),...,C(wt1)) 是词向量,也是需要训练的参数。由此可见模型的权重参数与词向量是同时进行训练,模型训练完成后同时得到网络的权重参数和词向量。

2. 训练过程

模型的训练目标是最大化以下似然函数:

  • L=1Ttlogf(wt,wt1,...,wtn+2,wtn+1;θ)+R(θ) ,其中 θ为模型的所有参数,R(θ)为正则化项

使用梯度下降算法更新参数的过程如下:

  • θθ+ϵlogp(wt|wt1,...,wtn+2,wtn+1)θ ,其中 ϵ为步长。

3. 参考资料

[1] Can Artificial Neural Networks Learn Language Models?
[2] A Neural Probabilistic Language Model
http://blog.sina.com.cn/s/blog_66a6172c0102v1zb.html

赞(0) 打赏
未经允许不得转载:openSL » 神经网络语言模型(NNLM)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏