循环神经网络

news2024/10/2 10:26:48

循环神经网络(Recurrent Neural Network,RNN)与卷积神经网络一样,都是深度学习中的重要部分。循环神经网络可以看作一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接收其他神经元的信息,也可以接收自身的信息,形成具有环路的网络结构,正因为能够接收自身神经元信息的特点,让循环神经网络具有更强的记忆能力。
卷积神经网络和全连接网络的数据表示能力已经非常强了,为什么还需要RNN呢?这是因为现实世界中面临的问题更加复杂,而且很多数据的输入顺序对结果有重要影响。如文本数据,其是字母和文字的组合,先后顺序具有非常重要的意义。语音数据、视频数据,这些数据如果打乱了原始的时间顺序,就会无法正确表示原始的信息。针对这种情况,与其他神经网络相比,循环神经网络因其具有记忆能力,所以更加有效。循环神经网络已经被广泛应用在语音识别、语言模型以及自然语言生成、文本情感分类等任务上。
最常见、最基本的循环神经网络有RNN、LSTM(长短期记忆)和GRU等。下面我们逐个简单讲解一下这三个循环神经网络。

1.RNN

首先看一下RNN简单网络结构示意图

 上图中展示了RNN中基础的链接结构,针对t时刻的隐状态h_{t},可以由下面的公式进行计算:

 式中,h_{t}是t时刻的隐藏状态;x_{t}是t时刻的输入;h_{t-1}是t-1时刻的隐藏状态;w_{ih}是输入到隐藏层的权重;w_{hh}是隐藏层到隐藏层的权重;b_{ih}是输人到隐藏层的偏置;b_{hh}是隐藏层到隐藏层的偏置;\sigma表示激活函数,在PyTorch中可以使用Tanh或者ReLU激活函数。

虽然在对序列数据进行建模时,RNN对信息有一定的记忆能力,但是单纯的RNN会随着递归次数的增加,出现权重指数级爆炸或消失的问题,从而难以捕捉长时间的关联,并且导致RNN训练时收敛困难,而LSTM网络则通过引入门的机制,使网络具有更强的记忆能力,弥补了RNN网络的一些缺点。

2、LSTM

LSTM ( Long Short-Term Memory)网络又叫作长短期记忆网络,是一种特殊的RNN,主要用于解决长序列训练过程中的梯度消失和梯度爆炸问题,相比普通的RNN网络,LSTM能够在更长的序列中获得更好的分析效果。其简单的网络结构如下图所示:

在LSTM网络中,每个LSTM单元针对输入进行下面函数的计算:

 上式中,h_{t}是t时刻的隐藏状态( hidden state ) ;c_{t}是t时刻的元组状态( cellstate); x_{t}是t时刻的输入;h_{t-1}是t-1时刻的隐藏状态,初始时刻的隐藏状态为0;i_{t}f_{t}g_{t}o_{t}分别是输入门、遗忘门、选择门和输出门;\sigma表示sigmoid激活函数。在每个单元的传递过程中,通常c_{t}是上一个状态传过来的   c_{t-1}加上一些数值,其改变的速度较慢,而h_{t}的取值变化则较大,不同的节点往往会有很大的区别。LSTM在信息处理方面主要分为三个阶段:
(1)遗忘阶段。这个阶段主要是对上一个节点传进来的输人进行选择性忘记,会“忘记不重要的,记住重要的”。即通过f_{t}的值来控制上一状态c_{t-1}中哪些需要记住,哪些需要遗忘。
(2)选择记忆阶段。这个阶段将输人X_{t}有选择性地进行“记忆”。哪些重要则着重记录,哪些不重要则少记录。当前单元的输入内容是计算得到的i_{t},可以通过g_{t}对其进行有选择地输出。
(3)输出阶段。这个阶段将决定哪些会被当成当前状态的输出。主要通过o_{t}进行控制,并且要对c_{t}使用tanh激活函数进行缩放。
LSTM网络输出y_{t}通常可以通过h_{t}变化得到。

3、GRU

