NLP 3.1 RNN,LSTM,GRU

1、为什么需要递归神经网络?

  • RNN可以考虑上下文关系,语序
  • RNN可以减少参数量,减少模型复杂度
  • 可以处理不同时长的数据

2、Recurrent Neural Network——递归神经网络

2.1 构造语言模型

在这里插入图片描述

2.2 对于情感分析只需要在最后时刻将rnn cell的输出接入一个softmax

2.3 RNN formulation

在这里插入图片描述
线性的转换+非线性激活函数

2.4 RNN vs HMM

在hmm中,每一个时刻只有一个状态被激活。RNN每个时刻的每个状态都是一个连续性的随机变量——分布式表示方法。深度学习基本都是分布式的表示方法

在这里插入图片描述

one- hot encoding:

  • sparse
  • 不需要学习
  • 状态转移矩阵会非常大
    distributed representation
  • non-sparse/compact
  • 需要训练学习

3、Recap:语言模型

在这里插入图片描述

4、RNN的语言模型

  • 1、先对每一个word做word embedding

  • 2、输入rnn cell

  • 3、输出每个时刻的output

  • 4、y输出的是给定当前单词,下一个单词出现的概率分布

  • 5、针对一个sentence,损失函数是每个时刻loss的叠加

在这里插入图片描述

从时间维度上,rnn是deep model。对于每个时刻,隐式表达层上RNN也可以deep

5、RNN gradient vanishing and exploding

在这里插入图片描述
在计算梯度时,需要求出每个时刻的h对上一时刻的h,当对于rnn前几个时刻的梯度计算时, w h h w_{hh} whh的t次方项参与了计算。

在这里插入图片描述

  • w h h w_{hh} whh> 1 发生梯度爆炸
  • w h h w_{hh} whh <1 发生梯度消失

Long-term dependency

当句子太长时,rnn模型由于梯度计算的问题,很难捕获到很前面的单词和当前单词的关系。

在这里插入图片描述
对于第二个例子,空格时刻的词的选择更依赖于上一个时刻而不是更前面的几个时刻

6、Gradient clipping——solve gradient exploding

设置阈值,当当前梯度大于阈值时,对当前时刻的梯度除以梯度的norm再乘阈值限制梯度的值。
在这里插入图片描述

7、LSTM

7.1 LSTM的内部结构:三个门

在这里插入图片描述

7.2 LSTM的应用

在这里插入图片描述
1、one to one:适合做图像模型 image classification
2、one to many:只有第一个时刻有输入,适合做image captioning,看图说话,根据图像生成文本
3、many to one:粉色代表text,蓝色代表分类,适合sentiment classification等分类,情感分析
4、many to many:机器翻译,seq2seq模型
5、many to many:针对每个输入都有相应输出:语言模型,NER识别

7.3 Bi-directional(双向) LSTM

对于当前时刻t的结果,不止考虑前几个时刻还要考虑后面几个时刻的memory的影响。可以完全考虑上下文,准确率会高。更好地捕获长时序的关系。
在这里插入图片描述
在这里插入图片描述

  • RNN捕获到后几个时刻的单词信息,但由于梯度消失,很难捕获到前面时刻的单词信息
  • LSTM对于前几个单词更加敏感,可能是由于forget gate 的关闭导致前面的memory 被清洗,所以后面单词针对前几个单词的memory不明确。
  • Bi-directional LSTM 弥补了RNN和LSTM各自的缺点。

8、GRU ——Gated Recurrent Unit

只有两个门,复杂度低于LSTM,效果与LSTM类似。

  • update gate 控制input
  • reset:类似于forget gate,决定是否抽取上一个时刻的h

在这里插入图片描述

对于当前时刻的output:

  • 对于当前时刻输入端计算出的output
  • 对于之前时刻计算保留的memory
  • u控制上面两部分对于当前时刻总output的贡献比。

猜你喜欢

转载自blog.csdn.net/weixin_51182518/article/details/113856543