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

        在之前的文章中,我们谈到了标准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.mzph.cn/pingmian/29530.shtml

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

相关文章

Linux实现: 客户端(cli01)通过TCP(或UDP)连接到聊天服务器(serv)进行聊天?(伪代码版本)

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

Flutter 小技巧之面试题里有意思的异步问题

很久没更新小技巧系列了,本次简单介绍一下 Flutter 面试里我认为比较有意思的异步基础知识点。 首先我们简单看一段代码,如下代码所示,是一个循环定时器任务,这段代码里: testFunc 循环每 1 秒执行一次 asyncWorkasy…

C++ 60 之 虚析构和纯虚析构

#include <iostream> #include <string> #include <cstring> using namespace std;class Animal13{ public:Animal13(){cout << "Animal的默认构造函数" << endl;}virtual void speak(){cout << "动物叫" << en…

?? 与 || 在 JavaScript 中的微妙差别

起初&#xff0c;你可能会认为你可以随意替换任何你喜欢的人&#xff0c;对吗&#xff1f; 错误。他们并非你所想的那样。 我们必须一劳永逸地学习这个区别&#xff0c;以避免日后出现痛苦的错误。 这个差别是什么&#xff1f; 这是他们对待真值和假值的令人难以置信的对比。这…

C++ 61 之 函数模版

#include <iostream> #include <string> using namespace std;void swapInt(int &a,int &b){int temp a;a b;b temp; }void swapDou(double& a, double& b){double temp a;a b;b temp; }// T代表通用数据类型&#xff0c;紧接着后面的代码&a…

科技前沿:Web3技术驱动下的物联网创新

随着Web3技术的迅猛发展&#xff0c;物联网&#xff08;IoT&#xff09;作为连接和互操作性的关键&#xff0c;正迎来一场前所未有的革命。本文将深入探讨Web3技术如何驱动物联网的创新&#xff0c;以及这种创新如何重新定义我们对智能设备、数据安全和网络架构的理解。 1. Web…

PR软件视频抠图换背景

1 新建项目 2 新建序列 在项目的右下角有个图标&#xff0c;新建 序列 序列是视频的制作尺寸&#xff0c;根据自己的需要选择 3 新建颜色遮罩 在项目的右下角--新建颜色遮罩--选择黑色--确定 4 导入视频 把要导入视频的文件夹打开&#xff0c;把视频拖到 项目 里 把黑色遮罩拖…

56.SAP MII开发的一个系统响应错误 Error code: ICMETIMEOUT

问题 一个SAP MII开发的项目&#xff0c;最近新增了一个功能&#xff0c;查询数据源量比较大&#xff0c;逻辑有点复杂&#xff0c;大约7-8分钟。发布到生产系统后&#xff0c;发生响应错误&#xff0c;返回 Error code: ICMETIMEOUT <!-- Error code: ICMETIMEOUT -->\r…

Camunda 7.x 系列【68】实战篇之我的待办任务

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 前后端基于若依:https://gitee.com/y_project/RuoYi-Vue 流程设计器基于RuoYi-flowable:https://gi…

智能网站管理系统

智能网站管理系统&#xff0c;即智能化的网站管理工具&#xff0c;是为了提高网站管理效率和简化操作流程而开发的一种软件系统。它集合了各种先进的技术和功能&#xff0c;为网站管理员提供了一套强大而可靠的解决方案。 智能网站管理系统的核心功能是网站内容管理。传统的网站…

shell命令(进程管理和用户管理)

一、进程处理相关命令 1、进程的概念 进程的概念主要有两点&#xff1a; 进程是一个实体。每一个进程都有它自己的地址空间&#xff0c;一般情况下&#xff0c;包括文本区域&#xff08; text region &#xff09;、数据区域&#xff08; data region &#xff09;和堆栈&am…

【STM32】使用标准库点亮LED

1.硬件设计 LED1的阴极接到了PC13引脚上&#xff0c;我们控制PC13引脚的电平输出状态&#xff0c;即可控制LED1的亮灭。 2.编程要点 使能GPIO端口时钟&#xff1b;初始化GPIO目标引脚为推挽输出模式&#xff1b;编写简单测试程序&#xff0c;控制GPIO引脚输出高、低电平。 查…

Tomcat Websocket应用实例研究

概述 本文介绍了如何根据Tomcat给出的websocket实例&#xff0c;通过对实例的学习&#xff0c;定制自己基于websocket的应用。 环境及版本&#xff1a; Ubuntu 22.04.4 LTSApache Tomcat/10.1.20openjdk 11.0.23 2024-04-16浏览器&#xff1a;Chrome 相关资源及链接 Class…

python连接数据库,相关数据处理

随机生成一千个数据插入large_db中 # 这是一个示例 Python 脚本。# 按 ShiftF10 执行或将其替换为您的代码。 # 按 双击 Shift 在所有地方搜索类、文件、工具窗口、操作和设置。 import pandas as pd from sqlalchemy import create_engine from faker import Faker# 初始化fa…

【价值主张画布】以产品思维,将自己打造成“爆款”

经营自己等于经营公司&#xff1a; 1.客户细分&#xff1a;我能帮助谁&#xff1f;谁是我们最重要的客户&#xff1f; 2. 客户关系&#xff1a;怎样和对方打交道&#xff1f;一次交付还是持续交付&#xff1f; 3.渠道通路&#xff1a;怎样宣传自己和服务&#xff1f; 4. 价值主…

Jmeter 性能测试步骤是什么?

性能测试是软件开发过程中非常重要的一环。它可以帮助我们评估软件系统在不同负载下的性能表现&#xff0c;找出系统中的性能瓶颈&#xff0c;并提供改进方案。而JMeter作为一款功能强大且广泛使用的性能测试工具&#xff0c;可以帮助我们实现这一目标。 下面&#xff0c;我将…

银河麒麟4.0.2安装带有opengl的Qt5.12.9

银河麒麟4.0.2下载地址&#xff1a;银河麒麟-银河麒麟(云桌面系统)-银河麒麟最新版下载v4.0.2-92下载站 VirtualBox:https://www.virtualbox.org/wiki/Downloads qt下载&#xff1a;Index of /archive/qt/5.12/5.12.9 1安装VirtualBox:网上教材比较多 1&#xff09;安装完后安…

干货 | 使用 Navicat BI 解锁数据的力量

商业智能&#xff08;BI&#xff09;是一种将数据转化为可执行洞察的实践&#xff0c;能够帮助业务领导者提升整体业绩。这个过程中最重要的一个阶段是数据探索和可视化阶段&#xff0c;它涉及通过报告将数据组织并转化为有意义的信息。为了让数据更易于理解&#xff0c;BI 专业…

DashText-进阶使用

前置知识 BM25简介 BM25算法&#xff08;Best Matching 25&#xff09;是一种广泛用于信息检索领域的排名函数&#xff0c;用于在给定查询&#xff08;Query&#xff09;时对一组文档&#xff08;Document&#xff09;进行评分和排序。BM25在计算Query和Document之间的相似度…

四川赤橙宏海商务信息咨询有限公司正规吗?

在数字化浪潮席卷全球的今天&#xff0c;电商行业正以前所未有的速度蓬勃发展。作为这一潮流的佼佼者&#xff0c;抖音电商以其独特的短视频直播模式&#xff0c;吸引了大量消费者和商家的目光。在这一背景下&#xff0c;四川赤橙宏海商务信息咨询有限公司应运而生&#xff0c;…