循环神经网络 - 深层循环神经网络

news2025/4/19 11:11:55

如果将深度定义为网络中信息传递路径长度的话,循环神经网络可以看作既“深”又“浅”的网络。

一方面来说,如果我们把循环网络按时间展开,长时间间隔的状态之间的路径很长,循环网络可以看作一个非常深的网络。

从另一方面来 说,如果同一时刻网络输入到输出之间的路径𝒙𝑡 → 𝒚𝑡,这个网络是非常浅的。

因此,我们可以增加循环神经网络的深度从而增强循环神经网络的能力。增加循环神经网络的深度主要是增加同一时刻网络输入到输出之间的路径 𝒙𝑡 → 𝑦𝑡,比如增加隐状态到输出 𝒉𝑡 → 𝒚𝑡,以及输入到隐状态 𝒙𝑡 → 𝒉𝑡 之间的路径的深度。

本文我来学习两种常见的增加循环神经网络深度的做法。

一、堆叠循环神经网络

堆叠循环神经网络(Stacked RNN)是将多个循环神经网络层级组合在一起的结构,也称为循环多层感知器,相当于在时间序列上“堆叠”多层隐状态,从而提高模型对信息的抽象能力和表达复杂性。

1. 基本概念

在传统的单层 RNN 中,每个时间步的隐藏状态 ht 的计算通常为:

而在堆叠 RNN 中,我们将多个这样的 RNN 单元按层级排列,通常称为“深层 RNN”或“堆叠 RNN”。例如,假设我们有两层 RNN:

  • 第一层 RNN(低层)处理原始输入序列 xt 产生隐层表示

  • 第二层 RNN(高层)以第一层的输出作为输入,进一步生成更高层次的表示

这种设计使得低层可以捕捉局部、短期的信息,而高层则能抽象出全局或更复杂的模式,特别适合于具有多层语义结构的任务,如自然语言处理、语音识别、时间序列预测等。

下图给出了按时间展开的堆叠循环神经网络:

第 𝑙 层网络的输入是第 𝑙 − 1 层网络的输出。我们定义  为在时刻 𝑡 时第 𝑙 层的隐状态:

2. 具体例子

任务: 对简单数列进行预测——给定输入序列 [1, 2, 3],目标输出为 [2, 3, 4],即每个数字加 1。

模型设定:

  • 输入和输出均为标量。

  • 我们使用一个两层 RNN,每层都有一个隐藏单元(为了便于示例,我们这里采用单隐藏单元,但后续扩展到多维也类似)。

第一层 RNN(层 1):

公式:

假设参数为:

计算过程:

  • 时间步 1 (t=1):

  • 时间步 2 (t=2):

  • 时间步 3 (t=3):

第二层 RNN(层 2):

公式:

假设参数为:

计算过程:

  • 时间步 1 (t=1):

  • 时间步 2 (t=2):

  • 时间步 3 (t=3):

输出层:

假设将第二层的隐藏状态直接映射为输出,公式为:

假设参数为:

则最终模型输出:

  • y1≈0.1826

  • y2≈0.347

  • y3≈0.418

为使输出反映“每个数字加 1”,假设目标输出应该为 [2, 3, 4],当前输出与目标有较大差距。通过反向传播(例如均方误差损失)计算梯度,再结合 BPTT,将误差信息逐层反传,从第二层到第一层,对各层参数 进行更新。

经过多轮迭代后,模型逐渐学会如何利用低层提取到的局部特征和高层传递到整体抽象信息,使得输出能够更准确地逼近目标(例如最终输出 [2, 3, 4])。

3. 为什么使用堆叠 RNN?

  • 抽取多层次特征
    低层可以捕捉输入中局部、短期的模式,比如简单的数值变化;高层则能捕捉更抽象的全局信息,如序列整体趋势、结构关系等。

  • 提高模型表现
    对于复杂任务,例如机器翻译或情感分析,堆叠 RNN 能够实现更深入的信息处理,进而提升性能。

