【一起入门NLP】中科院自然语言处理第5课-循环神经网络RNN(BPTT+LSTM+GRU)

专栏介绍:本栏目为 “2021秋季中国科学院大学胡玥老师的自然语言处理” 课程记录,不仅仅是课程笔记噢~ 如果感兴趣的话,就和我一起入门NLP吧

目录

  • RNN概述
  • RNN结构
  • RNN训练
    • BP&BPTT
    • 梯度消失/梯度爆炸
  • RNN改进及变形
    • LSTM
    • GRU
    • LSTM VS GRU

RNN概述

RNN引入:

  1. DNN、CNN 输入、输出定长;处理输入、输出变长问题效率不高。而自然语言处理中的语句通常其长度不固定。
  2. 单一DNN、CNN 无法处理时序相关序列问题

RNN核心思想:

  • 将处理问题在时序上分解为一系列相同的“单元”,单元的神经网络可以在时序上展开,且能将上一时刻的结果传递给下一时刻,整个网络按时间轴展开。即可变长。

RNN结构

RNN输入和输出结构可以等长或不等长,RNN结构按照时序展开是:(每一块都是相同的单元)
【一起入门NLP】中科院自然语言处理第5课-循环神经网络RNN(BPTT+LSTM+GRU)_第1张图片

RNN训练

RNN的参数:

  • Wi(输入权重)
  • Wh(上一时刻权重)
  • Wo(输出权重)
  • b(偏置)

BP&BPTT

  • 在学习DNN时我们学习过反向传播算法BP,它用来反向传播误差,然后根据梯度下降调整误差,在RNN中用到的训练算法是随时间的反向传播算法BPTT(Backpropagation through time),经常会有考题来对比BT与BPTT,实际上两者的思想是共通的,有以下要点有注意:
  1. BPTT参数共享,每个时刻训练的都是相同的参数W和b(因为RNN是一个在时序上循环的结构)
  2. BPTT损失函数定义为每一个时刻的损失函数之和,它会在每一个时间步长内叠加所有对应权重的梯度。

梯度消失/梯度爆炸

  • 【一起入门NLP】中科院自然语言处理第*课-前馈神经网络DNN(反向传播+梯度下降) 在这篇文章中我们已经介绍过了梯度消失问题和梯度爆炸问题。

  • 在RNN的训练过程中也会出现与DNN相似的梯度消失/爆炸问题(更经常出现的是梯度消失问题),导致训练教难。

RNN改进及变形

参考:http://colah.github.io/posts/2015-08-Understanding-LSTMs/

LSTM

  • LSTM用来解决普通RNN模型存在的长距离依赖问题:距当前节点越远的节点对当前节点处理影响越小,无法建模长时间依赖

  • RNN由很多循环的单元构成,在标准的RNN中,这个重复的单元只有一个非常简单的结构,比如一个tahn层。

  • LSTM同样也是循环的结构,只是这个重复的单元开始变得复杂起来。
    【一起入门NLP】中科院自然语言处理第5课-循环神经网络RNN(BPTT+LSTM+GRU)_第2张图片

  • 在上面的图例中,每一条黑线传输着一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表 pointwise 的操作,诸如向量的和,而黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置。
    【一起入门NLP】中科院自然语言处理第5课-循环神经网络RNN(BPTT+LSTM+GRU)_第3张图片

  • LSTM 的关键就是细胞状态,水平线在图上方贯穿运行。 细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。
    【一起入门NLP】中科院自然语言处理第5课-循环神经网络RNN(BPTT+LSTM+GRU)_第4张图片

  • LSTM 有通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择式通过的方法。他们包含一个 sigmoid 神经网络层和一个 pointwise 乘法操作。下图是一个门结构:
    【一起入门NLP】中科院自然语言处理第5课-循环神经网络RNN(BPTT+LSTM+GRU)_第5张图片

  • Sigmoid 层输出 0 到 1 之间的数值,描述每个部分有多少量可以通过。0 代表“不许任何量通过”,1 就指“允许任意量通过”。LSTM 拥有三个门,来保护和控制细胞状态。

  • 遗忘门:决定从细胞状态中丢弃什么信息。
    【一起入门NLP】中科院自然语言处理第5课-循环神经网络RNN(BPTT+LSTM+GRU)_第6张图片

  • 输入门:决定什么样的新信息会被存入细胞状态
    【一起入门NLP】中科院自然语言处理第5课-循环神经网络RNN(BPTT+LSTM+GRU)_第7张图片

  • 输出门:决定输出什么样的值
    【一起入门NLP】中科院自然语言处理第5课-循环神经网络RNN(BPTT+LSTM+GRU)_第8张图片

  • LSTM都只能依据之前时刻的时序信息来预测下一时刻的输出,但在有些问题中,当前时刻的输出不仅和之前的状态有关,还可能和未来的状态有关系。比如预测一句话中缺失的单词不仅需要根据前文来判断,还需要考虑它后面的内容,真正做到基于上下文判断。

  • 所谓的Bi-LSTM可以看成是两层神经网络,第一层从左边作为系列的起始输入,在文本处理上可以理解成从句子的开头开始输入,而第二层则是从右边作为系列的起始输入,在文本处理上可以理解成从句子的最后一个词语作为输入,反向做与第一层一样的处理处理。最后对得到的两个结果进行处理。

GRU

  • GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种,和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。

  • 可以将GRU理解为LSTM的简化,它将输入门和遗忘门合并为更新门(更新门决定隐状态保留或者放弃哪些部分),不再有输出门,而是一个重置门。
    【一起入门NLP】中科院自然语言处理第5课-循环神经网络RNN(BPTT+LSTM+GRU)_第9张图片

LSTM VS GRU

  1. 门结构不同
  • LSTM:输入门+遗忘门+输出门
  • GRU:更新门+重置门
  1. 模型参数不同
  • GRU比LSTM更加简单,参数更少
  1. 对memory 的控制不同
  • LSTM: 用output gate 控制,传输给下一个unit。
  • GRU:直接传递给下一个unit,不做任何控制。

期末题库中与本节相关的题可以看这篇博客:
【一起入门MachineLearning】中科院机器学习-期末题库-【单选题62,79,80】

RNN网络的pytorch实现可以参考这次的作业:
NLP作业一:RNN,DNN,CNN 进行猫狗分类(pytorch入门)【代码+报告】

你可能感兴趣的:(自然语言处理,rnn,自然语言处理,lstm,BPTT,胡玥)