自然语言处理:了解循环神经网络RNN及其变种长短期记忆网络(LSTM)、门控循环单元(GRU)、双向RNN

news2024/11/25 22:29:06

文章目录

  • 一、RNN
  • 二、GRU
  • 三、LSTM
  • 四、GRU vs LSTM
  • 五、双向RNN

一、RNN

递归神经网络(Recurrent Neural Network,RNN)是一种具有时间序列依赖性的人工神经网络结构。其主要原理是在传统神经网络的基础上引入了循环连接,允许信息在网络中传递并保持记忆。

在RNN中,每个时间步都有一个输入和一个输出。除此之外,RNN还使用了一个隐藏状态(hidden state),用于存储之前的信息。在每个时间步,隐藏状态被传递到下一个时间步,并结合当前的输入和之前的隐藏状态来更新隐藏状态。

在这里插入图片描述

RNN的核心思想是通过循环连接,使得网络可以处理不定长度的序列输入,并且可以捕捉到序列中的时间依赖关系。通过隐藏状态的传递,RNN可以在处理序列数据时保留和利用之前的信息,从而更好地理解和预测序列中的结构和模式。

然而,传统的RNN 在处理长时间依赖关系时存在梯度消失或梯度爆炸的问题, 限制了其在长序列数据上的表现。为了解决这个问题,出现了一些改进的RNN结构,如长短期记忆网络(LSTM)和门控循环单元(GRU)。这些改进的结构引入了门控机制,可以更好地控制隐藏状态的传递和更新,从而在更长的时间范围内捕捉到有意义的信息。

二、GRU

门控循环单元(Gated Recurrent Unit,GRU)是一种改进的循环神经网络(RNN)结构,旨在解决传统RNN面临的梯度消失或梯度爆炸问题,并更好地捕捉长期依赖关系。

GRU通过引入门控机制,能够选择性地更新和丢弃信息,并通过门控单元来控制隐藏状态的传递和更新。下面是GRU的工作原理:

GRU中的隐藏状态包含两个主要部分:更新门(update gate)和重置门(reset gate)。

  1. 更新门(update gate):

    • GRU使用sigmoid函数来控制该门的输出范围在0到1之间。
    • 更新门决定了上一个时间步的隐藏状态与当前时间步的输入是否需要更新。如果更新门接近0,则保持过去的信息不变;如果接近1,则更新隐藏状态。
  2. 重置门(reset gate):

    • 重置门也是一个sigmoid函数,用于控制之前的隐藏状态对当前时间步的输入的遗忘程度。
    • 重置门将决定是否忽略或遗忘之前的隐藏状态。
  3. 候选隐藏状态:

    • 在每个时间步,GRU根据当前时间步的输入、上一个时间步的隐藏状态和重置门来计算候选隐藏状态。
  4. 更新隐藏状态:

    • GRU使用更新门以及候选隐藏状态来计算当前时间步的隐藏状态。

通过引入更新门和重置门,GRU能够灵活地控制隐藏状态的传递和更新,以更好地捕捉长期依赖关系。相比于传统的RNN,GRU时序上的信息流更加平滑,也减少了梯度消失和梯度爆炸的问题,提高了对长序列数据的建模能力。

三、LSTM

长短期记忆网络(Long Short-Term Memory,LSTM)是一种改进的循环神经网络(RNN)结构,用于解决传统RNN在处理长期依赖关系时容易出现梯度消失或梯度爆炸的问题。

LSTM通过引入门控机制,能够选择性地更新、遗忘和输出信息,并通过门控单元来控制隐藏状态的传递和更新。下面是LSTM的工作原理:

