本文转自https://blog.csdn.net/zhaojc1995/article/details/80572098

本文部分参考和摘录了以下文章,在此由衷感谢以下作者的分享!
https://zhuanlan.zhihu.com/p/28054589
https://blog.csdn.net/qq_16234613/article/details/79476763
http://www.cnblogs.com/pinard/p/6509630.html
https://zhuanlan.zhihu.com/p/28687529
http://www.cnblogs.com/pinard/p/6509630.html
https://zhuanlan.zhihu.com/p/26892413
https://zhuanlan.zhihu.com/p/21462488?refer=intelligentunit


RNN(Recurrent Neural Network)是一类用于处理序列数据的神经网络。首先我们要明确什么是序列数据,摘取百度百科词条:时间序列数据是指在不同时间点上收集到的数据,这类数据反映了某一事物、现象等随时间的变化状态或程度。这是时间序列数据的定义,当然这里也可以不是时间,比如文字序列,但总归序列数据有一个特点——后面的数据跟前面的数据有关系。

RNN的结构及变体

我们从基础的神经网络中知道,神经网络包含输入层、隐层、输出层,通过激活函数控制输出,层与层之间通过权值连接。激活函数是事先确定好的,那么神经网络模型通过训练“学“到的东西就蕴含在“权值“中。
基础的神经网络只在层与层之间建立了权连接,RNN最大的不同之处就是在层之间的神经元之间也建立的权连接。如图。

这是一个标准的RNN结构图,图中每个箭头代表做一次变换,也就是说箭头连接带有权值。左侧是折叠起来的样子,右侧是展开的样子,左侧中h旁边的箭头代表此结构中的“循环“体现在隐层。
在展开结构中我们可以观察到,在标准的RNN结构中,隐层的神经元之间也是带有权值的。也就是说,随着序列的不断推进,前面的隐层将会影响后面的隐层。图中O代表输出,y代表样本给出的确定值,L代表损失函数,我们可以看到,“损失“也是随着序列的推荐而不断积累的。
除上述特点之外,标准RNN的还有以下特点:
1、权值共享,图中的W全是相同的,U和V也一样。
2、每一个输入值都只与它本身的那条路线建立权连接,不会和别的神经元连接。

以上是RNN的标准结构,然而在实际中这一种结构并不能解决所有问题,例如我们输入为一串文字,输出为分类类别,那么输出就不需要一个序列,只需要单个输出。如图。

同样的,我们有时候还需要单输入但是输出为序列的情况。那么就可以使用如下结构:

还有一种结构是输入虽是序列,但不随着序列变化,就可以使用如下结构:

原始的N vs N RNN要求序列等长,然而我们遇到的大部分问题序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度。
下面我们来介绍RNN最重要的一个变种:N vs M。这种结构又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。

从名字就能看出,这个结构的原理是先编码后解码。左侧的RNN用来编码得到c,拿到c后再用右侧的RNN进行解码。得到c有多种方式,最简单的方法就是把Encoder的最后一个隐状态赋值给c,还可以对最后的隐状态做一个变换得到c,也可以对所有的隐状态做变换。

除了以上这些结构以外RNN还有很多种结构,用于应对不同的需求和解决不同的问题。还想继续了解可以看一下下面这个博客,里面又介绍了几种不同的结构。但相同的是循环神经网络除了拥有神经网络都有的一些共性元素之外,它总要在一个地方体现出“循环“,而根据“循环“体现方式的不同和输入输出的变化就形成了多种RNN结构。

https://blog.csdn.net/qq_16234613/article/details/79476763

标准RNN的前向输出流程

上面介绍了RNN有很多变种,但其数学推导过程其实都是大同小异。这里就介绍一下标准结构的RNN的前向传播过程。

再来介绍一下各个符号的含义:x是输入,h是隐层单元,o为输出,L为损失函数,y为训练集的标签。这些元素右上角带的t代表t时刻的状态,其中需要注意的是,因策单元h在t时刻的表现不仅由此刻的输入决定,还受t时刻之前时刻的影响。V、W、U是权值,同一类型的权连接权值相同。

有了上面的理解,前向传播算法其实非常简单,对于t时刻:
h(t)=ϕ(Ux(t)+Wh(t−1)+b)h(t)=ϕ(Ux(t)+Wh(t−1)+b)h(t)=ϕ(Ux(t)+Wh(t−1)+b)h(t)=ϕ(Ux(t)+Wh(t−1)+b)h(t)=ϕ(Ux(t)+Wh(t−1)+b) h^{(t)}=\phi(Ux^{(t)}+Wh^{(t-1)}+b)h(t)=ϕ(Ux(t)+Wh(t−1)+b)h(t)=ϕ(Ux(t)+Wh(t−1)+b)h(t)=ϕ(Ux(t)+Wh(t−1)+b)∂U∂L(3)​=∂o(3)∂L(3)​∂h(3)∂o(3)​∂U∂h(3)​+∂o(3)∂L(3)​∂h(3)∂o(3)​∂h(2)∂h(3)​∂U

