当前位置: 首页 > news >正文

【机器学习300问】125、什么是双向循环神经网络(BRNN)?什么是深度循环神经网络(DRNN)?

一、双向循环神经网络

(1)诞生背景

        双向循环神经网络(Bidirectional Recurrenct Neural Network, BRNN)是在深度学习领域发展起来的一种特殊类型的循环神经网络(RNN),它诞生的背景是为了解决传统RNN只能单向处理序列信息的缺点。

命令实体识别为例

        上图例子中,“teddy”之前信息(上文)无法帮助模型判断“teddy”是不是人名,只有在得知后续的信息(下文)才能做出准确的判断。

        传统RNN在处理序列数据时,存在这信息流动限制,只能从前向后或者从后向前传播信息。这意味着在给定时间点,模型的决策仅基于到目前为止的过去信息。这对于那些需要同时理解序列前后上下文的任务来说是个限制。

(2)BRNN的网络结构

        双向循环神经网络(BRNN)的基本结构包含两个并行的循环神经网络层,一个负责正向传播信息(从过去到未来),另一个负责逆向传播信息(从未来到过去)。这两个方向的RNN共享同一个隐藏层的维度,但它们的权重通常不共享。

对上面图中BRNN典型架构进行说明,建议看的时候对照数学符号解释:

① 输入层(Input Layer):接收序列数据,每个时间步有一个输入向量。

② 正向循环层(Forward RNN Layer):这个层中的单元从序列的第一个元素开始,逐个时间步向前传播信息。每个时间步,它会根据当前输入和前一时间步的隐藏状态计算新的隐藏状态。

\overrightarrow{h_t} = \overrightarrow{f}(W_{x\overrightarrow{h}} x_t + W_{\overrightarrow{h}\overrightarrow{h}} \overrightarrow{h}_{t-1} + b_{\overrightarrow{h}})

x_t表示时间步t 的输入。

③ 逆向循环层(Backward RNN Layer):与正向层平行运行,但方向相反,从序列的最后一个元素开始,向序列的起始处传播信息。同样,每个时间步,它根据当前输入(实际上是序列中的倒数第几个元素)和前一时间步(未来时间步的逆向看)的隐藏状态更新隐藏状态。

\overleftarrow{h_t} = \overleftarrow{f}(W_{x\overleftarrow{h}} x_t + W_{\overleftarrow{h}\overleftarrow{h}} \overleftarrow{h}_{t+1} + b_{\overleftarrow{h}})

④ 合并层(Merge Layer):在每个时间步,正向和逆向隐藏状态会被合并,常见的合并方式有拼接、求和或乘积等,以形成一个综合的上下文向量。这个向量包含了当前位置基于整个序列上下文的信息。

⑤ 输出层(Output Layer):基于合并后的上下文向量,输出层负责生成最终的预测或分类结果。这可以通过全连接层加上适当的激活函数(如softmax用于多分类问题)来实现。

y_t = g(W_{\overrightarrow{h}y} \overrightarrow{h_t} + W_{\overleftarrow{h}y} \overleftarrow{h_t} + b_y)

        其中g是输出层的激活函数,它常常是 softmax 函数用于分类任务。W_{\overrightarrow{h}y}W_{\overleftarrow{h}y}是隐藏状态到输出的权重矩阵,b_y是输出层的偏置项。

数学符号解释
符号解释
x_t时间步t的输入
\overrightarrow{h_t}时间步t的正向 RNN 隐藏状态
\overleftarrow{h_t}时间步t的反向 RNN 隐藏状态
\overrightarrow{f}正向 RNN 的激活函数
\overleftarrow{f}反向 RNN 的激活函数
W_{x\overrightarrow{h}}输入到正向隐藏层权重
W_{\overrightarrow{h}\overrightarrow{h}}正向隐藏层自身循环权重
W_{x\overleftarrow{h}}输入到反向隐藏层权重
W_{\overleftarrow{h}\overleftarrow{h}}反向隐藏层自身循环权重
b_{\overrightarrow{h}}正向隐藏层偏置项
b_{\overleftarrow{h}}反向隐藏层偏置项
y_t时间步t的输出
W_{\overrightarrow{h}y}从正向隐藏状态到输出的权重矩阵
W_{\overleftarrow{h}y}从反向隐藏状态到输出的权重矩阵
b_y输出层偏置项
g输出层激活函数,通常为 softmax

