首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >记忆网络RNN、LSTM与GRU

记忆网络RNN、LSTM与GRU

作者头像
用户1147754
发布于 2018-01-02 09:31:07
发布于 2018-01-02 09:31:07
1.6K0
举报
文章被收录于专栏:YoungGyYoungGy
  • RNN
    • 结构
    • 训练
    • 应用
  • RNN Variants
  • LSTM
    • 结构
    • 梯度消失及梯度爆炸
  • GRU
    • 结构

一般的神经网络输入和输出的维度大小都是固定的,针对序列类型(尤其是变长的序列)的输入或输出数据束手无策。RNN通过采用具有记忆的隐含层单元解决了序列数据的训练问题。LSTM、GRU属于RNN的改进,解决了RNN中梯度消失爆炸的问题,属于序列数据训练的常用方案。

RNN

结构

传统的神经网络的输入和输出都是确定的,RNN的输入和输出都是不确定的sequence数据。其结构如下:

具体地,RNN有隐含层,隐含层也是记忆层,其状态(权值)会传递到下一个状态中。

htyt=σ(xtWxh+ht−1Whh)=σ(htWhy)

\begin{split} h^t &= \sigma(x^tW_{xh} + h^{t-1}W_{hh}) \\ y^t &= \sigma(h^tW_{hy}) \end{split}

训练

训练步骤如下:

  1. 构建损失函数
  2. 求损失函数对权值的梯度
  3. 采用梯度下降法更新权值参数

关于损失函数,根据需要选择构建即可,下面提供两种常见的损失函数:

CC=12∑n=1N||yn−ŷ n||2=12∑n=1N−logynrn

\begin{split} C &= \frac{1}{2}\sum_{n=1}^N ||y^n-{\hat{y}}^n||^2 \\ C &= \frac{1}{2}\sum_{n=1}^N -\log y_{r^n}^n \end{split}

关于梯度下降,采用BPTT(Backpropagation through time)算法,该算法的核心是对每一个时间戳,计算该时间戳中权重的梯度,然后更新权重。需要注意的是,不同时间戳同样权重的梯度可能是不一样的,如下图所示都减去,相当于更新同一块内存区域中的权重。

应用

  • 多对多:词性标注pos tagging、语音识别、name entity recognition(区分poeple、organizations、places、information extration(区分place of departure、destination、time of departure、time of arrival, other)、机器翻译
  • 多对一:情感分析
  • 一对多:caption generation

RNN Variants

RNN的变种大致包含下面3个思路:

  • 增加隐含层的输入参数:例如除了ht−1,xth^{t-1}, x^t,还可以包含yt−1y^{t-1}作为输入。
  • 增加隐含层的深度
  • 双向RNN

LSTM

结构

  • 单个时间戳,RNN输入1个x,输出1个y
  • 单个时间戳,LSTM输入4个x,输出1个y

相比RNN,LSTM的输入多了3个x,对应3个gate,这3个gate分别是:

  • input gate:控制输入
  • forget gate:控制cell
  • output gate:控制输出

涉及到的激活函数共5个,其中3个控制gate的(通常用sigmoid函数,模拟gate的开闭状态),1个作用于输入上,一个作用于cell的输出上。

LSTM单个时间戳的具体执行如下:

  • 输入:4个输入xx,1个cell的状态cc
  • 输出:1个输出aa,1个更新的cell状态c′c'

c′a=g(z)f(zi)+cf(zf)=h(c′)f(zo)

\begin{split} c' &= g(z)f(z_i) + cf(z_f) \\ a &= h(c')f(z_o) \end{split}

梯度消失及梯度爆炸

首先,要明白RNN中梯度消失与梯度爆炸的原因:在时间戳的更新中,cell的状态不断乘以WhhW_{hh}。简单起见,视WhhW_{hh}为scalar值ww,那么y=xwny=xw^n,∂y∂w=nxwn−1\frac{\partial{y}}{\partial{w}}=nxw^{n-1}。根据ww的值与1的大小关系,梯度会消失或者爆炸。

接下来,要明白LSTM如何解决RNN中梯度消失与爆炸的问题。

针对梯度消失,RNN中当获取c′c'的梯度后,因为c′=cwc' = cw,为了backward获得cc的梯度,要将c′c'的梯度乘以ww;LSTM中存在梯度的快速通道,获取c′c'的梯度后,因为c′=g(z)f(zi)+cf(zf)c' = g(z)f(z_i)+cf(z_f),当forget gate打开时,c′=g(z)f(zi)+cc' = g(z)f(z_i)+c。c′c'的梯度可以直接传递给cc。 总结来说,LSTM相比RNN,将c,c′c,c'的更新关系从乘法变成了加法,因此不用乘以权值系数ww,c′c'的梯度可以直接传递给cc,解决了梯度消失的问题。

