RNN
标签
AI
DL
ML
NLP
字数
654 字
阅读时间
4 分钟
RNN是一种经典用于处理序列的模型。Transformer也可以处理序列。
Neurons with Recurrence
序列任务的分类:n对n
.2iVpqMUr.png)
我们如果可以利用前一次预测的隐藏内容(隐藏h),那么就可以处理序列内容。
.BX4zE3uA.png)
Vanilla RNN
.32AeM4W1.png)
具体来说,内部是这样的,在每个时间步重复使用相同的权重矩阵:
.qJNB-fLV.png)
序列模型的要求以及rnn都满足了。
.DlNk0YSN.png)
序列模型问题:预测下一个单词
任务定义:
.DxQJIAUe.png)
单词想要被网络接受,就需要embedding
.C9D5yEfj.png)
时间上的反向传播 Backpropagation Through Time(BPTT)
.J42WimwM.png)
由于长序列,这种网络很容易梯度爆炸,或者梯度消失。
梯度爆炸解决方法:梯度clipping
梯度消失解决方法:Activation Function选个好的,或者weight initialization用个好方法,或者调整网络架构(GRU LSTM)
LSTM
普通RNN长这样:
.DEccvLhQ.png)
而LSTM长这样
.BUTYRRRc.png)
.CtbfFePE.png)
.f27BcDxu.png)
.DLfWvz-5.png)
.a4uJJLBy.png)
.zJ1kvs6N.png)
- 保持与输出不同的单元状态
- 使用门控制信息流
• 遗忘门消除不相关信息
• 存储当前输入的相关信息
• 有选择地更新单元状态
• 输出门返回单元状态的经过滤的版本
- 通过时间的反向传播,保持梯度流畅。
RNN Applications
- 情感分类
.DvIG-XG4.png)
- 机器翻译
.CyHJvfQL.png)
- 音乐生成
.CZcpOBq1.png)
- 图片描述
.BQk5nyFq.png)
总结
- RNN非常适合序列建模任务
- 通过递归关系对序列进行建模
- 使用时间反向传播训练RNN
- 门控单元如LSTM允许我们建模长期依赖