【机器学习300问】123、什么是GRU?GRU网络的基本结构是怎样的?

news2024/7/2 4:00:00

        在之前的文章中,我们谈到了标准RNN所面临的诸多困境,你也可以理解为RNN的缺点。其中最让人苦恼的就是梯度消失问题,正是由于梯度消失问题的存在,导致RNN无法获得上下文的长期依赖信息。那么就没有办法解决了吗?非也!本文就介绍一种改进网络结构——GRU

        关于传统RNN的知识可以看我之前的文章:【机器学习300问】118、循环神经网络(RNN)的基本结构是怎样的?icon-default.png?t=N7T8https://blog.csdn.net/qq_39780701/article/details/139685879

一、什么是GRU?

        GRU,即门控循环单元(Gated Recurrent Unit),是一种用于自然语言处理和其他序列任务的神经网络架构,是标准循环神经网络(RNN)的一种改进版本。GRU的核心在于它试图解决标准RNN的梯度消失问题,同时保留长期依赖信息。

        上面这段话的解释,太过于苍白无力,只知道它解决了梯度消失问题,却没说怎么解决的。要想弄清楚GRU相对标准RNN到底强在哪里,就必须要了解其基本结构。

二、GRU网络的基本结构

        先说结论:“GRU通过两种门组件和两种记忆状态解决了梯度消失”,接下来我们一个个好好看看这四大组件。

(1)四大组件

① 重置门

        重置门(reset gate),记为 r_t ,这个门决定了上一时间步的记忆状态如何影响当前时间步的候选记忆内容。计算时会结合前一时间步的隐藏状态 h_{t-1} 和当前输入 x_t ,输出是一个0到1之间的值。值越接近1表示越多地保留之前的状态,越接近0表示遗忘更多旧状态。对应的数学表达如下:

 r_t = \sigma(W_r \cdot [h_{t-1}, x_t])

② 更新门

        更新门(update gate),记为 z_t ,这个门决定了上一时间步的记忆状态有多少需要传递到当前时间步,以及当前的输入信息有多少需要加入到新的记忆状态中,同样,它也是基于 h_{t-1} 和 x_t 计算得到的。对应的数学表达如下:

z_t = \sigma(W_z \cdot [h_{t-1}, x_t])

③ 候选记忆状态

        候选记忆状态(candidate memory),记为 \tilde{h_t} ,这是基于当前输入 x_t  、上一时间步隐藏状态 h_{t-1}  以及重置门的输出,三者计算得到的。其中的重置门决定了如何“重置”旧的记忆状态,以便更好地整合新信息。对应的数学表达如下:

\tilde{h}_t = \tanh(W \cdot [r_t * h_{t-1}, x_t])

④ 最终记忆状态

        最终记忆状态(hidden state)记为 h_t ,通过结合更新门的输出和候选记忆状态以及上一时间步的记忆状态来计算得出的。其中更新门决定了新旧记忆的混合比例。对应的数学表达如下:

h_t = (1 - z_t) * h_{t-1} + z_t * \tilde{h}_t

让我们总结一下上面的各种符号,方便后期查阅:

符号解释
z_t更新门
r_t重置门
h_t当前时刻的隐藏状态
\tilde{h}_t候选隐藏状态
h_{t-1}前一时刻的隐藏状态
x_t当前时刻的输入
W,W_z,W_r对应的训练参数
\sigmasigmoid激活函数
*Hadamard积(按元素乘积)运算符

(2)到底长什么样?图解GRU

① 重置门和更新门的结构

        上图描述了门控循环单元中的重置门和更新门的输入, 输入是由当前时间步的输入和前一时间步的隐状态给出。 两个门的输出是由使用sigmoid激活函数的两个全连接层给出。

②  候选隐藏状态的结构

③ GRU的循环块结构

门控循环单元具有以下两个显著特征:

  • 重置门有助于捕获序列中的短期依赖关系;

  • 更新门有助于捕获序列中的长期依赖关系。

三、GRU为何能缓解梯度消失?

        在传统的RNN中,由于长时间依赖问题,反向传播过程中梯度可能会因连续乘以小于1的数而变得非常小,导致早期时间步的权重几乎不更新,这就是梯度消失问题。

而GRU通过其独特的门控机制,特别是更新门和重置门的设计,能够更加灵活地控制信息流:

  • 更新门:有助于模型决定在每一步中应该保留多少之前时刻的信息。它可以让模型在需要的时候保持激活状态,这样有助于后续的梯度传递而不会随时间迅速减小。如果更新门接近1,那么梯度可以在很多时间步内传递而不衰减,使得长期依赖的信息得到保留。
  • 重置门:帮助模型决定忽略多少之前的信息。重置门可以用来减少那些不太相关信息的影响,从而保护模型不会把注意力放在不相关的长期依赖上。当选择忽略一些不相关的信息时,梯度将不会在这部分信息上进行传递,这有助于集中于更相关的信息,并有助于梯度完整地在其他相关部分传递。

        因为有了这样的机制,GRU能够在每次更新中将梯度既不是完全传递也不是完全阻断,而是能够在相关的部分进行传递。这样在优化过程中,即使对于较长的序列,也能够更加稳定地保留梯度,防止了梯度极端消失,这对于学习长期依赖至关重要。因此,GRU往往在处理长序列数据时比传统RNN更加有效。

