神经网络语言模型NNLM(Neural Network Language Model)
用神经网络来训练语言模型的思想来源于2003年Bengjo发表的《A Neural Probabilistic Language Model》,下面我们来详细分析一下该模型结构(包括输入层,隐藏层,输出层)。
整体模型:

在训练过程中,输入是一串词序列,输出是该序列下一个词的概率值。假设有一组序列:w1,w2,⋅⋅⋅,wt , 其中wiϵv,v为所有单词的集合,最终训练的模型公式如下:
f(wt,wt−1,⋅⋅⋅,wt−n+1)=P(wt=i/contenxt)=P(wt/w1t−1)
参数解释:
wt为序列中的第t个word,wt−n+1为输入序列长度为n时的第一个单词。w1t−1为输入序列从第一个word到第t-1个word的子序列。
该模型需要满足如下两个条件,即所求概率值大于0,所有word出现的概率之和为1
f(wt,wt−1,⋯,wt−n+2,wt−n+1)>0
∑i=1∣V∣f(i,wt−1,⋯,wt−n+2,wt−n+1)=1
输入层: 从one hot embedding映射到distribution representation
把输入word的0,1稀疏embedding通过权重矩阵映射到低纬度的实数矩阵。

C实际上就是一个 |V| x m的自由参数矩阵,|V| 表示词表的大小, m 表示每个词的维度。
隐藏层

参数解释:
h为隐藏层神经元的个数,HϵRh∗(n−1)m为输入层到隐藏层的权重矩阵,dϵRh是隐藏层的偏置矩阵。
输出层
输出层受到隐藏层输出a和输入层输出x的影响。
模型的训练
损失函数为:

参数解释:
Θ为模型的所有参数,R(Θ)为正则化项, 使用梯度下降法更新模型参数
nnlm与word2vec相比:
nnlm是根据前文生成下一个单词,而word2vec分为根据上下文预测中间词,或根据某一个词预测上下文