LSTM中的隐藏状态包含三个主要部分:输入门(input gate)、遗忘门(forget gate)和输出门(output gate)。

  1. 输入门(input gate):

    • 输入门使用sigmoid函数来控制该门的输出范围在0到1之间。
    • 输入门决定哪些信息可以通过并更新到隐藏状态。
  2. 遗忘门(forget gate):

    • 遗忘门也是一个sigmoid函数,用于控制前一个时间步的隐藏状态对当前时间步的输入的遗忘程度。
    • 遗忘门将决定是否忽略或遗忘之前的隐藏状态。
  3. 候选隐藏状态:

    • 在每个时间步,LSTM根据当前时间步的输入、上一个时间步的隐藏状态和输入门来计算候选隐藏状态。
  4. 细胞状态(cell state):

    • LSTM引入了一个细胞状态,用于存储并传递长期依赖的信息。
    • 细胞状态通过遗忘门、输入门和候选隐藏状态来更新。
  5. 输出门(output gate):

    • 输出门使用sigmoid函数来控制该门的输出范围在0到1之间。
    • 输出门决定经过细胞状态更新后的隐藏状态的输出。
  6. 隐藏状态的更新:

    • LSTM使用输出门以及经过细胞状态更新的隐藏状态来计算当前时间步的隐藏状态。

通过引入输入门、遗忘门和输出门,LSTM能够有效地控制细胞状态和隐藏状态的传递与更新,以更好地捕捉和保留长期依赖关系。相比于传统的RNN,LSTM具有较强的记忆能力和更好的梯度流动性,适用于处理长序列数据和涉及长期依赖的任务。

四、GRU vs LSTM

LSTM(长短期记忆网络)和GRU(门控循环单元)都是改进的循环神经网络结构,旨在解决传统RNN在处理长期依赖关系时的问题。下面是LSTM和GRU之间的一些比较点:

  1. 结构复杂度:

    • LSTM相对于GRU有更复杂的结构,包含输入门、遗忘门、输出门以及细胞状态的更新,因此参数数量相对较多。
    • GRU相对于LSTM较为简单,只包含更新门和重置门,相对参数数量较少。
  2. 记忆能力:

    • LSTM和GRU都具有较强的记忆能力,可以捕捉和保留长期依赖关系。
    • LSTM通过细胞状态的维护和控制,能够更好地存储和传递长期记忆。
    • GRU也可以捕捉长期依赖关系,但其使用重置门和更新门的方式控制了隐藏状态的传递和更新。
  3. 训练速度和计算性能:

    • GRU相对于LSTM具有计算上的优势,因为GRU的结构相对简单,计算开销较小。
    • LSTM相对复杂一些,计算开销相对较大,但在某些任务中可能表现更好。
  4. 模型解释性:

    • GRU相对于LSTM来说,结构较为清晰和直观,更易于理解和解释。
    • LSTM由于其复杂的结构,可能不太直观,解释起来相对困难一些。

总体来说,LSTM和GRU在处理长期依赖关系时都相对于传统的RNN表现得更好。选择使用LSTM还是GRU取决于具体的任务需求和数据集特点。如果模型的计算性能比较重要或数据集规模较大,可以考虑使用GRU。而如果对于较复杂的序列依赖关系有更高的要求或需要更强的记忆能力,LSTM可能是一个更好的选择。

五、双向RNN

双向循环神经网络(Bidirectional Recurrent Neural Network,BiRNN)是一种循环神经网络(RNN)的扩展,能够同时考虑序列数据的过去和未来信息。

在传统的RNN中,隐藏状态的更新只依赖于过去的输入。而双向RNN通过引入一个额外的逆向隐藏状态,可以同时利用过去和未来的输入信息来更新当前时间步的隐藏状态。

