• 欢迎光临~

自然语言处理学习笔记-lecture5-语言模型03

开发技术 开发技术 2022-10-21 次浏览

词语表示

一种典型方法是符号表示法,(w_1w_2cdots w_m)等等,等价的表示方法是one-hot表示法,此时有多少个词向量就有多少维,且没有办法表示词之间的相似性,基于连续语义空间的词语表示,向量维数和词的数量无关,是低维稠密的连续实数空间

神经网络语言模型

词向量:将每个词映射到实数向量空间中的点,设词表规模(V),词向量维度(D),look-up table是一个(Dtimes V)的矩阵,记为(L),里面的每一列代表一个词,该矩阵右乘一个(V times 1)的ont-hot向量取出特定的词对应的词向量,(L)的学习:通常先随机初始化,然后通过目标函数优化词的向量表达

前馈神经网络

自然语言处理学习笔记-lecture5-语言模型03
参数(W,b)通过反向传播算法学习,首先:

[h_{W,b}(x) = f(W^T x + b) ]

之后定义损失函数:

[J(W,b;x,y) = frac12||h_{W,b}(x) - y||^2 ]

训练的样本为({(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),cdots,(x^{(m)},y^{(m)})}),损失函数:

[J(W,b) = [frac1msum_{k = 1}^mJ(W,b;x^{(k)},y^{(k)}))] + fraclambda 2sum_{l = 1}^{n_l - 1}sum_{j = 1}^{s_l}sum_{i = 1}^{s_{l + 1}}left({W_{ij}^{(l)}}^2right) ]

参数的学习中,首先forward计算每一层每个神经元的输出,之后计算输出层也就是最后一层的输出,之后反向计算每个神经元的梯度,最后计算权重和偏差的梯度,这样既可以完成参数的学习
前馈神经网络的语言模型总结如下:
以求(p(this|the,few,supporters,of))的概率为例

  • 输入(the few supporters of)
  • 根据look-up table得到一个由每个词的列向量concatenate得到的的矩阵,(L:D times V,T_w:V times 4),也就是得到一个(D times 4)的矩阵,这个矩阵作为神经网络的输入
  • 经过一个全连接层和一个Tanh激活层
  • 再经过一个全连接层,输出变为(1 times V)
  • 经过softmax层得到输出的概率

前馈神经网络语言模型存在的问题:仅对小窗口的历史信息建模,例如n-gram仅考虑前n-1个词的历史信息

循环神经网络语言模型

例如Bush held a talk with Salon这句话,在(t_1)时刻,输入是Bush对应的词向量(w_1 = [0.2,0.2]^T)(h_0 = [0,0]^T),输出的(h_1 = Ucdot w_1 + Wcdot h_0),这个(h_1)和第二个词held对应的词向量(w_2)作为下一时刻(t_2)的输入,其中(U,W)是共享的参数,尺寸为(D times D),过程总结如下

  • 输入:(t-1)时刻历史(h_{t - 1})(t)时刻输入词语的词向量(w_t)
  • 输出:(t)时刻历史(h_t)(t + 1)时刻词语的词向量(y_t)的概率,(y_t)(h_t)得来,(y_t:Vtimes 1)尺寸

循环神经网络存在的问题是梯度消失和爆炸问题,参数(W)经过多次传递后,易发生梯度消失和爆炸,可以通过有选择的保留和遗忘,通过某种策略有选择的保留或遗忘(t)时刻的信息来解决LSTM

自注意机制语言模型

[Attention(Q,K,V) = softmaxleft(frac{QK^T}{sqrt{d_k}}right)V ]

神经网络语言模型相关开源工具

  • NNlm, 前馈神经网络语言模型(feed-forward n-gram neural language model), http://nlg.isi.edu/software/nplm/
  • RNNlm, 循环神经网络语言模型(recurrent neural language model), http://rnnlm.org/;
  • LSTMlm, LSTM语言模型(recurrent neural language model with LSTM unit), https://www-i6.informatik.rwth-aachen.de/web/Software/rwthlm.php
  • 自我注意机制语言模型GPT(Language Model with Generative Pre-training), https://github.com/openai/gpt-2
  • LSTM反向传播算法,http://arunmallya.github.io/writeups/nn/lstm/index.html#/
  • Google Word2Vec, http://code.google.com/p/word2vec/
程序员灯塔
转载请注明原文链接:自然语言处理学习笔记-lecture5-语言模型03
喜欢 (0)