【图解】循环神经网络RNN

共 1690字,需浏览 4分钟

 ·

2021-12-14 13:24


点击上方蓝字,选择加"星标"或“置顶

重磅干货,第一时间送达

作者:zhenguo,深度学习研究院


神经网络是深度学习的载体,而神经网络模型中,最经典非RNN模型所属,尽管它不完美,但它具有学习历史信息的能力。后面不管是Encoder-Decoder 框架,还是注意力模型,以及自注意力模型,以及更加强大的Bert模型家族,都是站在RNN的肩上,不断演化、变强的。

这篇文章,阐述了RNN的方方面面,包括模型结构,优缺点,RNN模型的几种应用,RNN常使用的激活函数,RNN的缺陷,以及GRU,LSTM是如何试图解决这些问题,RNN变体等。

这篇文章最大特点是图解版本,其次语言简练,总结全面。


概述

传统RNN的体系结构。Recurrent neural networks,也称为RNNs,是一类允许先前的输出用作输入,同时具有隐藏状态的神经网络。它们通常如下所示:

对于每一时步 , 激活函数   ,输出 被表达为:

这里 是时间维度网络的共享权重系数

是激活函数

下表总结了典型RNN架构的优缺点:

优点缺点
处理任意长度的输入计算速度慢
模型形状不随输入长度增加难以获取很久以前的信息
计算考虑了历史信息无法考虑当前状态的任何未来输入
权重随时间共享


RNNs应用


RNN模型主要应用于自然语言处理和语音识别领域。下表总结了不同的应用:

RNN 类型图解例子
1对1

传统神经网络
1对多

音乐生成
多对1

情感分类
多对多

命名实体识别
多对多

机器翻译

损失函数

对于RNN网络,所有时间步的损失函数 是根据每个时间步的损失定义的,如下所示:

时间反向传播

在每个时间点进行反向传播。在时间步,损失相对于权重矩阵的偏导数表示如下:


处理长短依赖

常用激活函数

RNN模块中最常用的激活函数描述如下:

SigmoidTanhRELU



梯度消失/爆炸

在RNN中经常遇到梯度消失和爆炸现象。之所以会发生这种情况,是因为很难捕捉到长期的依赖关系,因为乘法梯度可以随着层的数量呈指数递减/递增。

梯度修剪

梯度修剪是一种技术,用于执行反向传播时,有时遇到的梯度爆炸问题。通过限制梯度的最大值,这种现象在实践中得以控制。


门的类型

为了解决消失梯度问题,在某些类型的RNN中使用特定的门,并且通常有明确的目的。它们通常标注为,等于:

其中,是特定于门的系数,是sigmoid函数。主要内容总结如下表:

门的种类作用应用
更新门 过去对现在有多重要?GRU, LSTM
关联门 丢弃过去信息?GRU, LSTM
遗忘门 是不是擦除一个单元?LSTM
输出门 暴露一个门的多少?LSTM

GRU/LSTM

Gated Recurrent Unit(GRU)和长-短期记忆单元(LSTM)处理传统RNNs遇到的消失梯度问题,LSTM是GRU的推广。下表总结了每种结构的特征方程:


注:符号表示两个向量之间按元素相乘。

RNN的变体

下表总结了其他常用的RNN模型:

Bidirectional (BRNN)Deep (DRNN)


参考文献
https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-recurrent-neural-networks


下载1:Pytoch常用函数手册
在「深度学习爱好者」公众号后台回复:Pytorch常用函数手册即可下载全网第一份Pytorch常用函数手册,涵盖Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多线程处理等十四章章内容。


END

声明:部分内容来源于网络,仅供读者学术交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

推荐阅读

  1. 决策树可视化,被惊艳到了!
  2. 开发机器学习APP,太简单了
  3. 周志华教授:关于深度学习的一点思考
  4. 200 道经典机器学习面试题总结
  5. 卷积神经网络(CNN)数学原理解析


如有收获,欢迎三连👇

浏览 75
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报