4. 应用场景

  • 自然语言处理
    在语句建模、语言翻译中,堆叠 RNN 能够从词汇级别到句子级别提取不同层次的语法和语义信息。

  • 语音识别
    利用多层结构捕捉语音信号中局部发音和全局语调等特征,提升识别准确率。

  • 时间序列预测
    在金融数据、传感器数据等任务中,堆叠 RNN 能够建模短期波动和长期趋势,提高预测精度。

堆叠循环神经网络通过在不同层次上堆叠多个 RNN 层,使模型能够逐步抽象出从局部模式到全局语义的复杂表示。在以上例子中,我们以简单的数字序列预测为例,通过两层 RNN 分别提取原始输入的低级特征和高级抽象信息,再通过输出层映射得到预测结果。尽管示例中采用了非常简单的数值和单隐藏单元,但在实际应用中,这种多层结构可以大幅提升模型对长序列和复杂依赖关系的表达能力,因此在 NLP、语音识别、时间序列预测等领域得到广泛应用。

二、双向循环神经网络 

在有些任务中,一个时刻的输出不但和过去时刻的信息有关,也和后续时刻 的信息有关。比如给定一个句子,其中一个词的词性由它的上下文决定,即包含左右两边的信息。因此,在这些任务中,我们可以增加一个按照时间的逆序来传递信息的网络层,来增强网络的能力。即所谓的双向循环神经网络,由两层循环神经网络组成,它们的输入相同,只是信息传递的方向不同:

假设第 1 层按时间顺序,第 2 层按时间逆序,在时刻 𝑡 时的隐状态定义为

双向循环神经网络(Bidirectional RNN, Bi-RNN)是一种扩展自传统RNN的架构,其基本思想是同时利用序列的正向和反向信息,从而使每个时间步的隐层状态能够综合考虑前后文信息。这对于很多自然语言处理任务非常关键,因为理解一个词语或字符往往不仅依赖于它之前的信息,也与它之后的语境密切相关。

下图给出了按时间展开的双向循环神经网络:

下面通过详细的解释和一个具体例子来说明双向RNN的原理和应用。

1. 核心原理

在传统的单向RNN中,隐藏状态 ht 只依赖于从序列起点到时间步 t 的信息,这意味着对于当前时间步的输出,只能利用其历史信息。这在某些任务中可能不足以捕捉上下文的全部信息。

双向RNN的关键在于构建两个RNN子网络:

最后,把正向和反向隐藏状态进行合并(例如拼接、加权平均或求和),形成每个时间步的综合表示 ht=。这种综合表示既包含了过去的信息,也包含了未来的信息,为后续任务(如分类、标注、生成)提供了更完整的上下文。

2. 详细例子:命名实体识别(NER)

任务说明:
在命名实体识别任务中,我们需要从一段文本中识别出人名、地点、组织等实体。正确判断一个词是否为实体,往往需要综合该词前后的上下文信息。

输入示例:
假设有一句话:"Barack Obama visited Berlin last summer."
我们对这句话进行分词,得到:

["Barack", "Obama", "visited", "Berlin", "last", "summer"]

双向RNN建模:

  1. 正向处理:
    正向RNN从第一个单词 "Barack" 开始,一直向后计算隐藏状态:

    其中 f 表示 RNN 单元的前向更新函数,这里可理解为典型的 tanh⁡(Wx+Uh+b) 形式。

  2. 反向处理:
    反向RNN从最后一个单词 "summer" 开始,往回计算隐藏状态:

  3. 合并隐藏状态:

模型训练和输出:

  • 训练过程中,模型会在每个时间步计算一个预测(例如通过 softmax 输出每个词的实体类别标签)。

  • 损失函数(如交叉熵)被计算在整个序列上,反向传播时两个方向的梯度分别求出,再根据参数共享机制更新网络参数。

  • 经过训练,模型能学习到如何利用正向和反向信息共同对每个词进行分类,从而提高命名实体识别的准确率。

