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

深度学习基础--GRU学习笔记(李沐《动手学习深度学习》)

前言

  • GRU是RNN模型的升级版,也是LSTM的弱化版,学习GRU也是为了学习LSTM做准备,这一篇文章是学习笔记;
  • RNN:RNN讲解
  • 参考:李沐动手学习深度学习;
  • 欢迎收藏加关注,本人将会持续更新。

    文章目录

      • 回忆RNN
      • GRU模型结构组成
        • 更新门
        • 重置门
        • 候选隐藏状态
        • 当前隐藏状态
        • 工作原理

门控循环单元(GRU)是一种循环神经网络(RNN)的变体,我为了解决RNN在处理长时间序列数据的时候容易出现的梯度消失和梯度爆炸的问题,

回忆RNN

先看回忆RNN的神经网络结构:

在这里插入图片描述

可以看到,RNN每一次更新隐藏层的时候,权重W都是一样的,也就是说每一次更新隐藏层的时候,都是使用一样的权重,也就说看待之前的状态重要程度都是一样的

举个例子

在这里插入图片描述

这个例子中,每一个观察的值都不是同等重要,也就是说这个时候再用RNN模型就不太合适了,为了解决这种问题,RNN模型提供了许多升级的版本,其中著名的有:GRU、LSTM,而LSTM是在GRU的升级版,故本篇学习也是为了学习LSTM打基础。

GRU模型结构组成

更新门

表示:Zt ,它决定了需要从前一个时刻的隐藏状态ht-1和当前输入数据xt中要保留多少信息来更新当前的有隐藏状态ht,计算公式如下:

在这里插入图片描述

其中,激活函数作用:将输出映射到0和1之间。

具体更新实现,在当前隐藏状态中实现

重置门

表示:Rt,它控制者是否要“重置”前一时刻隐藏层的状态,可以类比记忆中的“遗忘”,我们不可能记住前一天的所有事情,计算公式如下:

在这里插入图片描述

具体实现在候选隐藏状态中

这个时候GRU神经网络可以表示,如下图所示

在这里插入图片描述

候选隐藏状态

这个门,实现的功能:决定吸取多少之前的隐藏状态信息和当前输入的数据,计算公式和网络结构如下如下:

在这里插入图片描述

当**Rt**为0的时候,就不要之前的隐藏信息的状态,**Wxh**决定着吸取当前输入数据的多少。

当前隐藏状态

当前隐藏转态:Ht,它决定输出的大小,融合前一层的隐藏状态和候选的隐藏状态,,如图:

在这里插入图片描述

这里有两个极端:

  • 当Zt为0的时候,说明对上一层的隐藏状态选择遗忘,这个时候就等于重置门“吸收”多少当前输入与前一层隐藏状态的结合体了 🤠;
  • 当Zt为1的时候,说明完全保留上一层的隐藏状态,这个其实就是RNN模型的隐藏状态更新。

在这里插入图片描述

工作原理

在每个时间步t:

  • 首先计算更新门Zt和重置门Rt,这两个门的值决定了如何利用前一时刻的隐藏状态Ht−1和当前时刻的输入 Xt
  • 然后根据重置门Rt计算候选隐藏状态 Ht ,它是在对前一时刻隐藏状态进行了一定程度的 “重置” 后,结合当前时刻输入得到的。
  • 最后通过更新门Zt将前一时刻隐藏状态 Ht−1 和候选隐藏状态 H~t 进行融合,得到当前时刻的隐藏状态Ht。这个过程不断重复,使得 GRU 能够沿着时间序列处理数据,逐步更新隐藏状态并捕捉序列中的信息。

举个例子

如何我们从左往右看,RNN的缺点的每一次更新隐藏层权重一样,如果我们看这个例子,如果看到一只老鼠,这个时候,老鼠的权重肯定要高于其他,尤其是后面的,这个时候GRU的候选隐藏层代表了这个老师前面需要吸收状态,而当前隐藏状态说明了这个后下一个猫需要吸收多少状态

当然神经网络很深奥,好需要不断在实践学习。


http://www.kler.cn/a/508049.html

相关文章:

  • 基于微信小程序的电子点菜系统设计与实现(KLW+源码+讲解)
  • 单元测试与unittest框架
  • Json转换类型报错问题:java.lang.Integer cannot be cast to java.math.BigDecimal
  • 大模型WebUI:Gradio全解11——Chatbot:融合大模型的多模态聊天机器人(6)
  • 测试工程师的linux 命令学习(持续更新中)
  • TinyEngine v2.1版本发布:全新的区块方案和画布通信方案,打造更强力的可拓展低代码引擎
  • 如何用ChatGPT玩转知识图谱?
  • NLP意图识别数据集处理流程
  • PyTorch 神经协同过滤 (NCF) 推荐系统教程
  • 【 MySQL 学习3】查询
  • 当当网书籍信息爬虫
  • 【教程】windows下使用docker部署hyperf框架
  • Java最常用的几种设计模式详解及适用业务场景
  • 论文阅读:Structure-Driven Representation Learning for Deep Clustering
  • Vue2+OpenLayers实现折线绘制功能(提供Gitee源码)
  • MySQL 的mysql_secure_installation安全脚本执行过程介绍
  • jenkins-Job构建
  • 55.【5】BUUCTF WEB NCTF2019 sqli
  • 前端框架: Vue3组件设计模式
  • 【经典神经网络架构解析篇】【6】MobileNet网络详解:模型结构解析、创新点、代码实现
  • 重拾Python学习,先从把python删除开始。。。
  • 电子应用设计方案94:智能AI门禁系统设计
  • ubuntu下安装编译cmake,grpc与protobuf
  • 基于微信小程序的中国各地美食推荐平台的设计与实现springboot+论文源码调试讲解
  • 日拱一卒(20)——leetcode学习记录:大小为 K 且平均值大于等于阈值的子数组数目
  • Android wifi热点开关代码记录