四、举个例子说明GRU的工作原理

        我们可以把某个学生的学习历程想象成一个时间序列,其中每个学科对应一个时间步骤上的输入数据。每个笔记代表了在特定时间点(假设从小学、初中、高中到大学)学习的内容。我们想利用GRU模型来理解学生的学习轨迹。

GRU在这个场景的应用解释:

① 输入序列

        在这个例子中的输入序列,就是学生学习的学科,例如他在高中时学习的学科:['语文', '数学', '英语', '编程', '物理']

② 初始化隐藏状态(小学时期)

        开始时,GRU有一个初始的隐藏状态h_0​,可以看作是学生开始学习时的一张“空白记忆板”。

③ 第t-1个时间步(高中时期)

        学生在高中时学习了一系列科目并做了笔记:['语文', '数学', '英语', '编程', '物理']。这些知识构成了他前一时间步隐藏状态 h_{t-1}

④ 第t个时间步(大学时期)

  • 更新门:现在学生在大学里学习深度学习,他需要回顾某些高中学科的知识。在GRU中,更新门将决定他之前学过哪些知识依然重要并且需要在他的记忆中保留(比如'数学'知识对于'微积分','线性代数'和'概率论'很重要;'编程'对'Python'和'机器学习基础'很重要)。
  • 重置门:对于那些与当前的深度学习不直接相关的旧知识(比如'语文'和'英语'),通过重置门,GRU可以决定减少对这些信息的依赖,从而让神经网络集中于更相关的信息(这里是数学和编程相关的科目)。
  • 候选记忆状态:在接触到新的科目后('微积分', '线性代数', 'Python', '概率论', '机器学习基础'),经过重置门过滤后,之前的知识和新的输入共同决定了新的候选隐藏状态。以此模拟学生如何将过去的知识与新知识结合起来。
  • 最终隐藏状态:更新门负责把新的候选隐藏状态与旧的隐藏状态结合起来,创造出最新的隐藏状态,代表学生整合了新旧知识后的当前知识水平。这一过程就是学生用之前学过的高中的数学和编程课程来帮助理解大学的深度学习课程。

        在反向传播过程中,GRU的这些门结构帮助了梯度在通过长序列时不会消失,确保即使时间跨度很长(比如从高中到大学),模型仍然能够学习到如何从过去的经验中获取有用的知识。在这个例子里,即使'物理'可能不直接相关深度学习,但如果更新门认为这部分知识还是有用的,那么信息依然可以被保留下来。在真实的GRU模型中,这一切都是通过网络自动学习到的权重来决定的。

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

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

相关文章

查看服务器端口,如何查看服务器端口是多少并修改

查看服务器端口并修改内容是一个涉及网络管理和系统配置的专业任务。以下是一个详细的步骤说明,用于查看和修改服务器端口。 一、查看服务器端口 1. 使用命令行工具: - 对于Linux或Unix系统,可以使用netstat、lsof或ss等命令来查看端口状…

深度神经网络——什么是降维?

引言 什么是降维? 降维是用于降低数据集维度的过程,采用许多特征并将它们表示为更少的特征。 例如,降维可用于将二十个特征的数据集减少到仅有几个特征。 降维通常用于无监督学习任务 降维是一个用于降低数据集维度的过程,采用许…

JupyterLab使用指南(四):JupyterLab的Magic 命令

1. 什么是 Magic 命令 Magic 命令是 JupyterLab 中的一类特殊命令,用于简化和增强代码的执行。它们以 % 或 %% 开头,可以进行各种操作,如时间测量、环境设置、文件操作等。Magic 命令分为行 Magic 命令和单元 Magic 命令两种。 行 Magic 命…

Transformer预测 | 基于Transformer的锂电池寿命预测(Pytorch,CALCE数据集)

文章目录 文章概述模型描述程序设计参考资料文章概述 Pytorch实现基于Transformer 的锂电池寿命预测,环境为pytorch 1.8.0,pandas 0.24.2 随着充放电次数的增加,锂电池的性能逐渐下降。电池的性能可以用容量来表示,故寿命预测 (RUL) 可以定义如下: SOH(t)=CtC0100%, 其中,…

远程访问电脑共享文件怎么设置

方法一:Microsoft远程桌面 1、在目标电脑上设置远程桌面: - 打开“开始”>“设置”>“系统”>“远程桌面”。 - 将“启用远程桌面”开关向右拖动以激活该功能。 - 记住计算机的账号和密码。 2、在手机上进行远程访问配置: - 从Googl…

数字孪生引领智慧校园建设新篇章

一、引言 在数字化浪潮的推动下,教育行业正经历着一场深刻的变革。智慧校园作为现代教育的新风向,通过整合先进的信息技术,正在逐步改变传统的教学、管理与服务模式。其中,数字孪生技术以其独特的优势,为智慧校园的建…