(3)使用领域

        双向循环神经网络的提出,是为了更有效地捕获和利用序列数据中的上下文信息,BRNN多使用在诸如一下场景中:

  1. 自然语言处理:在理解一句话的语义时,往往需要同时考虑前面的词(前向上下文)和后面的词(后向上下文)。比如情感分析任务中,“昨天晚上我吃了一顿美味的火锅,今天早上就拉肚子了。”在“火锅”的上文中我们得知,火锅是“美味的”,情感是正向的。在下文中我们得知“拉肚子”,情感是负向的。如果我们仅仅考上文,就无法准确的判断。

  2. 语音识别:在语音信号处理中,一个音素的准确识别可能依赖于其前后相邻的音素特征,双向结构有助于提高识别精度。

  3. 机器翻译:翻译任务要求模型理解源语言句子的整体含义,这通常需要综合考虑句子开头和结尾的信息。BRNN能够提供更为全面的上下文理解能力。

二、深度循环神经网络

(1)DRNN的定义

        深度循环神经网络(Deep Recurrent Neural Network,简称DRNN)是一种扩展了传统循环神经网络(RNN)结构的深度学习模型,特别适合处理长序列数据和复杂的时序依赖问题。在DRNN中,通过堆叠多个循环层,使得模型能够捕捉到更高层次的抽象特征和更长距离的时间依赖关系。

(2)DRNN的网络结构

        在深度RNN中,每个时间步的输入会首先通过第一层循环网络,其输出会成为第二层循环网络的输入,这一过程会持续到达最顶层的循环网络。每一层都可以学习到不同程度的序列抽象,更底层的网络可能会学习到一些局部模式或特征,而更高层的网络则可能会捕捉到更加全局或抽象的信息。

深度循环神经网络结构

(3)DRNN的优缺点

        优点:这种架构允许模型捕获数据在不同时间尺度上的复杂性,因为每一层都可以捕捉到序列数据在不同时间尺度上的特征,这使得深度RNN在处理复杂的序列任务(如机器翻译、语音识别或长文本生成)时,比单层RNN具有更强的表示能力。

        缺点:然而,深度RNN也引入了更多的复杂性和训练难度,例如更容易出现梯度消失或梯度爆炸的问题,因此通常需要采用一些高级技术(如梯度裁剪、层归一化、残差连接或使用LSTM、GRU等门控循环单元)来稳定训练过程。

相关文章:

【机器学习300问】125、什么是双向循环神经网络(BRNN)?什么是深度循环神经网络(DRNN)?

一、双向循环神经网络 (1)诞生背景 双向循环神经网络(Bidirectional Recurrenct Neural Network, BRNN)是在深度学习领域发展起来的一种特殊类型的循环神经网络(RNN),它诞生的背景是为了解决传…...

办公软件汇总

1、OCR 1.1 pearOCR pearOCR 是一个免费的免费在线文字提取OCR工具网站。PearOCR界面简洁,所有过程均在网页端完成,无需下载任何软件,点开即用。官方地址:https://pearocr.com/ 参考:9款文字识别(OCR)工具…...

Docker 搭建 MinIO 对象存储

Docker 搭建 MinIO 对象存储 一、MinIO MinIO 是一个高性能的对象存储服务器,用于构建云存储解决方案。MinIO 允许你存储非结构化数据(如图片、视频、日志文件等)以对象的形式。MinIO 提供简单的部署选项和易于使用的界面,允许你…...

主干网络篇 | YOLOv5/v7 更换骨干网络之 PP-LCNet | 轻量级CPU卷积神经网络