针对梯度爆炸,即使将c,c′c,c'的关系由乘法变成了加法,仍然解决不了梯度爆炸。原因便是梯度的路径不止一条,如下图所示,红色的块仍然可能造成梯度爆炸。LSTM解决这个问题的方法是clip,也就是设置梯度最大值,超过最大值的按最大值计。

GRU

结构

GRU相比LSTM的3个gate,只用了两个gate:

  • update gate:ztz_t
  • reset gate:rtr_t
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
NLP教程(5) - 语言模型、RNN、GRU与LSTM
本系列为斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》的全套学习笔记,对应的课程视频可以在 这里 查看。
ShowMeAI
2022/05/08
8540
NLP教程(5) - 语言模型、RNN、GRU与LSTM
RNN及其变种LSTM/GRU/SRU
在某轮迭代tt中考虑公式5、6,用于计算RNN错误 ,我们对每一步迭代计算错误率总和。那么每一步tt的错误率 均可通过前面所列的计算出来。
百川AI
2021/12/31
1K0
RNN及其变种LSTM/GRU/SRU
【串讲总结】RNN、LSTM、GRU、ConvLSTM、ConvGRU、ST-LSTM
平时很少写总结性的文章,感觉还是需要阶段性总结一些可以串在一起的知识点,所以这次写了下。因为我写的内容主要在时序、时空预测这个方向,所以主要还是把rnn,lstm,gru,convlstm,convgru以及ST-LSTM
千与编程
2023/04/28
2.7K0
【串讲总结】RNN、LSTM、GRU、ConvLSTM、ConvGRU、ST-LSTM
【综述专栏】循环神经网络RNN(含LSTM,GRU)小综述
在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。
马上科普尚尚
2021/01/13
5.3K0
【综述专栏】循环神经网络RNN(含LSTM,GRU)小综述
三次简化一张图:一招理解LSTM/GRU门控机制
近些年,深度学习模型在处理有非常复杂内部结构的数据时十分有效。例如,图像数据的像素之间的 2 维空间关系非常重要,CNN(convolution neural networks,卷积神经网络)处理这种空间关系十分有效。而时序数据(sequential data)的变长输入序列之间时序关系非常重要,RNN(recurrent neural networks,循环神经网络,注意和 recursive neural networks,递归神经网络的区别)处理这种时序关系十分有效。
机器之心
2018/12/28
1K0
三次简化一张图:一招理解LSTM/GRU门控机制
循环神经网络(二) ——GRU、LSTM、BRNN、deep RNN
循环神经网络(二) ——GRU、LSTM、BRNN、deep RNN (原创内容,转载请注明来源,谢谢) 一、概述 本文主要讲述RNN的其他结构,这些结构比RNN更常用,而且对于自然语言处理,有更高效
用户1327360
2018/03/29
4K0
循环神经网络(二) ——GRU、LSTM、BRNN、deep RNN
吴恩达deeplearning.ai五项课程完整笔记了解一下?
来源:机器之心 通过本文为大家解读如何构建自然语言、音频和其他序列数据的模型。 自吴恩达发布 deeplearning.ai 课程以来,很多学习者陆续完成了所有专项课程并精心制作了课程笔记。上个月,deep learning.ai 第五课发布,该系列课程最终结课。Mahmoud Badry 在 GitHub 上开源了五项课程的完整笔记,介绍了包括序列模型在内的详细知识点。我们简要介绍了该项目,并重点描述了第五项课程序列模型。 项目地址:https://github.com/mbadry1/DeepLea
数据派THU
2018/03/22
1.2K0
吴恩达deeplearning.ai五项课程完整笔记了解一下?
深度学习基础入门篇-序列模型[11]:循环神经网络 RNN、长短时记忆网络LSTM、门控循环单元GRU原理和应用详解
生活中,我们经常会遇到或者使用一些时序信号,比如自然语言语音,自然语言文本。以自然语言文本为例,完整的一句话中各个字符之间是有时序关系的,各个字符顺序的调换有可能变成语义完全不同的两句话,就像下面这个句子:
汀丶人工智能
2023/05/24
1.6K0
深度学习基础入门篇-序列模型[11]:循环神经网络 RNN、长短时记忆网络LSTM、门控循环单元GRU原理和应用详解
【AI前沿】深度学习基础:循环神经网络(RNN)
循环神经网络(RNN)与传统的前馈神经网络(如多层感知器和卷积神经网络)不同,RNN具有内存能力,能够在处理当前输入时保留之前的信息。这使得RNN特别适合处理序列数据,如文本、语音和时间序列等。
屿小夏
2024/07/13
5000
【AI前沿】深度学习基础:循环神经网络(RNN)
长短时记忆网络(LSTM)完整实战:从理论到PyTorch实战演示
人工神经网络(ANN)的设计灵感来源于人类大脑中神经元的工作方式。自从第一个感知器模型(Perceptron)被提出以来,人工神经网络已经经历了多次的演变和优化。
TechLead
2023/10/21
23K0
长短时记忆网络(LSTM)完整实战:从理论到PyTorch实战演示
从90年代的SRNN开始,纵览循环神经网络27年的研究进展
选自arXiv 作者:Hojjat Salehinejad等 机器之心编译 参与:刘晓坤、路雪、蒋思源 近日,来自多伦多大学和滑铁卢大学的研究者撰文介绍循环神经网络的基础知识、近期发展和面临的挑战。机
机器之心
2018/05/11
7870
斯坦福cs224d 语言模型,RNN,LSTM与GRU
翻译:@胡杨(superhy199148@hotmail.com) && @胥可(feitongxiaoke@gmail.com)  校对调整:寒小阳 && 龙心尘 时间:2016年7月  出处:http://blog.csdn.net/han_xiaoyang/article/details/51932536
bear_fish
2018/09/19
6620
斯坦福cs224d 语言模型,RNN,LSTM与GRU
深度学习教程 | 序列模型与RNN网络
本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整理所得,对应的课程视频可以在这里查看。
ShowMeAI
2022/04/15
6190
深度学习教程 | 序列模型与RNN网络
深度学习基础 | RNN家族全面解析
【定义】当很多的层都用特定的激活函数(尤其是sigmoid函数),损失函数的梯度会趋近于0,因此模型更加不容易训练。(As more layers using certain activation functions are added to neural networks, the gradients of the loss function approaches zero, making the network hard to train.)
NewBeeNLP
2021/10/20
1.3K0
动图详解LSTM和GRU
反向传播(Back Propagation)是一种与最优化方法(比如梯度下降方法)结合、用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度,然后将梯度反馈给最优化方法,用来更新网络权重以最小化损失函数。
YoungTimes
2022/04/28
1.2K0
动图详解LSTM和GRU
循环神经网络(RNN)与LSTM
循环神经网络(Recurrent Neural Networks, RNN)是一种专门用于处理序列数据的神经网络。RNN通过将前一个时间步的输出反馈到当前时间步,使得模型能够“记住”之前的输入信息,从而适合处理时间序列或文本等有序数据。
LucianaiB
2025/01/24
7540
RNN与LSTM之间的介绍和公式梳理
最近在整理tensorflow,经常用到RNN与lSTM,故整理如下: -RNN:循环神经网络(Recurrent Neural Networks) -LSTM:长短时记忆网络(Long Short-Term Memory)
学到老
2019/02/14
1.7K0
LSTM模型
Dn=σ′(z1)w1⋅σ′(z2)w2⋅⋯⋅σ′(zn)wn𝐷𝑛=𝜎′(𝑧1)𝑤1⋅𝜎′(𝑧2)𝑤2⋅⋯⋅𝜎′(𝑧𝑛)𝑤𝑛
用户10950404
2024/07/30
3230
LSTM模型
深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密
序列建模是许多领域的一个重要问题,包括自然语言处理 (NLP)、语音识别和语音合成、时间序列预测、音乐生成和「生物信息学」。所有这些任务的共同点是它们需要坚持。接下来的事情的预测是基于历史的。例如,在“哈桑以前踢足球,而且他踢得非常好”的序列中。只有将“哈桑”的信息推进到该特定点,才能对“他”进行预测。因此,您需要某种历史记录块来存储以前的信息并将其用于进一步的预测。传统的人工神经网络在这方面失败了,因为它们无法携带先前的信息。这就催生了一种名为“循环神经网络(RNN)”的新架构。
数据科学工厂
2023/11/21
9200
深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密
RNN 模型介绍
RNN (Recurrent Neural Network), 中文称作循环神经网络, 它一般以序列数据为输入, 通过网络内部的结构设计有效捕捉序列之间的关系特征, 一般也是以序列形式进行输出.
为为为什么
2023/04/22
3.5K0
RNN 模型介绍
推荐阅读
相关推荐
NLP教程(5) - 语言模型、RNN、GRU与LSTM
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档