双向RNN的原理如下:

  1. 正向传播(forward pass):

    • 正向传播是从序列的开始到结束的顺序进行的,和传统的RNN类似。
    • 在正向传播中,每个时间步的隐藏状态ht由当前时间步的输入xt和上一个时间步的隐藏状态ht-1计算得到。
  2. 逆向传播(backward pass):

    • 逆向传播是从序列的结束到开始的逆序进行的。
    • 在逆向传播中,每个时间步的隐藏状态ht’由当前时间步的输入xt’和上一个时间步的隐藏状态ht’+1计算得到。
  3. 合并隐藏状态:

    • 将正向传播和逆向传播得到的隐藏状态进行合并。
    • 在每个时间步,将正向传播的隐藏状态ht和逆向传播的隐藏状态ht’进行拼接,得到最终的双向隐藏状态hbi = [ht; ht’]。

通过双向RNN,模型能够同时考虑到当前时间步之前和之后的上下文信息,从而更好地捕捉和理解序列数据中的双向依赖关系。

双向RNN常用于对序列数据进行建模,如自然语言处理中的词性标注、命名实体识别等任务。它能够综合考虑到上下文的信息,对于理解语义、处理歧义以及对序列中的长距离依赖关系有一定的优势。

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

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

相关文章

基于51单片机温湿度-烟雾-一氧化碳-蓝牙-风扇的设计与实现

功能介绍 以51单片机作为主控系统;LCD1602液晶显示屏来显示显示测得的值;一氧化碳感应一氧化碳的数值;通过烟雾传感器获取前的烟雾值;通过DHT11温湿度传感器来获取当前的温湿度;当温度或烟雾高于阈值打开风扇&#xff…

折叠屏手机再添新功能?OPPOColorOS14发布,打通 App 和终端互联

近年来,多终端互联互通已经成为数码产品的发展趋势,各家手机品牌也在不断提升相关功能。 根据数码博主 数码闲聊站的爆料,OPPO即将发布ColorOS 14,并特别提供了针对折叠屏手机的Fold系统。该系统在横屏模式下对自带应用进行了更好…

工程项目综合管理系统拥有哪些功能,你真的了解吗?

在建筑工程行业中,项目的管理是一项复杂而又关键的任务。为了提高项目管理的效率和准确性,许多企业开始采用信息化系统进行精细化管理。因此,建立一套完善的工程项目管理系统,成为了建筑工程管理的必要条件之一。这种系统结合了工…

pytest+yaml实现接口自动化框架

目录 前言 项目结构设计 yaml格式的用例 运行用例 总结: 前言 httprunner 用 yaml 文件实现接口自动化框架很好用,最近在看 pytest 框架,于是参考 httprunner的用例格式,写了一个差不多的 pytest 版的简易框架 项目结构设计…

【PowerDesigner】数据库建模工具记录

导入格式 最终效果 执行语句 工具(tool) -> 其他记录 执行脚本 快捷键:CtrlShiftX 工具(tool) -》Execute Commands -》 Edit/Run Script 导入脚本 快捷键:Ctrl R 数据库-》Update Model from Database 显示首选项 ODBC 数据源管理程序 Powerd…

Istio 流量管理 serviceEntry 出口流量管理

无论是vs还是dr这些都是入口的流量。对于pod来说也会有出去的流量的。 除了对进来的流量做有效的控制之外,其实也可以控制出去的流量。istio-egress是出口网关,pod出去的时候要经过egress-gateway到达外界的某个终端。 hosts: - www.baidu.com 这个是p…

腾讯云对象存储联合DataBend云数仓打通数据湖和数据仓库

随着数字化进程不断深入,数据呈大规模、多样性的爆发式增长。为满足更多样、更复杂的业务数据处理分析的诉求,湖仓一体应运而生。在Gartner发布的《Hype Cycle for Data Management 2021》中,湖仓一体(Lake house)首次…

Linux之CentOS_7.9卸载MySQL_5.7全过程实操手册

前言:接以上,前面记录了Windows和Linux环境的MySQL部署,那我们既然都部署完成验证测试那就来个卸载记录吧,便于闭环收尾。 环境: 1、CentOS-7.9-x86_64-DVD-2009.iso 2、MySQL-5.7.42-linux-glibc2.12-x86_641、关闭…

软件测试工程师生存手册