主干网络篇 | YOLOv5/v7 更换骨干网络之 PP-LCNet | 轻量级CPU卷积神经网络:中文详解 1. 简介 YOLOv5 和 YOLOv7 是目前主流的目标检测算法之一,具有速度快、精度高的特点。但 YOLOv5 和 YOLOv7 的原始模型结构中使用的是 MobileNetV3 作为骨干网络&am…...

CubeFS - 新一代云原生存储系统

CubeFS 是一种新一代云原生存储系统,支持 S3、HDFS 和 POSIX 等访问协议,支持多副本与纠删码两种存储引擎,为用户提供多租户、 多 AZ 部署以及跨区域复制等多种特性。 官方文档 CubeFS 作为一个云原生的分布式存储平台,提供了多种访问协议,因此其应用场景也非常广泛,下面…...

推动多模态智能模型发展:大型视觉语言模型综合多模态评测基准

随着人工智能技术的飞速发展,大型视觉语言模型(LVLMs)在多模态应用领域取得了显著进展。然而,现有的多模态评估基准测试在跟踪LVLMs发展方面存在不足。为了填补这一空白,本文介绍了MMT-Bench,这是一个全面的…...

深度学习31-33

1.负采样方案 (1)为0是负样本,负样本是认为构造出来的。正样本是有上下文关系 负采样的target是1,说明output word 在input word之后。 2.简介与安装 (1)caffe:比较经常用于图像识别,有卷积网…...

Docker多种场景下设置代理

20240623 - 公司内网环境下需要对Docker进行代理设置;此时需要对拉取镜像的时候的命令设置代理;例如平时经常使用的wget设置代理一样。但对docker进行设置,并不能简单的直接export。 文章[1]指出,拉取镜像的时候实际执行的是doc…...

node 实现导出, 在导出excel中包含图片(附件)

如果想查看 node mySql 实现数据的导入导出,以及导入批量插入的sql语句,连接如下 node mySql 实现数据的导入导出,以及导入批量插入的sql语句-CSDN博客https://blog.csdn.net/snows_l/article/details/139998373 一、效果如图: 二…...

【ai】trition:tritonclient yolov4:ubuntu18.04部署python client成功

X:\05_trition_yolov4_clients\01-python server代码在115上,client本想在windows上, 【ai】trition:tritonclient.utils.shared_memory 仅支持linux 看起来要分离。 【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行 client代码远程部署在ubuntu18.0…...

oracle 主从库中,从库APPLIED为YES ,但是主库任然为NO

主库 从库 从库已经APPLIED但是主库为APPLIED, 主数据库和备用数据库之间的ARCH-RFS心跳Ping负责更新主数据库上v$archived_log的APPLICED列。 在主数据库上有一个指定的心跳ARCn进程来执行此Ping。如果此进程开始挂起,它将不再与远程RFS进程通信&#…...

VS 在多线程中仅调试某个线程

调试多线程程序时,只想观察某个线程的运行情况; 但是,由于线程切换执行,会导致调试时焦点在几个代码块之间跳来跳去,故需要解决这个问题。 参考文章: C#使用线程窗口调试多线程程序。 1 打开线程窗口&…...

全球无界,语言无阻——魔众帮助中心(多语言)系统全新升级!

🎉亲爱的用户们,你们好!今天,我要向大家隆重介绍一个颠覆传统,助力全球用户的利器——魔众帮助中心(多语言)系统的全新升级版本!🌟 🌐在这个日益全球化的时代,魔众帮助中…...

SpringCloud集成OpenFeign

一、简介 OpenFeign客户端是一个web声明式http远程调用工具,直接可以根据服务名称去注册中心拿到指定的服务IP集合,提供了接口和注解方式进行调用,内嵌集成了Ribbon本地负载均衡器。 二、SpringCloud集成OpenFeign 版本说明: S…...

Vue - 第3天

文章目录 一、Vue生命周期二、Vue生命周期钩子三、工程化开发和脚手架1. 开发Vue的两种方式2. 脚手架Vue CLI基本介绍:好处:使用步骤: 四、项目目录介绍和运行流程1. 项目目录介绍2. 运行流程 五、组件化开发六、根组件 App.vue1. 根组件介绍…...

