Recurrent Neural Network(循环神经网络)

news2024/11/25 11:25:49

目录

Slot Filling with RNN

Elman Network & Jordan Network

Bidirectional RNN

LSTM(Long Short-term Memory)

Example

Learning Target

LSTM

GRU (Gated Recurrent Unit)

More Applications

Many to One

Many to Many

Speech Recognition

Sequence to Sequence Learning

Seq2Seq for Syntatic Parsing

Seq2Seq for Auto-encoder Text

Seq2Seq for Auto-encoder Speech

Attention-based Model


循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network)。

循环神经网络具有记忆性、参数共享并且图灵完备(Turing completeness),因此在对序列的非线性特征进行学习时具有一定优势。

Slot Filling with RNN

第一次输入时,通过隐藏层输出,同时输入会被存放在memory中;当第二次输入时,会经过隐藏层和memory运算后输出,同时memory和输入进行运算并更新memory中的值,以此类推。

即使输入是相同的地点,可以根据前文的“leave”或“arrive”得到不一样的输出。

Elman Network & Jordan Network

Elman Network:将hidden layer的输出保存在memory里。

Jordan Network:将整个neural network的输出保存在memory里。

Bidirectional RNN

RNN 还可以是双向的,可以同时训练一对正向和反向的RNN,把它们对应的hidden layer 拿出来,都接给一个output layer。使用双向RNN的好处是,在产生输出的时候,它能够看到比较广的范围。

LSTM(Long Short-term Memory)

LSTM有三个gate:input gate、output gate和forget gate。整个LSTM可以看做是4个input,1个output:

Input: 想要被存到memory cell里的值以及三个gate的控制信号。

Output:想要从memory cell中被读取的值。

Example

当x2=1,把x1的值写入memory;当x2=-1,将memory的数值清零;当x3=1,将memory的值输出。

下图是单个LSTM的运算情景

下图是同一个LSTM在两个相邻时间点上的情况

Learning Target

RNN的损失函数就是输出yi与对label之间的交叉熵,对于RNN的训练也是采用梯度下降的方法,为了计算方便,采取了Backpropagation through time,简称BPTT算法。但是,RNN训练并不容易。因为RNN的Error Surface在某些地方非常平坦,在某些地方又非常的陡峭。这就会导致loss有时会剧烈变化。想要解决这个问题,可以采用Clipping方法,当gradient即将大于某个threshold的时候,就让它停止增长。

从下图可知,RNN的Error Surface中的“悬崖”出现的原因是,关于memory的参数w的作用随着时间增加不断增强,导致RNN出现梯度消失或梯度爆炸的问题。 

LSTM

LSTM会删除error surface上那些比较平坦的地方,从而解决梯度消失的问题,但它无法处理那些崎岖的部分,因而也就无法解决梯度爆炸的问题,所以,训练LSTM时需要将学习率调得特别小。

在RNN中,每个时间点memory中的旧值都会被新值覆盖,导致w对memory的影响每次都被清除,进而引发梯度消失。

在LSTM中,每个时间点memory里的旧值都会通过激活函数与新值相加,只有在forget gate被关闭时w对memory的影响才会被清除。

GRU (Gated Recurrent Unit)

GRU最大的优势就是简单(只有两个门),计算开销小,更加适用于大规模数据集。GRU会把input gate和forget gate连起来,当forget gate把memory里的值清空时,input gate才会打开,再放入新的值。

其中 rt表示重置门(reset gate),zt表示更新门(update gate)。

此外,还有很多技术可以用来处理梯度消失的问题,比如Clockwise RNN、SCRN等

More Applications

Many to One

输入是1个vector sequence,输出是1个vector。

  1. Sentiment Analysis:我们可以把某影片相关的文章爬下来,并分析其正面情绪or负面情绪。

Key Term Extraction:输入是1篇文章等,输出是几个关键词。

Many to Many

输入和输出都是sequence,但输出更短。

Speech Recognition