以前做传统行业时,从来没担忧过自己会因为什么事被干掉,因为觉得自己工资低。培训转行跳到IT互联网公司后,这种担忧从未消失过。 互联网公司发展迭代非常迅速。今天通过切身的感受来聊一聊,作为一名测试工程师,如何才能…

OutOfMemoryError: unable to create new native thread.

在java应用中,有时候会出现这样的错误:OutOfMemoryError: unable to create new native thread.现象1. 这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5G),并且它至少要占用可用内存的一半;2. 在线程个数很多的情况下&#…

电脑便签怎么嵌入桌面使其不可移动呢?

很多人在使用电脑便签的时候,为了更方便地查看和记录事情,经常会有一种需求:将电脑便签固定在桌面底层,也就是嵌入桌面,并且让他不可移动。要想实现这种效果的话,应该如何设置才可以呢?以Window…

kettle/spoon工具的表输入/输出组件更新数据很慢

看了很多关于表输出速度慢的博客感觉有两条对我有作用。 我的问题是表输出(insert)速度很快,但是插入/更新组件的速度特别忙。 表输出速度慢 mysql表输出的时候出现减速的原因可能是因为网络链接的属性设置 在数据库连接里添加参数&#xf…

ModaHub魔搭社区:如何安装、部署和使用 Milvus Lite?

目录 如何安装、部署和使用 Milvus Lite? 总结 如何安装、部署和使用 Milvus Lite? 准备工作 在正式安装 Milvus Lite 以前,需要做足以下准备: 安装 Python 3.7 或更高版本。 使用下述任何一个经过验证的操作系统:Ubuntu > 20.04 …

【MySQL入门到精通-黑马程序员】MySQL基础篇-概述及MySQL环境配置

文章目录 前言一、MySQL概述1.1 数据库相关概念1.2 MySQL数据库 二、数据模型三、总结 前言 本专栏文章为观看黑马程序员《MySQL入门到精通》所做笔记,课程地址在这。如有侵权,立即删除。 一、MySQL概述 1.1 数据库相关概念 数据库(DataBas…

FreeRTOS实时操作系统(十一)队列集

系列文章目录 文章目录 系列文章目录队列集简介相关API函数队列集创建函数队列集中移除函数队列集中获取有消息的队列 实验测试: 队列集简介 队列只允许传递一种数据类型,队列集可以传递多种消息。 作用:用于对多个队列或信号量进行“监听”…

PicoNeo neo入门教程2 SDK

目前在使用的是Unity XR SDK V2.x, 当前版本2.2.0版本 查看文档,有更新日志。 api接口:API 接口函数 - PICO 开发者平台

Pytorch TensorRT 安装使用流程

1.安装GPU驱动与Cudnn(注意版本对应) 2.安装TensorRT 安装流程1 安装流程2 3. 权值.pth文件转为Onnx 3.Onnx 文件本地化 .engine 文件(与本机算力有关) 执行命令: trtexec --onnx./resnet.onnx --saveEngineresn…

MongoDB【MongoDB应用实战】(四)-全面详解(学习总结---从入门到深化)

目录 MongoDB应用实战 多键索引 多键索引用于为数组中的元素创建索引 先创建集合inventory,使用下面的数据来创建多键索引 [{ _id: 5, type: "food", item: "aaa", ratings:[ 5, 8, 9 ] }, { _id: 6, type: "food", item: "b…

2023年7月4日 星期二 linux驱动作业

Linux内核驱动开发板的灯的实验 头文件 #ifndef __HEAD_H__ #define __HEAD_H__#define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_RCC 0X50000A28#define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0x50007014#define PHY_LED…

LK409.最长回文字符串

题目描述 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。 在构造过程中,请注意 区分大小写 。比如 “Aa” 不能当做一个回文字符串。 解题思路 有两种情况可以构成回文字符串: 1.全部字符呈偶数对出现 2.一…