3. 应用场景

  • 命名实体识别、序列标注等 NLP 任务
    例如,翻译、情感分析、对话系统中,词的含义往往受其前后文影响,双向RNN可以同时捕捉两侧上下文信息,从而提升模型性能。

  • 语音识别
    在语音识别中,双向模型可以利用未来和过去的信息提高语音转写的准确率,尤其是在需要后处理来消除噪音的场景中更为有效。

  • 视频分析任务
    在一些需要同时考虑前后帧信息的任务(如视频中的动作识别)中,双向信息也能提供更全面的时间上下文。

双向循环神经网络通过并行计算正向和反向隐藏状态,并将它们合并为每个时间步的最终表示,使得每个时间步的输出不仅利用了过去信息,也利用了未来信息。以命名实体识别任务为例,双向RNN能够为每个单词提供全局上下文的特征,显著提升了序列标注的准确性。这种方法广泛应用于需要全局语境理解的自然语言处理、语音识别和视频分析任务中,成为提升序列模型性能的重要技术之一。

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

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

相关文章

linux运维篇-Ubuntu(debian)系操作系统创建源仓库

适用范围 适用于Ubuntu(Debian)及其衍生版本的linux系统 例如,国产化操作系统kylin-desktop-v10 简介 先来看下我们需要创建出来的仓库目录结构 Deb_conf_test apt源的主目录 conf 配置文件存放目录 conf目录下存放两个配置文件&…

深度学习之微积分

2.4.1 导数和微分 2.4.2 偏导数 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/17227e00adb14472902baba4da675aed.png 2.4.3 梯度 具体证明,矩阵-向量积

20242817李臻《Linux⾼级编程实践》第7周

20242817李臻《Linux⾼级编程实践》第7周 一、AI对学习内容的总结 第八章:多线程编程 8.1 多线程概念 进程与线程的区别: 进程是资源分配单位,拥有独立的地址空间、全局变量、打开的文件等。线程是调度单位,在同一进程内的线程…

浙江大学:DeepSeek如何引领智慧医疗的革新之路?|48页PPT下载方法

导 读INTRODUCTION 随着人工智能技术的飞速发展,DeepSeek等大模型正在引领医疗行业进入一个全新的智慧医疗时代。这些先进的技术不仅正在改变医疗服务的提供方式,还在提高医疗质量和效率方面展现出巨大潜力。 想象一下,当你走进医院&#xff…

Android基础彻底解析-APK入口点,xml,组件,脱壳,逆向

第一章:引言与背景 Android逆向工程,作为一种深入分析Android应用程序的技术,主要目的就是通过分析应用的代码、资源和行为来理解其功能、结构和潜在的安全问题。它不仅仅是对应用进行破解或修改,更重要的是帮助开发者、研究人员和安全人员发现并解决安全隐患。 本文主要对…

ubuntu 2204 安装 vcs 2018

安装评估 系统 : Ubuntu 22.04.1 LTS 磁盘 : ubuntu 自身占用了 9.9G , 按照如下步骤 安装后 , 安装后的软件 占用 13.1G 仓库 : 由于安装 libpng12-0 , 添加了一个仓库 安装包 : 安装了多个包(lsb及其依赖包 libpng12-0)安装步骤 参考 ubuntu2018 安装 vcs2018 安装该…

逆向|中国产业政策大数据平台|请求体加密

