神经网络语言模型与word2vec 篇(一)
神经网络语言模型NNLM(Neural Network Language Model)
用神经网络来训练语言模型的思想来源于2003年Bengjo发表的《A Neural Probabilistic Language Model》,下面我们来详细分析一下该模型结构(包括输入层,隐藏层,输出层)。
整体模型:
在训练过程中,输入是一串词序列,输出是该序列下一个词的概率值。假设有一组序列: , 其中为所有单词的集合,最终训练的模型公式如下:
参数解释:
为序列中的第t个word,为输入序列长度为n时的第一个单词。为输入序列从第一个word到第t-1个word的子序列。
该模型需要满足如下两个条件,即所求概率值大于0,所有word出现的概率之和为1
输入层: 从one hot embedding映射到distribution representation
把输入word的0,1稀疏embedding通过权重矩阵映射到低纬度的实数矩阵。
C实际上就是一个 |V| x m的自由参数矩阵,|V| 表示词表的大小, m 表示每个词的维度。
隐藏层
参数解释:
h为隐藏层神经元的个数,为输入层到隐藏层的权重矩阵,是隐藏层的偏置矩阵。
输出层
输出层受到隐藏层输出a和输入层输出x的影响。
模型的训练
损失函数为:
参数解释:
为模型的所有参数,为正则化项, 使用梯度下降法更新模型参数
nnlm与word2vec相比:
nnlm是根据前文生成下一个单词,而word2vec分为根据上下文预测中间词,或根据某一个词预测上下文