神经网络语言模型(NNML)

把自己对神经网络语言模型(NNML)的一些理解记录下来,有理解不正确的地方还请在评论区批评指正。

原文可在这里阅读下载

模型结构如下图所示:
神经网络语言模型(NNML)
模型包含:输入层,投影层,隐藏层,以及输出层。

输入层:将前N-1个词(wtn+1,,wt2,wt1)(w_{t-n+1}, \cdots,w_{t-2}, w_{t-1})用1-of-V|V|编码方式(好像是dummy coding,可以参考pandas中的get_dummies函数)编码,VV是词典。假设将词wtn+1w_{t-n+1}编码之后的向量用atn+1R1×Va_{t-n+1}\in R^{1\times |V|}表示。
投影层:假设每个词用mm维表示。使用一个投影矩阵CRV×mC\in R^{|V|\times m}将输入atn+1a_{t-n+1}映射为向量Ctn+1R1×mC_{t-n+1}\in R^{1\times m}。一共有n1n-1个输入,将映射后的向量拼接形成(Ctn+1,,Ct2,Ct1)R(n1)m×1(C_{t-n+1}, \cdots, C_{t-2}, C_{t-1})\in R^{(n-1)m\times1}
隐藏层:隐藏层的输入为x=(Ctn+1,,Ct2,Ct1)x=(C_{t-n+1}, \cdots, C_{t-2}, C_{t-1}),**函数为tanhtanh函数。此层的输出为tanh(d+Hx)tanh(d+Hx),其中dRh×1d\in R^{h\times1}为投影层的偏置,HRh×(n1)mH\in R^{h\times(n-1)m}为投影层到隐藏层的权重矩阵。
输出层:采用的是softmaxsoftmax函数,即P^(wtwt1,wtn+1)=eywtieyi\hat{P}\left(w_{t} | w_{t-1}, \cdots w_{t-n+1}\right)=\frac{e^{y_{w_{t}}}}{\sum_{i} e^{y_{i}}}
其中y=b+Wx+Utanh(d+Hx)y=b+W x+U \tanh (d+H x)bRV×1b\in R^{|V|\times1}为隐藏层的偏置,tanh(d+Hx)tanh(d+Hx)为隐藏层的输出;URV×hU\in R^{|V|\times h}为隐藏层到输出层的权重矩阵;WRV×(n1)mW\in R^{|V|\times(n-1)m}为投影层到输出层的权重矩阵,如图中的虚线,可以为0,表示投影层到输出层没有连接。输出层的维度为V×1|V|\times 1,第ii 位表示词序列中第nn 个词是 ViV_i的概率,和为1。

综上所述,模型需要学习的参数θ=(b,d,W,U,H,C)\theta=(b, d, W, U, H, C)。训练模型使用随机梯度下降法:θθ+εlogP^(wtwt1,wtn+1)θ\theta \leftarrow \theta+\varepsilon \frac{\partial \log \hat{P}\left(w_{t} | w_{t-1}, \cdots w_{t-n+1}\right)}{\partial \theta}

[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