rnn按时间展开_双向RNN的理解

我们在学习某种神经网络模型时,一定要把如下几点理解透了,才算真正理解了这种神经网络。

  1. 网络的架构:包含那些层,每层的输入和输出,有那些模型参数是待优化的
  2. 前向传播算法
  3. 损失函数的定义
  4. 后向传播算法
  5. 什么情况下认为是发现了过拟合,怎么进行优化。

很多介绍深度学习的书籍,在介绍全连接神经网络时,对这几个方面都会介绍的比较清楚,但是在介绍CNN,RNN,LSTM等,都会只偏重介绍网络的架构,其他的方面介绍的少,没有讲解透彻。

如果不信,我提一个问题,如果能够在那本书中找到答案,请一定要告诉我这边书的名字!

问题:双向RNN中,有两个隐藏状态,一个是正序,如下图中的实线;一个是逆序,如下图中的虚线。那么在计算t时刻的状态变量时,对于正序,比较好理解,输入是上一个时刻的隐藏状态和当前时刻的系统输入;对于逆序,输入是下一个时刻的隐藏状态和当前时刻的系统输入。下一个时刻的隐藏状态属于未来的状态,那么,系统在计算时,怎么能够用未来的状态做输入呢?

19d7376692c3f0e2a2335ed87e62e12e.png

我可是日夜冥思苦想才想通这个问题啊。 下面给出历程。

先理解下RNN的几点:

网络的架构:

09241c53b294962b91c0f3742f7cf9d8.png

这是一个标准的RNN结构图,图中每个箭头代表做一次变换,也就是说箭头连接带有权值。左侧是折叠起来的样子,右侧是展开的样子,左侧中h旁边的箭头代表此结构中的“循环“体现在隐层。

在展开结构中我们可以观察到,在标准的RNN结构中,隐层的神经元之间也是带有权值的。也就是说,随着序列的不断推进,前面的隐层将会影响后面的隐层。图中O代表输出,y代表样本给出的确定值,L代表损失函数,我们可以看到,“损失“也是随着序列的推荐而不断积累的。

除上述特点之外,标准RNN的还有以下特点:

1、权值共享,图中的W全是相同的,U和V也一样。

2、每一个输入值都只与它本身的那条路线建立权连接,不会和别的神经元连接。

前向传播算法:

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

前向传播算法其实非常简单,对于t时刻:

h(t)=ϕ(U*x(t)+W*h(t−1)+b)

其中ϕ()为激活函数,一般来说会选择tanh函数,b为偏置。

t时刻的输出就更为简单:

o(t)=V*h(t)+c

最终模型的预测输出为:

yˆ(t)=σ(o(t))

其中σ为激活函数,通常RNN用于分类,故这里一般用softmax函数。

损失函数的定义:

对于分类问题,采用交叉熵。

后向传播算法:

BPTT(back-propagation through time)算法是常用的训练RNN的方法,其实本质还是BP算法,只不过RNN处理时间序列数据,所以要基于时间反向传播,故叫随时间反向传播。BPTT的中心思想和BP算法相同,沿着需要优化的参数的负梯度方向不断寻找更优的点直至收敛。综上所述,BPTT算法本质还是BP算法,BP算法本质还是梯度下降法,那么求各个参数的梯度便成了此算法的核心。

需要寻优的参数有三个,分别是U、V、W。与BP算法不同的是,其中W和U两个参数的寻优过程需要追溯之前的历史数据,参数V相对简单只需关注目前。

什么时候出现过拟合,怎么优化?

很多资料在介绍全连接神经网络时,都介绍过拟合的定义以及优化的方法,然后在介绍RNN时,却没有介绍这些。对于学习和实践的过程就很容易忽略这些。其中这些在实践中也是非常重要的。

出现过拟合的现象,就是安装过拟合的定义,当模型在训练数据的表现很好,而在测试数据集的表现不好时。

优化的方法:一是使用正则化,而是使用dropout。 dropout就是对权重参数进行随机丢弃的过程,采用超参数来控制丢失的比例。一般对同一个序列的内部的参数(即 U和V)使用dropout,而不对不同序列之间的连接的参数(即W)进行dropout。为什么要这样呢?这点很多书籍和资料都没有讲解透彻。

这其实是一个从实践的角度总结出来的,隐状态h是之前输入的信息的表示,在传递给下一个时刻,如果进行dropout,会有信息丢失。 而对同一个序列的内部的参数(即 U和V)使用dropout,只是讲信息表示的维数降低,比如隐层的维数是200维,使用dropout之后,变成180维,从而降低模型的复杂度。

