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为:
D为可设定参数,通过后续BP反馈来调整。
“我” 和 “爱” 的向量表示为(此处以列向量表示,上面的one-hot编码以横向量表示,性质一样):
上文的拼接就是列的拼接,比如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。