赞
踩
传统的统计语言模型的缺点,在高维的情况下,由于N元组的稀疏问题,传统的语言模型需要花大量时间解决平滑,插值等问题;N受限于算力,不大的时候文本的长距离依赖关系无法进行建模;同时N元组共现未必相似等问题。
2003年,Bengio首次提出Neural Network Language Model(NNLM), 开创了神经网络运用在语言模型的先河,论文 《A Neural Probabilistic Language Model》
NNLN利用三层神经网络进行建模
输入层
词库V 里有词n个,词库的大小就是n,词库的维数是n。V投影到矩阵C上,如下所示Cn×d
有一个句子,句子包含的词按照顺序为“w1,w1…wt”,我们的目的是输入t-1个词,去预测第t个词。
对句子里的词按顺序进行向量化编码
因此 “w1” 的one-hot编码为:[1,0,0,0,0,0…,0]
词语 “w2” 的one-hot编码为:[0,1,0,0,0,0…,0]
词语 “w3” 的one-hot编码为:[0,0,1,0,0,0…,0]
以此类推到wt,这些词的向量的维度为d 。
将前t-1个向量合并起来的句子向量作为隐藏层的输入,输入的向量维度为(t−1) ⋅ d ,记 X = (t-1)⋅ d
隐藏层
隐藏层和输入层之间是全连接,隐藏层的神经元激活函数是tanh,隐藏层的神经元个数为h(从隐藏层输出的个数也是h)。
tanh函数如下所示
记 H为 (t-1)⋅ d⋅h 大小的的矩阵 (h为神经元个数)
b为长度是h的向量,tanh()函数的输入为 H⋅X +b
隐藏层的输出就如下所示:
tanh(H⋅X+b),X是权重,b是偏置
输出层
隐藏层到输出层也是全连接
输出层的输入是依赖于隐藏层的输出和隐藏层的输入之和,即输出层的输入为
y = K⋅tanh(D⋅X+b) + Mx + L
M为t ∗ d ⋅ ( t−1 ) 大小的矩阵, 是输入层到输出层的值的参数;K为t隐藏层到输出层输出的值的参数;L是偏置。
通过softmax函数,每个神经元的节点即为t时刻出现第i个词的概率
模型的损失函数是
其中θ为模型所有参数,R(θ)是正则化,以梯度下降方式进行反向传播并更新参数。
优点:使用NNLM模型生成的词向量是可以自定义维度的,维度并不会因为新扩展词而发生改变,而且这里生成的词向量能够很好的根据特征距离度量词与词之间的相似性。
缺点:计算复杂度过大,参数较多(word2vec是一种改进)。
https://blog.csdn.net/rongsenmeng2835/article/details/108571335?utm_source=app&app_version=4.17.0
https://blog.csdn.net/u010089444/article/details/52624964?utm_source=app&app_version=4.17.0
https://blog.csdn.net/maqunfi/article/details/84455434?utm_source=app&app_version=4.17.0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。