nlp中的经典深度学习模型(一)

本系列是七月算法nlp就业班学习笔记。

1 DNN与词向量

1.1 DNN

神经网络中每一个神经单元是一个线性变化加一个激活函数
s = U T a s=U^Ta s=UTa
a = f ( z ) a=f(z) a=f(z)
z = W x + b z=Wx+b z=Wx+b
在这里插入图片描述

多层神经网络就是不断向前加。

1.2 skip-gram

通过中心词 预测周围词。
在这里插入图片描述
整体训练网络如上图。词表大小为N。
输入X是一个one-hot的表示形式。其形状是NxN。
第一层是一个线性变换 h= XxW (W是一个Nx100的一个矩阵),得到一个Nx100维的隐层矩阵。
最后在隐层上加一个线性变换: hxW’ 得到输出是这里(X周围的一个位置)应该是某个词的概率。W’是一个Nx100的矩阵。
对下游有用的是W,用做词向量表示。一般把W称作输入向量,W’称作输出向量。
(这里看到模型维度对不上,不能做矩阵乘法,可能有一个转置操作。)

1.3 简单句子分类模型DAN

使用词向量,判断两句话语义是否相近,可以使用的一种方法是:找出两句话中的词,分别找出每个词的词向量,对每个句子的词向量做平均,然后两个句子的向量计算点乘。如果值很低,说明语义相近。
在这里插入图片描述

可以给句子中的词向量做平均拿到平均值。经过2层神经网络,最后做softmax可以分类该句子的情感属性。

2 RNN+LSTM+GRU

2.1 RNN

在这里插入图片描述

RNN相当于是一个事情反复做了很多次。
在这里插入图片描述

每一时刻t 输入为 h ( t − 1 ) h^{(t-1)} h(t1) x ( t ) x^{(t)} x(t)
h ( t ) = f ( W x ( t ) + U h ( t − 1 ) ) h^{(t)}=f(Wx^{(t)}+Uh^{(t-1)}) h(t)=f(Wx(t)+Uh(t1))
y ( t ) = s o f t m a x ( V h ( t ) ) y^{(t)}=softmax(Vh^{(t)}) y(t)=softmax(Vh(t))
目标函数
在这里插入图片描述
在做求导过程中得到
在这里插入图片描述
BPTT

()部分的连乘,在值<1的时候,连续乘,会趋近于0,发生梯度消失。在值>1的时候,连续乘会变成一个值很大的数,会发生梯度爆炸。
这里的值与激活函数有关系。非线性激活函数的导数一般都<1。所以更容易发生梯度消失。
怎么解决呢?可以选择一部分单元不进行更新,不计算梯度。从而引出了LSTM模型。

扫描二维码关注公众号,回复: 13083511 查看本文章

2.2 LSTM

在这里插入图片描述

LSTM相比较于RNN多了一个C,平行于h的C。
在这里插入图片描述

f t = σ ( W f . [ h t − 1 , x t ] + b f ) f_t=\sigma(W_f.[h_{t-1},x_t]+b_f) ft=σ(Wf.[ht1,xt]+bf)
注意 [ h t − 1 , x t ] [h_{t-1},x_t] [ht1,xt]是两个向量拼接。 W f W_f Wf与拼接向量是点乘. W f . [ h t − 1 , x t ] W_f.[h_{t-1},x_t] Wf.[ht1,xt]最后结果是一个n维的向量。 f t f_t ft就表示在n个维度,哪些应该被遗忘。

i t = σ ( W i . [ h t − 1 , x t ] + b i ) i_t=\sigma(W_i.[h_{t-1},x_t]+b_i) it=σ(Wi.[ht1,xt]+bi)

C ^ t = t a n h ( W C . [ h t − 1 , x t ] + b C ) \widehat{C}_t = tanh(W_C.[h_{t-1},x_t]+b_C) C t=tanh(WC.[ht1,xt]+bC)

C t = f t ∗ C t − 1 + i t ∗ C ^ t C_t = f_t*C_{t-1}+i_t*\widehat{C}_t Ct=ftCt1+itC t

o t = σ ( W o . [ h t − 1 , x t ] + b o ) o_t = \sigma(W_o.[h_{t-1},x_t]+b_o) ot=σ(Wo.[ht1,xt]+bo)

h t = o t ∗ t a n h ( C t ) h_t = o_t*tanh(C_t) ht=ottanh(Ct

这就是一个 C t , h t = f ( h t − 1 , x t , C t − 1 ) C_t,h_t = f(h_{t-1},x^t,C_{t-1}) Ct,ht=f(ht1,xt,Ct1)的函数。

2.3 LSTM变种

1 添加Peephole
在这里插入图片描述

C C C参与到结果计算中

2 forget while input
在这里插入图片描述
去掉 i t i_t it

3 GRU
在这里插入图片描述
Ref: Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation
去掉C,保留门结构。

2.4 递归神经网络

2.5 双向RNN

双向RNN的效果总是优于单向RNN。

2.6 堆叠RNN

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/flying_all/article/details/115331781