Neural Network Language Model(NNLM)

Neural Network Language Model(NNLM)神经网络语言模型

原理图:

Neural Network Language Model(NNLM)

运用场景:

知道句子的前N-1个词,来预测第N个词。

网络的流程:

1.词语one-hot编码—————2.projection_layer层————3.hidden_layer层——————4.SoftMax层

  • 词语One-hot编码

句子:“我爱自然语言处理”

词库为:”我,爱,自然,语言,处理,........”

因此词语  "我"  的one-hot编码为:[1,0,0,0,0,0...,0]

词语  "爱"  的one-hot编码为:[0,1,0,0,0,0...,0]

词语  "自然"  的one-hot编码为:[0,0,1,0,0,0...,0]

词语  "语言"  的one-hot编码为:[0,0,0,1,0,0...,0]

  • projection_layer

熟称投影层

投影矩阵C,其中词典的维数为V,假设V=10000

则投影矩阵C为:

Neural Network Language Model(NNLM)

D为可设定参数,通过后续BP反馈来调整。

“我” 和 “爱” 的向量表示为(此处以列向量表示,上面的one-hot编码以横向量表示,性质一样):

Neural Network Language Model(NNLM)

上文的拼接就是列的拼接,比如3个300*1向量,拼接则为900*1的向量,因此就得到了前N-1个词组成的句子向量,

  • Hidden layer

隐层这一部分主要做的是将上一层的输出作为输入,进行全连接, 比如上文拼接好的向量900*1与500*1的全连接层进行拼接,通过tanh函数可以得到一个500个数。

  • softmax层

隐层出来后,接一个softmax分类器,做一个预测。比如我们要从词库量=10000的词库中预测处N是哪个词。则我们上文得到的500个数作为输入,输入进SOFTMAX ,通过损失函数等,预测出词库10000中每个单词出现的概率。因此结果是一个10000*1的向量。

”我爱自然语言”的第五个词应该是“处理“,如果预测出来的不准确,就可以通过定义一个交叉熵损失函数来计算损失,通过BP算法来调整参数C。