Skip to content

RNN

标签
AI
DL
ML
NLP
字数
654 字
阅读时间
4 分钟

RNN是一种经典用于处理序列的模型。Transformer也可以处理序列。

Neurons with Recurrence

序列任务的分类:n对n

我们如果可以利用前一次预测的隐藏内容(隐藏h),那么就可以处理序列内容。

Vanilla RNN

具体来说,内部是这样的,在每个时间步重复使用相同的权重矩阵:

序列模型的要求以及rnn都满足了。

序列模型问题:预测下一个单词

任务定义:

单词想要被网络接受,就需要embedding

时间上的反向传播 Backpropagation Through Time(BPTT)

由于长序列,这种网络很容易梯度爆炸,或者梯度消失。

梯度爆炸解决方法:梯度clipping

梯度消失解决方法:Activation Function选个好的,或者weight initialization用个好方法,或者调整网络架构(GRU LSTM)

LSTM

普通RNN长这样:

而LSTM长这样

  1. 保持与输出不同的单元状态
  2. 使用门控制信息流

• 遗忘门消除不相关信息

• 存储当前输入的相关信息

• 有选择地更新单元状态

• 输出门返回单元状态的经过滤的版本

  1. 通过时间的反向传播,保持梯度流畅。

RNN Applications

  • 情感分类
  • 机器翻译
  • 音乐生成
  • 图片描述

总结

  1. RNN非常适合序列建模任务
  2. 通过递归关系对序列进行建模
  3. 使用时间反向传播训练RNN
  4. 门控单元如LSTM允许我们建模长期依赖

贡献者

文件历史