第七篇:循环神经网络

Posted flying_1314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第七篇:循环神经网络相关的知识,希望对你有一定的参考价值。

阅读本文之前,大家可以稍微看一下这篇文章,有助于理解:浅谈RNN,LSTM和GRU

目录

循环神经网络 (RNN)

RNN 展开

RNN 训练

语言模型……解决了吗?

长短期记忆 (LSTM)

LSTM vs. Simple RNN

LSTM:遗忘门

LSTM:输入门

LSTM:更新记忆单元

LSTM:输出门

LSTM:总结

变体

• PeepHole窥孔连接

• 门控循环单元 (GRU)

多层 LSTM

双向 LSTM

应用

莎士比亚生成器

文本分类

序列标记

总结


循环神经网络 (RNN)

• RNN 允许表示任意大小的输入
• 核心思想:通过应用递推公式一次处理一个输入序列
• 使用状态向量来表示先前已处理过的上下文

s_{i} = f(s_{i-1}, x_{i})

Si:新的状态

Si-1:前一个状态

xi:当前输入

f:带参数的函数

RNN 展开

所有时间步长共享相同的参数

RNN 训练

• 展开的 RNN 只是一个非常深的深度神经网络
• 但在多个时间步长中共享相同的参数
• 要训练 RNN,我们只需要在给定输入序列的情况下创建展开的计算图
• 并像往常一样使用反向传播算法计算梯度
• 此过程称为时间反向传播

语言模型……解决了吗?

• RNN 能够模拟无限上下文
• 但它实际上能否在实践中捕获长期依赖关系?
• 没有……因为“梯度消失”
• 在反向传播过程中,后面步骤中的梯度会迅速减小
• 较早的输入没有得到太多更新

长短期记忆 (LSTM)

• 引入 LSTM 来解决梯度消失问题
• 核心理念:拥有“记忆单元”,可以随时间保持梯度
• 对存储单元的访问由“门”控制
• 对于每个输入,门决定:
    ‣ 新输入应写入内存单元的量
    ‣ 以及当前记忆单元的多少内容应该被遗忘

• 门 g 是一个向量
    ‣ 每个元素的值在 0 到 1 之间
• g 与向量 v 逐分量相乘,以确定要为 v 保留多少信息
• 使用 sigmoid 函数使 g 的值接近 0 或 1

LSTM vs. Simple RNN

基本RNN,就是一个tanh函数

LSTM,里面引入门控机制和cell状态

接下来挨个门分析

LSTM:遗忘门

• 控制在存储单元 (Ct-1) 中“忘记”多少信息
• The cats that the boy likes
• 记忆细胞储存代词信息(cats)
• 单元格现在应该忘记cats 并存储boy 以正确预测单数动词likes

LSTM:输入门

• 输入门控制将多少新信息放入内存单元
\\tilde{C}_{t}= 要添加的新提炼信息
‣ 例如 关于上面的boy的信息

LSTM:更新记忆单元

• 使用前面两部分的遗忘门和输入门更新记忆单元

LSTM:输出门

• 输出门控制提取存储单元的内容以创建下一个状态 (ht) 的程度

LSTM:总结

把之前涉及到的公式也综合起来,如下:

变体

• PeepHole窥孔连接


    ‣ 允许门查看细胞状态

• 门控循环单元 (GRU)


    ‣ 仅有 2 个门的简化变体

多层 LSTM

双向 LSTM

应用

莎士比亚生成器

• 训练数据 = 莎士比亚的所有作品
• 模型:3 层字符 RNN,隐藏维度 = 512

文本分类

• 循环网络可用于各种 NLP 任务
• 特别适用于单词顺序很重要的任务,例如 情感分类

序列标记

• RNN 特别适用于序列标记问题,例如 词性标注

总结

• 优点
  ‣ 能够捕获远程上下文
  ‣ 优秀的泛化能力
  ‣ 就像前馈网络一样:灵活,可以用于各种任务
  ‣ 多个 NLP 任务中的通用组件
• 缺点
  ‣ 由于顺序处理,比前馈网络慢
  ‣ 在实践中仍然不能很好地捕获长距离依赖(生成长文本时很明显)

OK,辛苦大家观看,今天关于RNN循环神经的网络就讲到这里,有问题欢迎随时评论交流,本章RNN部分可能描述不是很多,如有需要,可以看我之前的一篇文章:浅谈RNN,LSTM和GRU

以上是关于第七篇:循环神经网络的主要内容,如果未能解决你的问题,请参考以下文章

pytorch实战学习第七篇:tensorboard可视化介绍

Pytorch深度学习50篇·······第七篇:GAN生成对抗网络---PIX2PIX

第七篇函数二

第七篇微信小程序-video组件

python 基础第七篇

Python之路第七篇:初识Socket