导读:在NLP中,语言模型用来判断一句话是否是正常人说的,广泛应用于信息检索、机器翻译、语音识别等重要任务中。传统的语言模型主要基于统计方法(如:NLP基础:N-Gram模型),虽然可解释性强、易于理解,但存在泛化能力差等问题。随着深度学习技术的发展,相关技术也应用到语言模型中,如NNLM模型。本文就将对NNLM展开介绍。
1 NNLM模型结构
NNLM是通过第t个词前的n-1个词,预测每个词在第t个位置出现的概率,即:
其中f>0,即预测出的结果都是大于0的,且预测结果的和为1。根据论文《A Neural Probabilistic Language Model》所述(回复“NNLM”可获取论文原文),NNLM包含一个三层的神经网络,具体模型结构如下:
- 模型输入:输入为t位置前的n-1个词,并根据C得到每个输入词的词向量。C为V*m的矩阵,V为语料库包含的总词数,m为词向量维数。
- 神经网络-输入层:模型输入后得到的n-1个词向量,首尾拼接后得到一个整合后的向量 x。
- 神经网络-隐藏层:此处为全连接网络,tanh(d Hx),其中d表示偏置,H是对应向量的权重,并通过tanh激活。
- 神经网络-输出层:隐藏层到输出层也是一个全连接,另外输入层到输出层有个线性变换,叫做直连边,在实验中发现加入直连接可减少迭代次数。最终得到t位置为不同词语(V个)的未归一化概率 y
其中U为V*h的矩阵,h为隐藏层单元数,不需要直连边时W为0。
5. 模型输出:输出层结果经过softmax,得到归一化后的概率结果。
2 模型训练目标及参数
- 模型参数: 一般来讲,神经网络的输入不需要训练,但是在NNLM模型中,神经网络的输入是词向量x,也是需要训练的参数。因此NNLM的权重参数和词向量是同时训练的,参数包括:
。
- 训练目标: NNLM训练目标是希望找到合适的参数并使得如下似然函数最大:
通过随机梯度下降的方式更新参数:
3 与统计模型相比的优点
使用基于统计的N-Gram时会遇到一个问题,即很多词的组合是语料库中未能出现的,因此这个词的出现概率为0,从而导致整个句子的出现概率为0。在实际应用中这样是不够合理的,因此要引入平滑算法解决这个问题。而NNLM自带平滑,不需要额外进行复杂的平滑操作。
4 补充概念-词向量
文本数据无法直接进行计算,如果想将自然语言问题转化为模型问题,需要将文本进行数字化。最普遍使用的方法就是one-hot,但是one-hot会带来两个主要问题:一是把每个词都转化为很长的向量,带来维度灾难,且这些向量中大部分都是0;二是one-hot无法表现出两个词的相似性。
词向量又叫做词嵌入,通过低维向量将词转化为空间中的一个点。一般是50-100维,大大降低了数据维度,且越相近的词距离越近,这也使得使用词嵌入的模型自带平滑功能。在训练语言模型的同时可以训练得到词向量。
参考文章:
https://zhuanlan.zhihu.com/p/417625837
http://licstar.net/archives/328#s0
https://mp.weixin.qq.com/s?__biz=MzI2MDU3OTgyOQ==&mid=2247491908&idx=1&sn=5d056222580e9a365f87bb697f73c550&chksm=ea6529dedd12a0c8d4ced252c3f5bbfd90a82428aee2a5103fb0a136e729af459f4638aee761&scene=21#wechat_redirect