神经网络语言模型(NNLM)

本文介绍了由百度IDL提出的NNLM模型,详细阐述了其利用神经网络训练语言模型的原理。包括模型架构、训练过程及参数更新等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 模型原理

用神经网络来训练语言模型的思想最早由百度 IDL (深度学习研究院)的徐伟提出[1],NNLM(Nerual Network Language Model)是这方面的一个经典模型,具体内容可参考 Bengio 2003年发表在JMLR上的论文[2]

模型训练数据是一组词序列w1w1…wTwT,wt∈Vwt∈V。其中 VV 是所有单词的集合(即词典),ViVi 表示字典中的第 i 个单词。NNLM的目标是训练如下模型:

f(wt,wt−1,…,wt−n+2,wt−n+1)=p(wt|w1t−1)f(wt,wt−1,…,wt−n+2,wt−n+1)=p(wt|w1t−1)
其中wtwt表示词序列中第 tt 个单词,w1t−1w1t−1表示从第1个词到第tt 个词组成的子序列。模型需要满足的约束条件是:

f(wt,wt−1,…,wt−n+2,wt−n+1)>0f(wt,wt−1,…,wt−n+2,wt−n+1)>0
∑|V|i=1f(i,wt−1,…,wt−n+2,wt−n+1)=1∑i=1|V|f(i,wt−1,…,wt−n+2,wt−n+1)=1
下图展示了模型的总体架构:

图片名称

该模型可分为特征映射和计算条件概率分布两部分:

特征映射:通过映射矩阵 C∈R|V|×mC∈R|V|×m 将输入的每个词映射为一个特征向量,C(i)∈RmC(i)∈Rm表示词典中第 i 个词对应的特征向量,其中 mm 表示特征向量的维度。该过程将通过特征映射得到的C(wt−n+1),…,C(wt−1)C(wt−n+1),…,C(wt−1) 合并成一个 (n−1)m(n−1)m 维的向量:(C(wt−n+1),…,C(wt−1))(C(wt−n+1),…,C(wt−1))
计算条件概率分布:通过一个函数 gg (gg 是前馈或递归神经网络)将输入的词向量序列(C(wt−n+1),…,C(wt−1))(C(wt−n+1),…,C(wt−1)) 转化为一个概率分布 y∈R|V|y∈R|V| ,yy 中第 i 位表示词序列中第 t 个词是 ViVi 的概率,即:

f(i,wt−1,…,wt−n+2,wt−n+1)=g(i,C(wt−n+1),…,C(wt−1))f(i,wt−1,…,wt−n+2,wt−n+1)=g(i,C(wt−n+1),…,C(wt−1))
下面重点介绍神经网络的结构,网络输出层采用的是softmax函数,如下式所示:

p(wt|wt−1,…,wt−n+2,wt−n+1)=eywt∑ieyip(wt|wt−1,…,wt−n+2,wt−n+1)=eywt∑ieyi
其中 y=b+Wx+Utanh(d+Hx)y=b+Wx+Utanh(d+Hx),模型的参数 θ=(b,d,W,U,H,C)θ=(b,d,W,U,H,C)。x=(C(wt−n+1),…,C(wt−1))x=(C(wt−n+1),…,C(wt−1)) 是神经网络的输入。W∈R|V|×(n−1)mW∈R|V|×(n−1)m是可选参数,如果输入层与输出层没有直接相连(如图中绿色虚线所示),则可令W=0W=0。H∈Rh×(n−1)mH∈Rh×(n−1)m是输入层到隐含层的权重矩阵,其中hh表示隐含层神经元的数目。U∈R|V|×hU∈R|V|×h是隐含层到输出层的权重矩阵。d∈Rhd∈Rh 和 b∈R|V|b∈R|V|分别是隐含层和输出层的偏置参数。

需要注意的是:一般的神经网络模型不需要对输入进行训练,而该模型中的输入x=(C(wt−n+1),…,C(wt−1))x=(C(wt−n+1),…,C(wt−1)) 是词向量,也是需要训练的参数。由此可见模型的权重参数与词向量是同时进行训练,模型训练完成后同时得到网络的权重参数和词向量。

  1. 训练过程

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

L=1T∑tlogf(wt,wt−1,…,wt−n+2,wt−n+1;θ)+R(θ)L=1T∑tlogf(wt,wt−1,…,wt−n+2,wt−n+1;θ)+R(θ) ,其中 θθ为模型的所有参数,R(θ)R(θ)为正则化项
使用梯度下降算法更新参数的过程如下:

θ←θ+ϵ∂logp(wt|wt−1,…,wt−n+2,wt−n+1)∂θθ←θ+ϵ∂logp(wt|wt−1,…,wt−n+2,wt−n+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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值