前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RNN和LSTM

RNN和LSTM

作者头像
润森
发布2020-02-25 11:49:26
1K0
发布2020-02-25 11:49:26
举报
文章被收录于专栏:毛利学Python毛利学Python

@Author:By Runsen

原文:https://maoli.blog.csdn.net/article/details/89390069

循环神经网络

循环神经网络,Recurrent Neural Network。神经网络是一种节点定向连接成环的人工神经网络。这种网络的内部状态可以展示动态时序行为。不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如不分段的手写识别、语音识别等。

CNN处理图片,RNN处理文本,语音和视频

分类

  • 完全递归网络(Fully recurrent network)
  • Hopfield神经网络(Hopfield network)
  • 你简单循环网络(Simple Recurrent Network, SRN)
  • 回声状态网络(Echo state network)
  • 长短期记忆网络(Long Short Term Memery network, LSTM)
  • 双向循环神经网络(Bi-directional RNN)
  • 持续型网络(Continuous-time RNN)
  • 堆叠循环神经网络(Stacked Recurrent Neural Network, SRNN)
  • 循环多层感知器(Recurrent Multi-Layer Perceptron,RMLP)
  • 递归神经网络(RecursiveNeural Network)

CNN只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。

比如,当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列;当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。

x是一个向量,它表示输入层的值(这里面没有画出来表示神经元节点的圆圈);s是一个向量,它表示隐藏层的值(这里隐藏层面画了一个节点,你也可以想象这一层其实是多个节点,节点数与向量s的维度相同);

U是输入层到隐藏层的权重矩阵,o也是一个向量,它表示输出层的值;V是隐藏层到输出层的权重矩阵。

那么,现在我们来看看W是什么。循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。

其中,输入层到隐藏层使用双曲正切激活函数(tanh),隐藏层到输出层使用 softmax 将输出映射为 (0, 1) 的概率分布。按时间序列递减的方式反复把第一个公式带入到它本身中,我们将会看到当前时刻隐藏层的输出值不仅受当前时刻输入 x(t)x(t) 的影响,还受到过去所有时刻输入 (x(t−1),x(t−2),⋯,x(2),x(1))(x(t−1),x(t−2),⋯,x(2),x(1)) 的影响,如此一来,隐藏层的输出值(h)就可以看作是网络的记忆,这使得它非常适合处理前后有依赖关系数据样本。

损失函数公式如下所示,一般可使用交叉熵来计算某个时刻 tt 在所有 mm 个样本上的损失,整体的损失值则为所有时刻损失之和。

LSTM

LSTM(Long Short-Term Memory)是长短期记忆网络,是一种时间循环神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。

主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。LSTM 已经在科技领域有了多种应用。基于 LSTM 的系统可以学习翻译语言、控制机器人、图像分析、文档摘要、语音识别图像识别、手写识别、控制聊天机器人、预测疾病、点击率和股票、合成音乐等等任务。

LSTM 时刻 tt 的网络结构如下图所示。其中 xtxt 是 tt 时刻的输入, 是 t−1t−1 时刻隐藏层的输出,ct−1ct−1 是 t−1t−1 时刻历史信息的输出;ftft、itit 和 otot 分别为 tt 时刻的遗忘门、输入门和输出门;ct~ct~ 是 tt 时刻通过变换后的新信息,ctct 是在 tt 时刻更新过后的历史信息,htht 是 tt 时刻隐藏层的输出。其具体计算流程如下:

LSTM网络

long short term memory,即我们所称呼的LSTM,是为了解决长期以来问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。

LSTM 同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。

在上面的图例中,每一条黑线传输着一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表 pointwise 的操作,诸如向量的和,而黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置。

GRU

参考:https://www.jianshu.com/p/4b4701beba92

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小刘IT教程 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 循环神经网络
  • LSTM
  • LSTM网络
  • GRU
相关产品与服务
语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档