我是靠谱客的博主 坦率含羞草,最近开发中收集的这篇文章主要介绍自然语言处理学习笔记-lecture5-语言模型03词语表示神经网络语言模型神经网络语言模型相关开源工具,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

词语表示

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

神经网络语言模型

词向量:将每个词映射到实数向量空间中的点,设词表规模 V V V,词向量维度 D D D,look-up table是一个 D × V Dtimes 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) = [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) 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 = Ucdot w_1 + Wcdot 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:Vtimes 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) = softmaxleft(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/

最后

以上就是坦率含羞草为你收集整理的自然语言处理学习笔记-lecture5-语言模型03词语表示神经网络语言模型神经网络语言模型相关开源工具的全部内容,希望文章能够帮你解决自然语言处理学习笔记-lecture5-语言模型03词语表示神经网络语言模型神经网络语言模型相关开源工具所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部