输入是一段声音信号,每隔一小段时间就用1个vector来表示。但“好棒”和“好棒棒”实际上是不一样的,如何区分呢?需要用到CTC算法,它的基本思想是,输出不只是字符,还要填充NULL,输出的时候去掉NULL就可以得到连词的效果

Sequence to Sequence Learning

在Seq2Seq中,RNN的输入输出都是sequence,但是长度不同。

比如现在要做机器翻译,将英文的word sequence翻译成中文的character sequence。如果想要停止,就把可以多加一个叫做“断”的symbol “===”,当输出到这个symbol时,机器就停止输出。

Seq2Seq for Syntatic Parsing

Seq2Seq还可以用在句法解析上,让机器看一个句子,它可以自动生成树状的语法结构图。

Seq2Seq for Auto-encoder Text

考虑了语序的情况下,把文章编码成vector,只需要把RNN当做编码器和解码器即可。

Seq2Seq for Auto-encoder Speech

Seq2Seq autoencoder还可以用在语音处理上,它可以把一段语音信号编码成vector。

Attention-based Model

除了RNN之外,Attention-based Model也用到了memory的思想。机器会有自己的记忆池,神经网络通过操控读写头去读或者写指定位置的信息,这个过程跟图灵机很像,因此也被称为Neural Turing Machine。

 

 

 

 

 

 

 

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

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

相关文章

一大波物联网毕业设计选题推荐(配套源码、文档、开发板)

以下项目整体综合性比较强,更贴近于产品化,并且基本都包含微信小程序与物联网云平台的联动,每个项目均配套详细的项目开发文档、程序源码,非常适合作为物联网毕业设计选题。项目文档及源码在文章末尾可免费下载。 另外&#xff0…

新手上路——怎样给我的网站备案

怎样办理网站备案: 由于备案是在主机接入商处办理,通常在哪里买的网站空间在哪里提交备案。例如在西部数码开通的虚拟主机、云服务器、独立主机等业务后,再通过其平台提交备案申请。 1.主机业务开通成功后,打开备案平台网址&…

【uniapp】app端压窗屏设计

一、前言 众所周知,在app端中,普通的组件是无法覆盖原生组件,即使是官方提供的cover-view也只是在实体内容中覆盖一些原生的如地图。但是无法覆盖底部的tabbar。 二、了解层级关系 实际上app端每点击一次的层级是这样的,我们可…

spring security oauth2.0-authorization code

Oauth2.0 spring security 估计很多人都在用,里面有几种安全模式值得大家去摸索. oauth2.0 是一种授权鉴权的机制,主要是用来颁发令牌,验证令牌,刷新令牌. OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0). 2012年10月&#xff0c…

泛微e-cology9 SQL注入漏洞复现(QVD-2023-5012)

1、产品简介 泛微协同管理应用平台e-cology是一套兼具企业信息门户、知识文档管理、工作流程管理、人力资源管理、客户关系管理、项目管理、财务管理、资产管理、供应链管理、数据中心功能的企业大型协同管理平台。 2、漏洞概述 泛微e-cology9中存在SQL注入漏洞,未…

《数据万象带你玩转视图场景》第三期:图片极智压缩

前言 在本系列的第一期我们介绍了图片 AVIF 压缩,作为最前沿的压缩技术,AVIF 确实有着无数的优点。但时代的进步是循序渐进的,在一些较老的终端或设备上,可能短时间内确实无法支持 AVIF 格式,那如何能让这部分业务享受…

【毕业季征文】你们的未来可期

还有大约一个月即将又有一批大学的学弟学妹们离开学校,走向社会,走上工作岗位。你们是否是既兴奋又迷茫呢?,我相信更多的是憧憬吧。回想我大学毕业那是10年前的事情了,现在的感受是那么遥远,仿佛自己从来都没上过大学。可能是在大学期间过的太过艰苦,以至于不想保留那一…

TDengine客户端连接

目录 TDengine-clinet 下载网址 运行软件 连接默认TD 连接指定TD TDengineGUI 下载地址 使用 连接:端口默认是6041; sql查询时需要制定 库名 TDengine-clinet 下载网址 连接器 | TDengine 文档 | 涛思数据 默认安装即可; 运行软件 连接默认TD…

