神经网络语言模型与word2vec 篇(一)

神经网络语言模型NNLM(Neural Network Language Model)
用神经网络来训练语言模型的思想来源于2003年Bengjo发表的《A Neural Probabilistic Language Model》,下面我们来详细分析一下该模型结构(包括输入层,隐藏层,输出层)。
整体模型:
神经网络语言模型与word2vec 篇(一)
在训练过程中,输入是一串词序列,输出是该序列下一个词的概率值。假设有一组序列:w1,w2,,wtw_{1},w_{2},\cdot \cdot \cdot ,w_{t} , 其中wiϵv,vw_{i} \epsilon v, v为所有单词的集合,最终训练的模型公式如下:
f(wt,wt1,,wtn+1)=P(wt=i/contenxt)=P(wt/w1t1)f(w_{t},w_{t-1},\cdot \cdot \cdot ,w_{t-n+1}) = P(w_{t}=i/contenxt)=P(w_{t}/w^{t-1}_{1})
参数解释:
wtw_{t}为序列中的第t个word,wtn+1w_{t-n+1}为输入序列长度为n时的第一个单词。w1t1w^{t-1}_{1}为输入序列从第一个word到第t-1个word的子序列。
该模型需要满足如下两个条件,即所求概率值大于0,所有word出现的概率之和为1
f(wt,wt1,,wtn+2,wtn+1)>0f\left(w_{t}, w_{t-1}, \cdots, w_{t-n+2}, w_{t-n+1}\right)>0
i=1Vf(i,wt1,,wtn+2,wtn+1)=1\sum_{i=1}^{|V|} f\left(i, w_{t-1}, \cdots, w_{t-n+2}, w_{t-n+1}\right)=1

输入层: 从one hot embedding映射到distribution representation
把输入word的0,1稀疏embedding通过权重矩阵映射到低纬度的实数矩阵。
神经网络语言模型与word2vec 篇(一)
C实际上就是一个 |V| x m的自由参数矩阵,|V| 表示词表的大小, m 表示每个词的维度。

隐藏层
神经网络语言模型与word2vec 篇(一)
参数解释:
h为隐藏层神经元的个数,HϵRh(n1)mH\epsilon R^{h*(n-1)m}为输入层到隐藏层的权重矩阵,dϵRhd\epsilon R^{h}是隐藏层的偏置矩阵。

输出层
输出层受到隐藏层输出a和输入层输出x的影响。神经网络语言模型与word2vec 篇(一)
模型的训练
损失函数为:
神经网络语言模型与word2vec 篇(一)
参数解释:
Θ\Theta为模型的所有参数,R(Θ)R(\Theta)为正则化项, 使用梯度下降法更新模型参数

nnlm与word2vec相比:
nnlm是根据前文生成下一个单词,而word2vec分为根据上下文预测中间词,或根据某一个词预测上下文