2025-04-11 逆向地址:aHR0cDovL3poZW5nY2UuMmIuY24v 打开开发者工具出现debugger,直接注入脚本过掉无限debugger let aaa Function.prototype.constructor; Function.prototype.constructor function (params) { if(params ‘debugger’){ console.log(params); return null…

游戏引擎学习第226天

引言,计划 我们目前的目标是开始构建“元游戏”结构。所谓元游戏,指的是不直接属于核心玩法本身,但又是游戏体验不可或缺的一部分,比如主菜单、标题画面、存档选择、选项设置、过场动画等。我们正在慢慢将这些系统结构搭建起来。…

Notepad++安装Markdown实时预览插件

具体操作 打开notepad -> 插件 -> 插件管理 -> 可用 -> “Markdown Panel” -> 安装,安装完成后工具栏点击"Markdown Panel"按钮。 注意:由于网络等原因可能安装失败 导致工具栏没出现""Markdown Panel"按钮&am…

Mysql-视图和存储过程

视图 1.介绍 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条…

stm32面试

数据结构相关问题 stm32面试 数据结构相关问题 目录基础数据结构树与图排序与查找算法 Linux相关问题Linux系统基础Linux命令与脚本Linux网络与服务 操作系统相关问题操作系统基础概念操作系统调度算法操作系统同步与通信 STM32相关问题STM32硬件基础STM32编程与开发STM32应用与…

202524 | 分布式事务

分布式事务(Distributed Transaction) 分布式事务是指跨多个数据库、服务或系统节点的事务操作,要求所有参与方要么全部成功提交,要么全部回滚,保证数据一致性。 1. 为什么需要分布式事务? 在单体应用中&…

在 macOS 上修改 最大文件描述符限制(Too many open files) 和 网络端口相关参数 需要调整系统级配置的详细步骤

在 macOS 上修改 最大文件描述符限制(Too many open files) 和 网络端口相关参数 需要调整系统级配置。以下是详细步骤: 在 macOS 上修改 最大文件描述符限制(Too many open files) 和 网络端口相关参数 需要调整系统级…

通过Arduino IDE向闪存文件系统上传文件

注意:适用于Arduino IDE 2.0版本以上。对于Arduino IDE版本在2.0以下的请参考太极创客的教程:http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/spiffs/upload-files/。 1. 下载脚本文件 下载地址:https://github.com/earl…

leetcode 121. Best Time to Buy and Sell Stock

题目描述 本题属于动态规划类问题。 dp数组的含义 dp[i][0]表示从第0天到第i天为止,处于持有股票的状态下,账户里的最大金额。 dp[i][1]表示从第0天到第i天为止,处于不持有股票的状态下,账户里的最大金额。 按照这个定义dp[n-…

【Docker-13】Docker Container容器

Docker Container(容器) 一、什么是容器? 通俗地讲,容器是镜像的运行实体。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容器有…

蓝宝石狼组织升级攻击工具包,利用新型紫水晶窃密软件瞄准能源企业

网络安全专家发现,被称为"蓝宝石狼"(Sapphire Werewolf)的威胁组织正在使用升级版"紫水晶"(Amethyst)窃密软件,对能源行业企业发起复杂攻击活动。此次攻击标志着该组织能力显著提升&am…

关于我的服务器

最近我买了台腾讯云服务器,然后新手小白只会用宝塔。。。 安装完之后默认的端口是8888,打开面板就会提示我有风险。然后 我改了端口之后,怎么都打不开。 于是 学到了几句命令可以使用: //查看端口是否已经修改成功 cat www/se…

vue + element-plus自定义表单验证(修改密码业务)

写一个vue组件Password.vue 没有表单验证只有3个表单项 <template><div><el-form><el-form-item label"旧密码"><el-input></el-input></el-form-item><el-form-item label"新密码"><el-input>&l…

2025年第十八届“认证杯”数学中国数学建模网络挑战赛【BC题】完整版+代码+结果

# 问题一&#xff1a;随机森林回归from sklearn.ensemble import RandomForestRegressormodel_rf RandomForestRegressor()model_rf.fit(X_train, y_train)# 问题二&#xff1a;LSTM时间序列预测from tensorflow.keras.models import Sequentialmodel_lstm Sequential()model…