机器学习期末复习 线性模型

1.线性回归,对数几率回归,线性判别分析是分类还是回归任务?是有监督的学习还是无监督的学习? 有监督学习和无监督学习 解释: 线性模型要做的有两类任务:分类任务、回归任务 分类的核心就是求出一条直线w…

JavaScript之BOM(上)

Window对象 1.BOM(浏览器对象模型) 2.定时器-延时函数 3.JS执行机制 4.location对象 5.navigator对象 6.history对象 一.BOM(浏览器对象模型) 1.BOM(Browser Object Model)是浏览器对象模型 2.window对象是一个全局对象,也可以说是JavaScript中的顶级对象 3.像do…

Facebook速推帖子和Facebook广告有什么区别

Facebook速推帖子和Facebook广告是在Facebook平台上推广内容的两种不同方式。虽然它们都可以帮助我们增加品牌曝光和吸引目标受众,但它们在运作方式和效果上有一些区别。让我们来详细了解一下它们之间的差异。 1.内容形式和展示方式: Facebook速推帖子&…

基于北斗+LoRa的落水报警定位方案一 -实现无人区,弱信号地区人员 位置安全监控

人员安全一直是企业管理的重中之重。无人区工地是一个安全事故多发的地方,在施工环境复杂且危险的情况下,工地人员位置监控成为管理工作中的一个难点,一直以来采用粗放的方式,现有的工地项目存在施工人员实时督查难等问题&#xf…

【问题记录】postgreSQL使用默认密码导致kdevtmpfsi挖矿病毒注入

起因 postgreSQL我做错了这几件事情 开启了全部IP登陆权限postgreSQL用的是默认用户名和密码用户postgres也没有设置密码,直接用su - postgres就能登陆 不知道是什么原理,反正服务器被侵入,并且注入了病毒文件 1. 基本信息排查 linux服务器…

大麦链接源码 大麦一键生成订单页面

8.4最新版源码 更新了大麦模版链接 更新了大麦订单页面一键生成

《Web安全基础》01. 基础知识

基础 1:概念名词1.1:域名1.2:DNS1.3:网站开发语言1.4:后门1.5:Web1.6:Web 相关安全漏洞 2:数据包2.1:HTTP2.2:HTTPS2.3:请求数据包2.3.1&#xff…

Linux Centos7 jar包方式安装Jenkins服务

1、本文是在VM虚拟机下安装的Centos7,这一步不赘述,有很多教程。 2、配置好静态IP,可参考Linux配置静态IP地址_cylemon的博客-CSDN博客 3、本文是通过XShell连接linux来操作linux系统的。配置JDK1.8及以上环境。先查看一下当前环境是否已存…

三、JavaWeb从入门到熟练

一、JavaWeb概述 Java Web,是用Java技术来解决相关web互联网领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet&…

chatgpt赋能python:Python做聊天程序:打造智能交流

Python 做聊天程序:打造智能交流 Python 是一种易于学习、灵活性强、最近几年得到广泛应用的编程语言。在当今数字化时代,即便是日常生活中我们都需要与人交流,但人们社交媒体的繁荣已经印证了人们对在线交流工具的需求。以下将对 Python 如…

澳洲学生用ChatGPT代写?澳洲多所高校使用全新反击工具检测

朋友们听句劝 ChatGPT可太危险了 ChatGPT有多火?据2月1日瑞银发布的一项研究报告显示,仅仅发布两个月,ChatGPT月活跃用户已达1亿,这是历史上增长速度最快的应用。要知道达成1亿用户的时间,Instagram用了2.5年&#xf…

【013】C++数组之一维数值数组和二维数值数组

一维数值数组和二维数值数组 引言一、一维数值数组1.1、概念1.2、一维数值数组的定义1.3、一维数值数组的初始化1.4、一维数值数组的元素操作1.5、使用示例 二、二维数值数组2.1、概述2.2、二维数值数组的初始化2.3、二维数值数组的元素操作2.4、使用示例 总结 引言 &#x1f4…