把自己对神经网络语言模型(NNML)的一些理解记录下来,有理解不正确的地方还请在评论区批评指正。
原文可在这里阅读下载
模型结构如下图所示:

模型包含:输入层,投影层,隐藏层,以及输出层。
输入层:将前N-1个词(wt−n+1,⋯,wt−2,wt−1)用1-of-∣V∣编码方式(好像是dummy coding,可以参考pandas中的get_dummies函数)编码,V是词典。假设将词wt−n+1编码之后的向量用at−n+1∈R1×∣V∣表示。
投影层:假设每个词用m维表示。使用一个投影矩阵C∈R∣V∣×m将输入at−n+1映射为向量Ct−n+1∈R1×m。一共有n−1个输入,将映射后的向量拼接形成(Ct−n+1,⋯,Ct−2,Ct−1)∈R(n−1)m×1。
隐藏层:隐藏层的输入为x=(Ct−n+1,⋯,Ct−2,Ct−1),**函数为tanh函数。此层的输出为tanh(d+Hx),其中d∈Rh×1为投影层的偏置,H∈Rh×(n−1)m为投影层到隐藏层的权重矩阵。
输出层:采用的是softmax函数,即P^(wt∣wt−1,⋯wt−n+1)=∑ieyieywt
其中y=b+Wx+Utanh(d+Hx),b∈R∣V∣×1为隐藏层的偏置,tanh(d+Hx)为隐藏层的输出;U∈R∣V∣×h为隐藏层到输出层的权重矩阵;W∈R∣V∣×(n−1)m为投影层到输出层的权重矩阵,如图中的虚线,可以为0,表示投影层到输出层没有连接。输出层的维度为∣V∣×1,第i 位表示词序列中第n 个词是 Vi的概率,和为1。
综上所述,模型需要学习的参数θ=(b,d,W,U,H,C)。训练模型使用随机梯度下降法:θ←θ+ε∂θ∂logP^(wt∣wt−1,⋯wt−n+1)
[1] Bengio Y, Ducharme R, Vincent P, et al. A neural probabilistic language model. Journal of machine learning research, 2003, 3(Feb): 1137-1155
[2] Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space. arXiv preprint arXiv, 2013, 1301(3781)
[3] https://blog.****.net/lilong117194/article/details/82018008