虽然LSTM通过门控状态来控制传输状态,记住需要长时间记忆的,忘记不重要的信息,而不像普通的RNN那样只能够有一种记忆叠加,这对很多需要“长期记忆”的任务来说效果显著,但是也因多个门控状态的引入,导致需要训练更多的参数,使得训练难度大大增加。针对这种情况,循环门控单元(Gate Recurrent Unit,GRU)网络被提出,GRU通过将遗忘门和输入门组合在一起,从而减少了门的数量,并且做了一些其他的改变,在保证记忆能力的同时,提升了网络的训练效率。在网络中每个GRU单元的示意图如下图所示。

 在该网络中,每个GRU单元针对输入进行下面函数的计算:

 式中,h_{t}是t时刻的隐藏状态( hidden state );x_{t}是t时刻的输入;h_{t-1}是t-1时刻的隐藏状态,初始时刻的隐藏状态为0;r_{t}z_{t}n_{t} 分别是重置门、更新门和计算候选隐藏层;\sigma 表示sigmoid激活函数。在每个单元的传递过程中,r_{t} 用来控制需要保留之前的记忆。如果 r_{t} 为0,则n_{t}=tanh(W_{in}x_{t}+b_{in}) 只包含当前输入状态的信息,而 z_{t} 则控制前一时刻的隐藏层忘记的信息量。循环神经网络根据循环单元的输入和输出数量之间的对应关系,可以将其分为多种应用方式。下图给出了循环神经网络常用的应用方式:

 图中显示了5种循环神经网络的输入输出对应情况。其中,一对多的网络结构可以用于图像描述,即根据输入的一张图像,自动使用文字描述图像的内容;多对一的网络结构可用于文本分类,即根据一段描述文字,自动对文本内容归类;多对多的网络结构可用于语言翻译,即针对输入的一种语言,自动翻译为另一种语言。

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

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

相关文章

ChatGPT 速通手册——开始提问

开始提问 当我们完成注册后,页面自动会跳转到ChatGPT的主页面,在这里我们就可以开始进行对话了。 我们在页面下方的输入框中填写问题,然后回车或者点击小飞机,我们的问题和ChatGPT的答案就会在页面上方以一问一答的格式展现出来…

Packet Tracer 的安装过程

Packet Tracer 的安装过程 下载地址 链接:https://pan.baidu.com/s/1KO-vJ1p-miU7LXRH92hLww 提取码:ocwu 、双击运行 Crack 文件夹中的"Patch.exe"程序,点击 Patch; 7、即可看到显示激活成功,接下来打开…

Matplotlib学习挑战第四关-网格线grid

Matplotlib 网格线 我们可以使用 pyplot 中的 grid() 方法来设置图表中的网格线。 grid() 方法语法格式如下: matplotlib.pyplot.grid(bNone, whichmajor, axisboth, )b:可选,默认为 None,可以设置布尔值,true 为显…

CentOS 软件包管理

一、文件打包与压缩 1.du命令 --查看目录或文件所占磁盘空间的大小 -h,以K,M,G为单位显示统计结果(默认单位为字节) -s,查看目录本身的大小 2.打包压缩 tar命令--打包,打包文件的扩展名为.tar…

如何在TypeScript中使用泛型

介绍 泛型是静态类型语言的基本特征,允许开发人员将类型作为参数传递给另一种类型、函数或其他结构。当开发人员使他们的组件成为通用组件时,他们使该组件能够接受和强制在使用组件时传入的类型,这提高了代码灵活性,使组件可重用…

【计算机网络——计算机网络的概念,组成,功能和分类以及相关的性能指标,分层结构和协议,TCP/IP参考模型】

文章目录计算机网络体系结构计算机网络的概念、组成、功能和分类标准化工作及相关组织速率相关的性能指标时延、时延带宽积、PTT和利用率分层结构、协议、接口和服务OSI参考模型TCP IP参考模型计算机网络体系结构 计算机网络的概念、组成、功能和分类 计算机网络的概念 计算…

EasyRecovery免费电脑硬盘数据恢复软件使用教程

EasyRecovery硬盘数据恢复软件采用最新的数据扫描引擎,从磁盘底层读出原始的扇区数据,经过高级的数据分析算法,把丢失的目录和文件在内存中重建出原分区和原来的目录结构,数据恢复的效果非常好。操作简单,向导式的界面…

如何使用katalon studio 完成 get/post 请求发送

前言 katalon studio作为目前最火的自动化测试工具之一,不仅仅只能完成webUI自动化,更是能完成api、app以及桌面应用程序的自动化测试。本文将讲解一下katalon studio是如果完成接口测试的。 请求发送 get请求 1、先在object repository里new一个请求…