现在理解双向RNN的几个方面:

  1. 网络的结构:在本文的开始有讲解,或者百度下,很多讲双向RNN的资料,基本上只讲解了这部分。要优化的参数包含两组:W,U,V。
  2. 前向传播算法:和RNN相比,这正是不太容易理解的地方。双向RNN中,有两个隐藏状态,一个是正序,如下图中的实线;一个是逆序,如下图中的虚线。那么在计算t时刻的状态变量时,对于正序,比较好理解,输入是上一个时刻的隐藏状态和当前时刻的系统输入;对于逆序,输入是下一个时刻的隐藏状态和当前时刻的系统输入。下一个时刻的隐藏状态属于未来的状态,那么,系统在计算时,怎么能够用未来的状态做输入呢?
  3. 损失函数的定义,是根据要解决的问题的类型来选择的,跟网络的类型一般关系不大。
  4. 后向传播算法,也是采用BPTT。不详细展开,根据函数定义和偏导数的定义,比如容易类推。
  5. 什么情况下认为是发现了过拟合,怎么进行优化。和RNN相比,比较容易类推。

下一个时刻的隐藏状态属于未来的状态,那么,系统在计算时,怎么能够用未来的状态做输入呢?

这个问题,既然很多资料没有讲,那就找原始paper的作者,是怎么说明的。

https://www.di.ufpe.br/~fnj/RNA/bibliografia/BRNN.pdf​www.di.ufpe.br

50a79650e2f126e7f7e31b687a9172b4.png

这里的确是讲解了,只是我还是没有理解。到这里为止,能够理解的请举手!

我发现tensorflow的代码,bidirectional_dynamic_rnn 函数的实现,坐了两遍计算:第一遍先正向计算隐状态h,保存成一个序列,顺序是t时刻从1到T。第二遍,将输入反转,计算隐状态h,保存为一个序列,这样顺序就是t时刻从T到1. 最后在计算output,这样在计算output时,所有时刻的隐状态都是已经计算出来了。这样之前的疑问就得到解答了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】Mac本地生成SSH Key 的方法

1. 查看秘钥是否存在 打开终端查看是否已经存在SSH密钥:cd ~/.ssh 如果没有密钥则不会有此文件夹,有则备份删除, 也可以直接删除, 2.生成新的秘钥, 命令如下 $ssh-keygen -t rsa -C "youremailexample.com" 你需要把邮件地址换成你自己的邮…

职称考试取消英语和计算机,强烈建议取消所谓的英语职称和计算机考试

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼强烈要求取消职称计算机英语考试职称计算机英语考试坑苦了广大相关受害者,其实质是某个别部门单位敛财的冠冕堂皇的项目。那些政策制定者美其名曰是通过考试激励大家的继续学习,掌握其技能,那么没…

树莓派退出python的代码_Python实现树莓派WiFi断线自动重连的实例代码

实现 WiFi 断线自动重连。原理是用 Python 监测网络是否断线,如果断线则重启网络服务。1.Python 代码 autowifi.py,放在 /home/pi 目录下:#!/usr/bin/pythonimportos, timewhileTrue:if192 not in os.popen(ifconfig | grep 192).read():print\n****** w…

类型信息

1、java主要有两种方式在运行时识别对象和类的信息:RTTI和“反射”机制。 2、类加载器系统实际上可以包含一条类加载器链,但是只有一个原生态加载器,它是JVM实现的一部分。原生态加载器加载的是所谓的可信类,包括Java API&#xf…

primefaces_懒惰的JSF Primefaces数据表分页–第1部分

primefaces今天,我们将使用带有视图范围的托管bean的惰性列表进行JSF数据表分页。 这些单词/表达是什么意思? 如今,有几个JSF框架可为数据表提供现成的分页,列排序器和其他功能。 今天,我们将使用Primefaces数据表。 …

linux下python开发环境搭建_linux下python开发环境之二——安装Eclipse+PyDev

Eclipse是由java开发的,所以要想让Eclipse跑起来就得安装jdk,在命令行里输入javac就能查看本机是否已经安装好了jdk了。1、安装jdk先从oracle官网上下载jdk,放到/usr/local/src/文件中,由于找不到linux的下载连接,所以…

台式计算机如何连接vif,关于计算机二级( VIF ) 县城有高手吗? 急寻

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼自考《管理系统中计算机应用》上机实践考试样卷2007年08月09日 13:29(本卷考试时间60分钟)注意事项:1、在考核盘的根目录下有XS.DBF、CJ.DBF、STD.DBF、LOAN.DBF、DISREC.SCX、TTT.PRG、KSH.PRG和KSHF.SCX文件&#xff…

