RNN详解、BPTT、LSTM

RNN详解、BPTT、LSTM本文部分参考和摘录了以下文…

大家好,又见面了,我是你们的朋友全栈君。

本文转自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 ) = ϕ ( U x ( t ) + W h ( t − 1 ) + b ) h ( t ) = ϕ ( U x ( t ) + W h ( t − 1 ) + b ) h ( t ) = ϕ ( U x ( t ) + W h ( 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(t1)+b)h(t)=ϕ(Ux(t)+Wh(t1)+b)h(t)=ϕ(Ux(t)+Wh(t1)+b)UL(3)=o(3)L(3)h(3)o(3)Uh(3)+o(3)L(3)h(3)o(3)h(2)h(3)U

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152324.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 机器学习:海量数据挖掘解决方案

    达观数据团队分享基于大数据的机器学习应用经验。

    2022年4月13日
    75
  • UART配置调试指南[通俗易懂]

    UART配置调试指南[通俗易懂]UART配置(硬件描述)1.根据原理图,查找相关的i2c引脚对应的GPIO值,以GPIO16作为UART1_TX,GPIO17作为UART1_RX为例。2.查找GPIO16与GPIO17对应的BLSP,以及检查GPIO16与GPIO17是否可以作为UART来使用。根据文档,GPIO16与GPIO17对应BLSP3。GPIONUMBERF

    2022年10月18日
    4
  • Mysql数据库备份(一)——数据库备份和表备份[通俗易懂]

    一、Mysql中的数据备份:Mysql中数据备份使用的命令是:mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。1、Mys

    2022年4月4日
    71
  • 扩展kmp求最长回文子串_算法-字符串之最长回文子串

    扩展kmp求最长回文子串_算法-字符串之最长回文子串上一篇KMP算法之后好几天都没有更新,今天介绍最长回文子串。首先介绍一下什么叫回文串,就是正着读和倒着读的字符顺序都是一样的,eg:level,noon。而回文子串,顾名思义,就是主串中满足回文性质的子串。求解的常规思想,就是先求出主串的所有子串,在判断是否是回文串,然后选出最长的,这一种方法的时候复杂度较高,是O(n^3),所以一般不采用这种方法,下面介绍两种方法求解。1.中心扩展法中心扩展法…

    2022年5月6日
    36
  • Ubuntu安装GCC 3.4

    Ubuntu安装GCC 3.4Ubuntu安装GCC3.4一、背景二、安装三、总结一、背景因最近学习hit-os编译linux0.11版本内核,需要使用到gcc3.4,故此记录。二、安装#下载deb包wgethttp://old-releases.ubuntu.com/ubuntu/pool/universe/g/gcc-3.4/cpp-3.4_3.4.6-6ubuntu3_amd64.debwgethttp://old-releases.ubuntu.com/ubuntu/pool/universe/g/gc

    2022年7月24日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号