21.智能指针(上)

目录 一、概念二、Box\<T\>2.1 概念与应用场景2.2 简单应用2.3 递归类型的创建 三、通过Deref trait将智能指针当作常规引用处理3.1 常规引用3.2 像引用一样使用Box\<T\>3.3 自定义智能指针3.4 函数和方法的隐式解引用强制转换3.5 解引用强制转换与可变性交互 四、…...

Jenkins+gitee流水线部署springboot项目

目录 前言 一、软件版本/仓库 二、准备工作 2.1 安装jdk 11 2.2 安装maven3.9.7 2.3 安装docker 2.4 docker部署jenkins容器 三、jenkins入门使用 3.1 新手入门 3.2 jenkins设置环境变量JDK、MAVEN、全局变量 3.2.1 jenkins页面 3.2.2 jenkins容器内部终端 3.2.3 全…...

python--os.walk()函数使用(超详细)

在Python 3.7中&#xff0c;os.walk()函数的用法与早期版本&#xff08;包括Python 3.4及之后&#xff09;保持一致。os.walk()是一个用于遍历目录树的生成器函数&#xff0c;它生成给定目录中的文件名。这个函数没有直接的参数&#xff08;除了你要遍历的目录路径&#xff0c;…...

基础名词概念

了解以下基础名词概念/定义&#xff1a; IP地址、子网掩码、网关、DNS、DHCP、MAC地址、网络拓扑、路由器、交换机、VPN、端口、TCP、UDP、HTTP、HTTPS、OSI模型、ARP、NAT、VLAN、FTP、SMTP、IMAP、SSL、ICMP、链路聚合、TRUNK、直连路由、静态路由、动态路由、IPV6 端口&am…...

ArkTS开发系列之Web组件的学习(2.9)

上篇回顾&#xff1a;ArkTS开发系列之事件&#xff08;2.8.2手势事件&#xff09; 本篇内容&#xff1a; ArkTS开发系列之Web组件的学习&#xff08;2.9&#xff09; 一、知识储备 Web组件就是用来展示网页的一个组件。具有页面加载、页面交互以及页面调试功能 1. 加载网络…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

论文阅读:Matting by Generation

今天介绍一篇关于 matting 抠图的文章&#xff0c;抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法&#xff0c;已经有很多的工作和这个任务相关。这两年 diffusion 模型很火&#xff0c;大家又开始用 diffusion 模型做各种 CV 任务了&am…...

Matlab实现任意伪彩色图像可视化显示

Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中&#xff0c;如何展示好看的实验结果图像非常重要&#xff01;&#xff01;&#xff01; 1、灰度原始图像 灰度图像每个像素点只有一个数值&#xff0c;代表该点的​​亮度&#xff08;或…...

【Zephyr 系列 16】构建 BLE + LoRa 协同通信系统:网关转发与混合调度实战

🧠关键词:Zephyr、BLE、LoRa、混合通信、事件驱动、网关中继、低功耗调度 📌面向读者:希望将 BLE 和 LoRa 结合应用于资产追踪、环境监测、远程数据采集等场景的开发者 📊篇幅预计:5300+ 字 🧭 背景与需求 在许多 IoT 项目中,单一通信方式往往难以兼顾近场数据采集…...

C#中用于控制自定义特性(Attribute)

我们来详细解释一下 [AttributeUsage(AttributeTargets.Class, AllowMultiple false, Inherited false)] 这个 C# 属性。 在 C# 中&#xff0c;Attribute&#xff08;特性&#xff09;是一种用于向程序元素&#xff08;如类、方法、属性等&#xff09;添加元数据的机制。Attr…...

SpringCloud优势

目录 完善的微服务支持 高可用性和容错性 灵活的配置管理 强大的服务网关 分布式追踪能力 丰富的社区生态 易于与其他技术栈集成 完善的微服务支持 Spring Cloud 提供了一整套工具和组件来支持微服务架构的开发,包括服务注册与发现、负载均衡、断路器、配置管理等功能…...