RNN 图解版

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

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

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

概述

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

对于每一时步

t

, 激活函数

a^{< t >}

,输出

y^{< t >}

被表达为:

\boxed{a^{< t >}=g_1(W_{aa}a^{< t-1 >}+W_{ax}x^{< t >}+b_a)}\quad
\quad\boxed{y^{< t >}=g_2(W_{ya}a^{< t >}+b_y)}

这里

W_{ax}, W_{aa}, W_{ya}, b_a, b_y

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

g_1, g_2

是激活函数

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

优点

缺点

处理任意长度的输入

计算速度慢

模型形状不随输入长度增加

难以获取很久以前的信息

计算考虑了历史信息

无法考虑当前状态的任何未来输入

权重随时间共享

RNNs应用

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

RNN 类型

图解

例子

1对1

传统神经网络

1对多

音乐生成

多对1

情感分类

多对多

命名实体识别

多对多

机器翻译

损失函数

对于RNN网络,所有时间步的损失函数

\mathcal{L}

是根据每个时间步的损失定义的,如下所示:

\boxed{\mathcal{L}(\widehat{y},y)=\sum_{t=1}^{T_y}\mathcal{L}(\widehat{y}^{< t >},y^{< t >})}

时间反向传播

在每个时间点进行反向传播。在时间步

T

,损失

\mathcal{L}

相对于权重矩阵

W

的偏导数表示如下:

\boxed{\frac{\partial \mathcal{L}^{(T)}}{\partial W}=\sum_{t=1}^T\left.\frac{\partial\mathcal{L}^{(T)}}{\partial W}\right|_{(t)}}

处理长短依赖

常用激活函数

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

Sigmoid

Tanh

RELU

梯度消失/爆炸

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

梯度修剪

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

门的类型

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

\Gamma

,等于:

\boxed{\Gamma=\sigma(Wx^{< t >}+Ua^{< t-1 >}+b)}

其中,

W,U,b

是特定于门的系数,

\sigma

是sigmoid函数。主要内容总结如下表:

门的种类

作用

应用

更新门

过去对现在有多重要?

GRU, LSTM

关联门

丢弃过去信息?

GRU, LSTM

遗忘门

是不是擦除一个单元?

LSTM

输出门

暴露一个门的多少?

LSTM

\Gamma_u

过去对现在有多重要?GRU, LSTM关联门

\Gamma_r

丢弃过去信息?GRU, LSTM遗忘门

\Gamma_f

是不是擦除一个单元?LSTM输出门

\Gamma_o

暴露一个门的多少?LSTM

GRU/LSTM

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

注:符号

\star

表示两个向量之间按元素相乘。

RNN的变体

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

Bidirectional (BRNN)

Deep (DRNN)

参考文献:

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

本文分享自微信公众号 - Python与机器学习算法频道(alg-channel),作者:zhenguo

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 图解RNN

    参考视频 RNN-Recurrent Neural Networks ---- 本文结构: 什么是 Recurrent Neural Networks ? R...

    杨熹
  • 完全图解RNN、RNN变体、Seq2Seq、Attention机制

    本文主要是利用图片的形式,详细地介绍了经典的RNN、RNN几个重要变体,以及Seq2Seq模型、Attention机制。希望这篇文章能够提供一个全新的视角,帮助...

    AI研习社
  • [深度学习概念]·完全图解RNN、RNN变体、Seq2Seq、Attention机制

    看到一篇讲的很透彻的文章,来自何之源大牛。划线部分是自己的一下理解和补充,供大家参考。。

    小宋是呢
  • 干货 | 完全图解RNN、RNN变体、Seq2Seq、Attention机制

    AI科技评论按:本文作者何之源,原文载于知乎专栏AI Insight,AI科技评论获其授权发布。 本文主要是利用图片的形式,详细地介绍了经典的RNN、RNN几个...

    AI科技评论
  • 动态图解释 RNN、LSTM和GRU

    循环神经网络(Recurrent Neural Network, RNN),RNN常用来处理序列式问题,以序列数据为输入来进行建模的深度学习模型,RNN是NLP...

    木野归郎
  • 从动图中理解 RNN,LSTM 和 GRU

    递归神经网络(RNNs)是一类常用的序列数据人工神经网络。三种最常见的递归神经网络类型分别是:

    AI研习社
  • 开发 | TensorFlow中RNN实现的正确打开方式

    上周写的文章《完全图解RNN、RNN变体、Seq2Seq、Attention机制》介绍了一下RNN的几种结构,今天就来聊一聊如何在TensorFlow中实现这些...

    AI科技评论
  • TensorFlow 中 RNN 实现的正确打开方式

    上周写的文章《完全图解 RNN、RNN 变体、Seq2Seq、Attention 机制》介绍了一下 RNN 的几种结构,今天就来聊一聊如何在 TensorFlo...

    AI研习社
  • RNN循环神经网络之通俗理解!

    循环神经网络RecurrentNeural Network (RNN),是一个拥有对时间序列显示建模能力的神经网络。RNN相对于传统前馈神经网络的“循环”之处具...

    智能算法

扫码关注云+社区

领取腾讯云代金券