RNN详解、BPTT、LSTM相关推荐

  1. 深度学习---循环神经网络RNN详解(LSTM)

    上一节我们详细讲解了RNN的其中一个学习算法即BPTT,这个算法是基于BP的,只是和BP不同的是在反向传播时,BPTT的需要追溯上一个时间的权值更新,如下图,当前时刻是s(t),但是反向传播时,他需要 ...

  2. 深度学习 --- 循环神经网络RNN详解(BPTT)

    今天开始深度学习的最后一个重量级的神经网络即RNN,这个网络在自然语言处理中用处很大,因此需要掌握它,同时本人打算在深度学习总结完成以后就开始自然语言处理的总结,至于强化学习呢,目前不打算总结了,因为 ...

  3. RNN详解及BPTT详解

    转自:https://blog.csdn.net/zhaojc1995/article/details/80572098 本文部分参考和摘录了以下文章,在此由衷感谢以下作者的分享! https://z ...

  4. 史上最小白之RNN详解

    1.前言 网上目前已经有诸多优秀的RNN相关博客,但是我写博客的出发点主要是为了加深和巩固自己的理解,所以还是决定自己再进行一下总结和描述,如有不正确的地方欢迎指正~ 2.区分RNN 循环神经网络(R ...

  5. RNN详解(Recurrent Neural Network)

    一.概述 RNN用于处理序列数据.在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的.但是这种普通的神经网络对于很多问题却无能无力.例如,你要预测句子 ...

  6. Pytorch RNN(详解RNN+torch.nn.RNN()实现)

    目录 一.RNN简介 二.RNN简介2 三.pytorch RNN 3.1    定义RNN()

  7. 史上最直白的RNN详解(结合torch的example)

    本文主要是结合torch的代码介绍RNN模型的过程及原理 目录 为什么需要RNN RNN的基本结构 torch中的RNN RNN的优缺点 为什么需要RNN 在最基本的全连接神经网络中,我们所建立的网络 ...

  8. 长短期记忆(LSTM)详解

    入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删. ✨完整代码在我的github上,有需要的朋友可以康康✨ ​​​​​​https://githu ...

  9. 【nn.LSTM详解】

    参数详解 nn.LSTM是pytorch中的模块函数,调用如下: torch.nn.lstm(input_size,hidden_size,num_layers,bias,batch_first,dr ...

最新文章

  1. 模态对话框的父窗口设置
  2. php cache缓存 购物车,Yii2使用Redis缓存购物车等数据
  3. unity脚本运行顺序具体的解释
  4. android webview js 失效,Android WebView注入JQuery、JS脚本及执行无效的问题解决
  5. clickhouse的ReplacingMergeTree引擎实战
  6. 生活质量衡量系统_一文看懂质量管理精髓——“零缺陷”管理
  7. Java受检异常和非受检异常
  8. openstack nova 源码分析4-nova目录下的driver.py
  9. 各省简称 拼音 缩写_全国所有城市拼音跟缩写.docx
  10. android4.4内存,Android 4.4只需512MB内存?别高兴太早
  11. 解决2020R2,2022R1等版本的SCDM无法编辑草图尺寸的问题
  12. 在‘句子迷’爬取网友总结的方文山歌词并作词频统计
  13. 珠机妙算益智桌面游戏python_十款3D打印的经典桌面游戏
  14. 浏览器收藏夹整理及无效链接批量删除
  15. 详细分析stm32f10x.h
  16. activity destory掉后马上释放内存方法
  17. Posts Tagged 【Catalan】
  18. 踔厉奋发·勇毅前行 | 2023广和通中国区代理商大会成功召开
  19. 科技向善,AI 助力老人听见天籁
  20. oracle 查看数据泵,1.Oracle数据泵介绍

热门文章

  1. 创建数字证书以及使用数字签名对UWP应用包签名
  2. 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-981 过河马
  3. Win10拓展屏幕显示:输入信号超出范围。解决方法。
  4. 路由器市场发展良好 2020年将达34亿美元
  5. 测试报告的内容以及编写技巧。
  6. 新手小白可以操作的三个副业项目_正规的知识付费平台有哪些,知识付费赚钱项目
  7. oracle 数据库导入语句,oracle 数据库导入导出语句
  8. redhat linux 查询dns,redhat dns搭建记录
  9. 史上最全cdh安装详细教程
  10. mysql SELECT/UPDATE command denied to user 'root'@'localhost' for table 'XXX'