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

词语表示

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

神经网络语言模型

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

前馈神经网络

前馈神经网络
参数 W , b W,b W,b通过反向传播算法学习,首先:
h W , b ( x ) = f ( W T x + b ) h_{W,b}(x) = f(W^T x + b) hW,b(x)=f(WTx+b)
之后定义损失函数:
J ( W , b ; x , y ) = 1 2 ∣ ∣ h W , b ( x ) − y ∣ ∣ 2 J(W,b;x,y) = \frac12||h_{W,b}(x) - y||^2 J(W,b;x,y)=21∣∣hW,b(x)y2
训练的样本为 { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , ⋯   , ( x ( m ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),\cdots,(x^{(m)},y^{(m)})\} {(x(1),y(1)),(x(2),y(2)),,(x(m),y(m))},损失函数:
J ( W , b ) = [ 1 m ∑ k = 1 m J ( W , b ; x ( k ) , y ( k ) ) ) ] + λ 2 ∑ l = 1 n l − 1 ∑ j = 1 s l ∑ i = 1 s l + 1 ( W i j ( l ) 2 ) J(W,b) = [\frac1m\sum_{k = 1}^mJ(W,b;x^{(k)},y^{(k)}))] + \frac\lambda 2\sum_{l = 1}^{n_l - 1}\sum_{j = 1}^{s_l}\sum_{i = 1}^{s_{l + 1}}\left({W_{ij}^{(l)}}^2\right) J(W,b)=[m1k=1mJ(W,b;x(k),y(k)))]+2λl=1nl1j=1sli=1sl+1(Wij(l)2)
参数的学习中,首先forward计算每一层每个神经元的输出,之后计算输出层也就是最后一层的输出,之后反向计算每个神经元的梯度,最后计算权重和偏差的梯度,这样既可以完成参数的学习
前馈神经网络的语言模型总结如下:
以求 p ( t h i s ∣ t h e , f e w , s u p p o r t e r s , o f ) p(this|the,few,supporters,of) p(thisthe,few,supporters,of)的概率为例

  • 输入 t h e   f e w   s u p p o r t e r s   o f the\ few\ supporters\ of the few supporters of
  • 根据look-up table得到一个由每个词的列向量concatenate得到的的矩阵, L : D × V , T w : V × 4 L:D \times V,T_w:V \times 4 L:D×V,Tw:V×4,也就是得到一个 D × 4 D \times 4 D×4的矩阵,这个矩阵作为神经网络的输入
  • 经过一个全连接层和一个Tanh激活层
  • 再经过一个全连接层,输出变为 1 × V 1 \times V 1×V
  • 经过softmax层得到输出的概率

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

循环神经网络语言模型

例如Bush held a talk with Salon这句话,在 t 1 t_1 t1时刻,输入是Bush对应的词向量 w 1 = [ 0.2 , 0.2 ] T w_1 = [0.2,0.2]^T w1=[0.2,0.2]T h 0 = [ 0 , 0 ] T h_0 = [0,0]^T h0=[0,0]T,输出的 h 1 = U ⋅ w 1 + W ⋅ h 0 h_1 = U\cdot w_1 + W\cdot h_0 h1=Uw1+Wh0,这个 h 1 h_1 h1和第二个词held对应的词向量 w 2 w_2 w2作为下一时刻 t 2 t_2 t2的输入,其中 U , W U,W U,W是共享的参数,尺寸为 D × D D \times D D×D,过程总结如下

  • 输入: t − 1 t-1 t1时刻历史 h t − 1 h_{t - 1} ht1 t t t时刻输入词语的词向量 w t w_t wt
  • 输出: t t t时刻历史 h t h_t ht t + 1 t + 1 t+1时刻词语的词向量 y t y_t yt的概率, y t y_t yt h t h_t ht得来, y t : V × 1 y_t:V\times 1 yt:V×1尺寸

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

自注意机制语言模型

A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V) = softmax\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)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/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值