Eclipse新建java类的时候,自动创建注释

为形成个人的java代码风格,我们在项目组中进行开发的时候,可以对自己的代码进行一些格式上面的设置,具体如下: 方法一:Eclipse中设置在创建新类时自动生成注释 windows–>preference Java–>Code Style–>Code Templates…

无论是否使用Spring Framework,为什么我们会失败?

在Twitter领域再次引起了一些反感 ,我看到了Sam Atkinson的博客帖子,题为“ 为什么我讨厌Spring” 。 这篇博客文章的撰写早于2014年,但是DZone后来才真正选择并发布了它。 实际上,在撰写本文时,Atkinson是一名开发人员…

endnote能自动翻译吗_自动挡和手自一体有啥区别?从外表能看出一辆车是哪种变速箱吗?...

汽车分自动挡和手动挡,手动挡就是一个手动变速箱,很好理解。但自动挡变速箱有很多种,前几日有人问了这么几个问题,没来得及回复,现在超时不能单独回复了,在此详细说一下,因为这是一个非常基础且…

html5平板电脑,Html5添加支持桌面、移动触摸手机和平板电脑的Lightbox插件教程

一、使用方法首先在标签之前或标签中引入jquery和swipebox js文件。在标签中引入swipebox.css文件。二、Html结构三、调用插件;( function( $ ) {$( .swipebox ).swipebox();} )( jQuery );四、高级配置(1)画廊(2)视频支持My Videos(3)动态调用画廊$( #gallery ).click( functi…

idea 内存溢出解决方法

在Run/Debug configuration 的 vm options里面输入 -server -XX:PermSize128M -XX:MaxPermSize256m 具体如下图: 转载于:https://www.cnblogs.com/Liang-Haishan216/p/7044028.html

网页设计html加音频,HTML5网页中如何嵌入音频,视频?

《HTML5的视频播放控制技术》 介绍了本文主要介绍在HTML5 中如何嵌入音频,视频?在HTML5 中如何嵌入音频?HTML5 支持 MP3、Wav 和 Ogg 格式的音频,代码示例:Your browser does’nt support audio embedding feature.HTM…

seo 伪原创_胡子哥谈seo优化:那些不被了解的伪原创技巧

各位小伙伴们好,我是没有胡子的胡子哥,玩转SEO多年的老互联网人。(胡子哥推出包上首页服务,无效退款,有技术就是敢承诺!)做SEO优化的人都知道,一个网站提升权重的过程中,文章的原创度占比是很高…

javafx2_JavaFX 2 GameTutorial第3部分

javafx2介绍 Ť他是与一个六个部分组成的系列的第3部分的JavaFX 2游戏教程。 如果您错过了第1部分和第2部分 ,我建议您在开始本教程之前仔细阅读它们。 回顾第2部分,我讨论了游戏循环的内部工作原理,其中我们使用动画(JavaFX Time…

03_字体标记

12321321转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7044136.html

dw中html中无法使用js,在Dreamweaver中调用JavaScript行为

调用JavaScript行为可以指定在事件发生时要执行的自定义函数或者JavaScript代码。可以自己书写这些JavaScript代码,也可以使用网络上免费发布的各种JavaScript库。一、Dreamweaver调用JavaScript行为1. 选择一个对象。2. 打开行为面板。3. 点击“添加行为()”按钮&a…

python 渗透框架_Python渗透测试框架:PytheM

PytheM是一个Python渗透测试框架。它只能在osnGNU/Linux OS系统上运行。安装$sudo apt-get update$sudo apt-get install libasound-dev libjack-jackd2-dev portaudio19-dev python-pyaudio build-essential python-dev libnetfilter-queue-dev libespeak1 libffi-dev libssl-…

javaweb可部署目录结构

webApp //项目名称 -META-INF --MANIFEST.MF -WEB-INF --classes //编译class文件 --lib //依赖jar --web.xml -index.jsp //首页转载于:https://www.cnblogs.com/chenweichu/p/7044925.html

带有JBoss工具的OpenShift 3上的Java EE 7应用程序

您可以使用最新版本的JBoss Tools OpenShift插件在Eclipse中创建和管理OpenShift应用程序。 他们要么预先捆绑了最新的 JBoss Developer Studio(9.0.0.GA) ,也可以将它们安装到现有的Eclipse Mars中。 这篇文章将引导您通过JBoss Developer …