导读:在NLP中,语言模型用来判断一句话是否是正常人说的,广泛应用于信息检索、机器翻译、语音识别等重要任务中。传统的语言模型主要基于统计方法(如:NLP基础:N-Gram模型),虽然可解释性强、易于理解,但存在泛化能力差等问题。随着深度学习技术的发展,相关技术也应用到语言模型中,如NNLM模型。本文就将对NNLM展开介绍。
1 NNLM模型结构
NNLM是通过第t个词前的n-1个词,预测每个词在第t个位置出现的概率,即:
其中f>0,即预测出的结果都是大于0的,且预测结果的和为1。根据论文《A Neural Probabilistic Language Model》所述(回复“NNLM”可获取论文原文),NNLM包含一个三层的神经网络,具体模型结构如下:
其中U为V*h的矩阵,h为隐藏层单元数,不需要直连边时W为0。
5. 模型输出:输出层结果经过softmax,得到归一化后的概率结果。
2 模型训练目标及参数
。
通过随机梯度下降的方式更新参数:
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