RNN--学习笔记

  1. RNN引入“记忆”的概念,即输出需要依赖于之前的输入序列,并把关键输入记住。循环2字来源于其每个元素都执行相同的任务;并⾮刚性地记忆所有固定⻓度的序列,而是通过隐藏状态来存储之前时间步的信息。
  2. 不同类型的RNN:RNN--学习笔记_第1张图片
    1. One to many:音乐生成,目标是使用一个神经网络输出一些音符。对应于一段音乐,输入 可以是一个整数,表示想要的音乐类型或者是想要的音乐的第一个音符,并且如果什么都不想输入, 可以是空的输入,可设为 0 向量。
    2. Many to one:句子分类问题,输入文档,输出文档的类型。
    3. Many to many():命名实体识别。
    4. Many to many():机器翻译。
  3. 由于RNN特有的memory会影响后期其他的RNN的特点,梯度时大时小,learning rate没法个性化的调整,导致RNN在train的过程中,Loss会震荡起伏,为了解决RNN的这个问题,在训练的时候,可以设置临界值,当梯度大于某个临界值,直接截断,用这个临界值作为梯度的大小,防止大幅震荡。
  4. 门控循环单元(GRU):
    1. 提出背景:
      1. 当时间步数较大或者时间步较小时,循环神经⽹络的梯度较容易出现衰减或爆炸。虽然裁剪梯度可以应对梯度爆炸,但无法解决梯度衰减的问题。通常由于这个原因,循环神经网络在实际中较难捕捉时间序列中时间步距离较大的依赖关系。
      2. 门控循环神经网络(gated recurrent neural network)的提出,正是为了更好地捕捉时间序列中时间步距离较大的依赖关系。它通过可以学习的门来控制信息的流动。其中,门控循环单元(gatedrecurrent unit,GRU)是⼀种常用的门控循环神经网络。
    2. GRU引⼊了重置门(reset gate)和更新门(update gate)的概念,从而修改了循环神经网络中隐藏状态的计算方式。
    3. 门控循环单元中的重置门和更新门的输入均为当前时间步输入x_t与上⼀时间步隐藏状态h_(t-1),输出由激活函数为sigmoid函数的全连接层计算得到:RNN--学习笔记_第2张图片
    4. 候选隐藏状态:将当前时间步重置门的输出与上⼀时间步隐藏状态做按元素乘法(符号为⊙)。如果重置门中元素值接近0,那么意味着重置对应隐藏状态元素为0,即丢弃上⼀时间步的隐藏状态。如果元素值接近1,那么表⽰保留上⼀时间步的隐藏状态。然后,将按元素乘法的结果与当前时间步的输⼊连结,再通过含激活函数tanh的全连接层计算出候选隐藏状态,其所有元素的值域为[-1,1]:RNN--学习笔记_第3张图片
    5. 重置门控制了上⼀时间步的隐藏状态如何流⼊当前时间步的候选隐藏状态。而上⼀时间步的隐藏状态可能包含了时间序列截⾄上⼀时间步的全部历史信息。因此,重置门可以⽤来丢弃与预测无关的历史信息。
    6. 隐藏状态:时间步t的隐藏状态的计算使用当前时间步的更新门Z_t来对上⼀时间步的隐藏状态 H_(t-1)和当前时间步的候选隐藏状态H_t^做组合:RNN--学习笔记_第4张图片
    7. 更新门可以控制隐藏状态应该如何被包含当前时间步信息的候选隐藏状态所更新,这个设计可以应对循环神经⽹络中的梯度衰减问题,并更好地捕捉时间序列中时间步距离较⼤的依赖关系。
    8. 总结:
      1. 重置门有助于捕捉时间序列里短期的依赖关系;
      2. 更新门有助于捕捉时间序列里长期的依赖关系。
  5. 短期记忆(long short-term memory,LSTM):
    1. 与门控循环单元中的重置门和更新门⼀样,长短期记忆的门的输入均为当前时间步输入x_t与上⼀时间步隐藏状态 h_(t-1),输出由激活函数为sigmoid函数的全连接层计算得到。如此⼀来,这3个门元素的值域均为[0, 1]:RNN--学习笔记_第5张图片
    2. 候选记忆细胞:RNN--学习笔记_第6张图片
    3. 记忆细胞:
      1. 前时间步记忆细胞的计算组合了上⼀时间步记忆细胞和当前时间步候选记忆细胞的信息,并通过遗忘门和输入门来控制信息的流动
      2. 遗忘门控制上⼀时间步的记忆细胞 c_(t-1)中的信息是否传递到当前时间步,而输入门则控制当前时间步的输入x_t通过候选记忆细胞c_t^如何流⼊当前时间步的记忆细胞:RNN--学习笔记_第7张图片
    4. 隐藏状态:通过输出门来控制从记忆细胞到隐藏状态h_t的信息的流动:RNN--学习笔记_第8张图片
  6. LSTM与GRU二者结构十分相似,不同在于:
    1. 新的记忆都是根据之前状态及输入进行计算,但是GRU中有一个重置门控制之前状态的进入量,而在LSTM里没有类似门;
    2. 产生新的状态方式不同,LSTM有两个不同的门,分别是遗忘门(forget gate)和输入门(input gate),而GRU只有一种更新门(update gate);
    3. LSTM对新产生的状态可以通过输出门(output gate)进行调节,而GRU对输出无任何调节。
    4. GRU的优点是这是个更加简单的模型,所以更容易创建一个更大的网络,而且它只有两个门,在计算性上也运行得更快,然后它可以扩大模型的规模。
    5. LSTM更加强大和灵活,因为它有三个门而不是两个。
  7. 在LSTM中,遗忘门、输入门和输出门使用Sigmoid函数作为激活函数;在生成候选记忆时,使用双曲正切函数Tanh作为激活函数。这两个激活函数都是饱和的,也就是说在输入达到一定值的情况下,输出就不会发生明显变化了。如果是用非饱和的激活函数,例如ReLU,那么将难以实现门控的效果。
  8. Sigmoid函数的输出在0~1之间,符合门控的物理定义。且当输入较大或较小时,其输出会非常接近1或0,从而保证该门开或关。在生成候选记忆时,使用Tanh函数,是因为其输出在−1~1之间,这与大多数场景下特征分布是0中心的吻合。此外,Tanh函数在输入为0附近相比Sigmoid函数有更大的梯度,通常使模型收敛更快。
  9. 采用RNN训练时不推荐使用batch normalization方法解决过拟合问题

你可能感兴趣的:(deeplearning,自然语言处理,深度学习,神经网络)