语言模型【NNLM】学习笔记

概要

统计语言模型的目标是学习句子中词的联合概率,这其中有个非常严重的问题就是维度灾难。论文提出使用神经网络模型对词进行分布式表示:

  1. 关联词汇表中的每个词,形成一个分布式词特征向量 ∣ V ∣ × m |V| \times m V×m
  2. 根据词序列中词的特征向量表示词序列的关联概率函数
  3. 学习词特征向量和关联概率函数的参数

特征向量可以表示词的不同方面,因为每个词都与向量空间中的一个点相关联。概率函数则是以词序列的条件概率表示,使用多层神经网络进行训练函数的参数。

为什么可以这么实现
假如有两个词序列
The cat is walking in the bedroom
A dog was running in a room
我们知道两个句子中cat和dog语义表示应该是相似的。因为(the,a), (bedroom,room), (is,was),(running,walking)是语义相似的,概率函数在特征向量表示中的平滑作用,cat和dog的特征表示也会很相似。

NNLM模型

如图所示为NNLM模型结构
在这里插入图片描述
假设训练集为一个词序列 w 1 , w 2 , . . . , w T w_1,w_2,...,w_T w1,w2,...,wT,词汇表为 V V V,而 w t ∈ V w_t \in V wtV,NNLM模型的目标函数为 f ( w t , . . . , w t − n + 1 ) = P ^ ( w t ∣ w 1 t − 1 ) f(w_t,...,w_{t-n+1})=\hat P(w_t|w^{t-1}_1) f(wt,...,wtn+1)=P^(wtw1t1)其中 w 1 t − 1 = ( w 1 , w 2 , . . . , w t − 1 ) w^{t-1}_1=(w_1,w_2,...,w_{t-1}) w1t1=(w1,w2,...,wt1)下同。

对任意词序列 w 1 t − 1 w_1^{t-1} w1t1都满足: ∑ i = 1 ∣ V ∣ f ( i , w t − 1 , w t − 2 , . . . , w t − n + 1 ) = 1 , f > 0 \sum_{i=1}^{|V|}f(i,w_{t-1},w_{t-2},...,w_{t-n+1})=1,\quad f>0 i=1Vf(i,wt1,wt2,...,wtn+1)=1,f>0其中 f ( i , w t − 1 , w t − 2 , . . . , w t − n + 1 ) f(i,w_{t-1},w_{t-2},...,w_{t-n+1}) f(i,wt1,wt2,...,wtn+1)表示前 n n n个词预测词 i i i的概率。通过这些条件概率的乘积,可以得到词序列的联合概率模型。

NNLM模型将函数 f ( w t , . . . , w t − n − 1 ) = P ^ ( w t ∣ w 1 t − 1 ) f(w_t,...,w_{t-n-1})=\hat P(w_t|w_1^{t-1}) f(wt,...,wtn1)=P^(wtw1t1)分解为两个部分:

  1. 词汇表中的任意一个元素 i i i使用映射矩阵 C ∣ V ∣ × m C_{|V|\times m} CV×m得到向量表示 C ( i ) ∈ R m C(i) \in \Reals^m C(i)Rm。它表示与词汇表中每个单词相关联的分布式特征向量。
  2. 将词特征向量序列 ( C ( w t − n + 1 ) , . . . , C ( w t − 1 ) ) (C(w_{t-n+1}),...,C(w_{t-1})) (C(wtn+1),...,C(wt1))函数 g g g得到条件概率分布,估计 P ^ ( w t ∣ w 1 t − 1 ) \hat P(w_t|w_1^{t-1}) P^(wtw1t1),如上图。 C C C g g g的组合就是函数 f f f f ( i , w t − 1 , w t − 2 , . . . , w t − n + 1 ) = g ( i , C ( w t − 1 ) , . . . , C ( w t − n + 1 ) ) f(i,w_{t-1},w_{t-2},...,w_{t-n+1})=g(i,C(w_{t-1}),...,C(w_{t-n+1})) f(i,wt1,wt2,...,wtn+1)=g(i,C(wt1),...,C(wtn+1))

C C C g g g都各自有一些关联参数,映射矩阵 C C C的参数就是其特征向量本身。第 i i i行就是第 i i i个词的特征向量 C ( i ) C(i) C(i)。而函数 g g g则可以由前向神经网络、循环神经网络或其他的参数化函数实现,模型的整体参数表示为 θ = ( C , ω ) \theta=(C,\omega) θ=(C,ω),其中 ω \omega ω是函数 g g g的参数。
整个模型训练的损失函数 L = 1 T ∑ t l o g f ( w t , w t − 1 , . . . , w t − n + 1 ; θ ) + R ( θ ) L=\frac{1}{T}\sum_tlogf(w_t,w_{t-1},...,w_{t-n+1};\theta)+R(\theta) L=T1tlogf(wt,wt1,...,wtn+1;θ)+R(θ)其中 R ( θ ) R(\theta) R(θ)是惩罚性,训练目标就是最大化损失函数。

以论文中实验部分设计的模型梳理整个模型的流程

从上面的模型图中可以看出,NNLM模型有两个隐藏层(hidden layer):共享此特征层 C C C(the shared word features layer C)和普通的双切曲线tanh隐藏层(the ordinary hyperbolic tangent hidden layer):

  • 第一个隐藏层:将词序列通过矩阵 C C C转换成特征向量序列: x = ( C ( w t − 1 ) , . . . , C ( w t − n + 1 ) ) x=(C(w_{t-1}),...,C(w_{t-n+1})) x=(C(wt1),...,C(wtn+1))
  • 第二个隐藏层:计算每个输出词 i i i的对数概率(log-probabilities) y = b + W x + U t a n h ( d + H x ) y=b+Wx+Utanh(d+Hx) y=b+Wx+Utanh(d+Hx)其中 b , W , U , d , H b,W,U,d,H b,W,U,d,H为函数参数。

最后输出层中为了保证所有词的概率之和等于1,使用softmax函数 P ^ ( w t ∣ w t − 1 , . . . , w t − n + 1 ) = e y w t ∑ i e y i \hat P(w_t|w_{t-1},...,w_{t-n+1})=\frac{e^{y_{w_t}}}{\sum_ie^{y_i}} P^(wtwt1,...,wtn+1)=ieyieywt

总结

NNLM模型对词表示的能力比n-gram模型好很多,并且通过学习分布式词表示解决了维度灾难问题。同时,模型设计了并行计算,如数据的并行处理、参数的并行处理,更好的提升模型的性能。

论文地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值