代码随想录算法训练营第五十九天 | 503.下一个更大元素II、42. 接雨水

打卡第59天,继续单调栈。 今日任务 503.下一个更大元素II42.接雨水 503.下一个更大元素II 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下…

C++ 类之间的纵向关系-继承

目录 继承的基本概念 定义 使用方法 内存空间 继承下构造析构执行的顺序 构造函数 继承的基本概念 定义 被继承的类叫做基类(父类),继承的类叫派生类(子类),在子类类名后面加:继承方式 父类 class …

JavaScript概述一

1.JavaScript介绍 1.1 前端三要素 HTML:超文本标记语言,是一种使用标签(标记)描述网页中的视图内容的语言;CSS:层叠样式表,主要用于美化web页面外观,决定了网页中的视图效果;JavaScript:用于网…

PHP快速入门07-Cookie与Session的说明与使用

文章目录前言一、关于Cookie和Session1.1 Cookie1.2 Session二、Cookie和Session的使用2.1 Cookie的使用例子2.2 Session的使用例子总结前言 本文已收录于PHP全栈系列专栏:PHP快速入门与实战 Cookie和Session是一个Web开发几乎不可避免的东西,是网站开发…

Java入坑之Numbers Strings

目录 一、Lambda表达式 1.1简介 1.2使用场景 1.3Lambda表达式的使用条件 1.4Lambda表达式的语法 1.5Lambda表达式的精简 二、方法引用 2.1基本概念 2.2使用条件 2.3语法格式 2.4静态方法引用 2.5特定对象的实例方法 2.6构造函数的方法引用 三、包装类 3.1概念 3…

K_A28_004 基于STM32等单片机驱动SI4432对发SI4432实现数据传输 OLED显示

K_A28_004 基于STM32等单片机驱动SI4432对发SI4432实现数据传输 OLED显示所有资源导航一、资源说明二、基本参数参数引脚说明三、驱动说明时序:对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RCSI4432无线模块1.2、STM32F103C8T6SI4432无线模块五、基础知识学习与相关…

基于tensorflow和tensorflow-quantum的量子机器学习环境搭建, Mac环境下

量子神经网络(Quantum neural networks, QNN)及其变体量子卷积神经网络(Quantum convolutional networks, QCNN),在内存和速度方面都有着高效的优势,能将经典向量由n维编码到log2^n个量子位,同时…

分子生物学 第四章 DNA的生物合成

文章目录第四章 DNA的生物合成第一节 DNA复制的一般特征1 DNA的半保留复制2 DNA的双向复制3 DNA的半不连续复制第二节 DNA复制的酶学1 DNA聚合酶1.1 原核生物DNA pol1.1.1 DNA pol I1.2 DNA pol II1.3 DNA pol III1.4 其它的DNA pol1.2 真核生物DNA聚合酶1.2.1 DNA pol α\alph…

深度学习基础入门篇[五]:交叉熵损失函数、MSE、CTC损失适用于字识别语音等序列问题、Balanced L1 Loss适用于目标检测

1.交叉熵损失函数 在物理学中,“熵”被用来表示热力学系统所呈现的无序程度。香农将这一概念引入信息论领域,提出了“信息熵”概念,通过对数函数来测量信息的不确定性。交叉熵(cross entropy)是信息论中的重要概念&am…

ITIL社群的内容及作用

官方网站 www.itilzj.com 文档资料: wenku.itilzj.com ITIL是全球范围内最为流行的IT服务管理框架之一,它能够帮助企业提高IT服务质量,提升业务价值。无论你是IT行业的从业者还是对ITIL感兴趣的人士,ITIL之家社群都将为你提供有价值的知识和经…

非关系型数据库---Redis安装与基本使用

一、数据库类型 关系数据库管理系统(RDBMS)非关系数据库管理系统(NoSQL) 按照预先设置的组织机构,将数据存储在物理介质上(即:硬盘上) 数据之间可以做无关联操作 (例如: 多表查询,嵌套查询,外键等) 主流的RDBMS软件:My…

java io流 概念 详解

IO流 当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作。 当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作。 因此我们把这种输入和输出动作称为IO操作。 学习目标: 一、文件类&#x…