Day 26:2288. 价格减免

Leetcode 2288. 价格减免 句子 是由若干个单词组成的字符串,单词之间用单个空格分隔,其中每个单词可以包含数字、小写字母、和美元符号 ‘$’ 。如果单词的形式为美元符号后跟着一个非负实数,那么这个单词就表示一个 价格 。 例如 “$100”、…

【论文阅读】Multi-Camera Unified Pre-Training via 3D Scene Reconstruction

论文链接 代码链接 多摄像头三维感知已成为自动驾驶领域的一个重要研究领域,为基于激光雷达的解决方案提供了一种可行且具有成本效益的替代方案。具有成本效益的解决方案。现有的多摄像头算法主要依赖于单目 2D 预训练。然而,单目 2D 预训练忽略了多摄像…

API-操作元素内容

学习目标: 掌握操作元素内容 学习内容: 操作元素内容元素innerText属性元素innerHTML属性案例 操作元素内容: DOM对象都是根据标签生成的,所以操作标签,本质上就是操作DOM对象。就是操作对象使用的点语法。如果想要修…

python学习笔记-07

python内置函数 内置函数就是python自带的函数,不需要我们再去定义的,如print等直接使用即可,内置函数官方文档:官链。 1.数学运算 #数学运算: print(------abs()是绝对值函数------) a-1.1 print({}的绝对值是{}.fo…

高薪项目经理都在用的工具,你会几个?

甘特图、里程碑图、看版图、燃尽图、WBS、思维导图、流程图、鱼骨图、清单表、项目日历、关系矩阵、PERT图、决策树、状态表。这些工具,你会几个? 甘特图(Gantt Chart) 甘特图是一种条形图,用于展示项目任务的时间线&…

对SpringBoot入门案例的关键点

我们SpringBoot的入门案例中&#xff0c;即做了两个重要工作&#xff1a; 配置pom.xml文件写启动类 1.pom.xml依赖配置文件 ①帮助我们进行版本控制的父模块 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

泛微开发修炼之旅--20关于Ecology中如何查询正文文件的物理文件,并修改正文中的内容的解决方案

文章链接地址&#xff1a;20关于Ecology中如何查询正文文件的物理文件&#xff0c;并修改正文中的内容的解决方案

沃尔玛超市礼品卡有什么用?

最近端午节 有亲戚送了几张沃尔玛超市的卡做礼物过来 但是我们家附近的沃尔玛都好远&#xff0c;就算送货上门也不在配送范围内 由于种种原因导致这几张卡毫无用武之地&#xff0c;只能在家吃灰 最后多亏了收卡云&#xff0c;帮我解决了卡券闲置的问题&#xff0c;在收卡云上卖…

MySQL中的客户端选项(一)

mysql是一个简单的SQL shell&#xff0c;具有输入行编辑功能。它支持交互式和非交互式使用。交互使用时&#xff0c;查询结果以ASCII表格式显示。当非交互使用时&#xff08;例如&#xff0c;作为过滤器&#xff09;&#xff0c;结果以制表符分隔的格式显示。可以使用命令选项更…

Mybatis调用存储过程

在mysql数据库中创建一个存储过程 DELIMITER $$ CREATEPROCEDURE mybatisdemo1.pgetallusers(IN sid INT,IN eid INT)BEGINSELECT * FROM sb_users WHERE id>sid AND id<eid;END$$ DELIMITER ; 在Mapper接口里创建方法&#xff0c;和普通的查询数据方法没区别 在Mybati…

[Qt] Qt Creator 编码警告:warning:C4819

Qt项目使用VC&#xff08;2019 64bit&#xff09;编译器出现此错误。 warning&#xff1a;C4819&#xff1a;该文件包含不能在当前代码页&#xff08;936&#xff09;中表示的字符。请将该文件保存为Unicode格式以防止数据丢失。(可能这个警告内容也会在Qt Creator 中乱码) 如…

头歌资源库(10)拼数字

一、 问题描述 二、算法思想 初始化一个长度为10的数组count&#xff0c;用于记录卡片中每个数字的数量。 从1开始依次尝试拼出正整数&#xff0c;直到无法拼出下一个数为止。 对于每个尝试拼出的正整数&#xff0c;遍历其每一位的数字&#xff0c;检查该数字在count中是否还…

C#心跳机制客户端

窗体&#xff08;richTextBox右显示聊天&#xff09; 步骤 点击链接按钮 tcpclient客户端步骤 1创建客户端对象 2连接服务器connect 3创建网络基础流发消息 .write发消息 4 创建网络基础流接消息 .read接消息 5 断开连接…

【AI+多智能体框架】个人整理的几款AI多智能体框架

昨天无意间了解到 alipay开源 的多智能体框架agentUniverse &#xff0c;这里聊一下。现在这个信息社会&#xff0c;讲究多角色协同工作。人工智能时代&#xff0c;多智能体协同工作也是大势所趋&#xff0c;虽然现在框架或多或少还存在瑕疵。 但所有新技术都是在发展中逐步迭代…