第二十四天 循环神经网络(RNN)LSTM与GRU

server/2024/12/22 23:13:59/

LSTM(长短期记忆网络)和GRU(门控循环单元)是两种流行的循环神经网络变体,它们被设计来解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。这两种网络都通过引入门控机制来控制信息的流动,从而能够更好地捕捉长距离依赖关系。

LSTM(Long Short-Term Memory)

LSTM网络由Hochreiter和Schmidhuber于1997年提出。它通过引入三个门控(输入门、遗忘门、输出门)和一个单元状态来解决梯度消失问题。

  1. 遗忘门(Forget Gate):决定哪些信息需要从单元状态中丢弃。
  2. 输入门(Input Gate):决定哪些新信息将被存储在单元状态中。
  3. 单元状态(Cell State):携带有关输入序列的信息,并在整个序列中传递。
  4. 输出门(Output Gate):决定输出值,基于单元状态和隐藏状态。

LSTM的数学表达式如下:

[ f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) ]
[ i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) ]
[ \tilde{C}t = \tanh(W_C \cdot [h{t-1}, x_t] + b_C) ]
[ C_t = f_t * C_{t-1} + i_t * \tilde{C}t ]
[ o_t = \sigma(W_o \cdot [h
{t-1}, x_t] + b_o) ]
[ h_t = o_t * \tanh(C_t) ]

其中,( f_t )、( i_t )、( o_t ) 分别是遗忘门、输入门和输出门的激活值,( C_t ) 是单元状态,( h_t ) 是隐藏状态,( \sigma ) 是sigmoid函数,( * ) 表示逐元素乘法。

GRU(Gated Recurrent Unit)

GRU是Cho等人在2014年提出的一种更简洁的RNN变体,它将LSTM中的遗忘门和输入门合并为一个更新门,并引入重置门。

  1. 更新门(Update Gate):控制从旧的隐藏状态到新的隐藏状态的转换。
  2. 重置门(Reset Gate):控制从过去的信息中忘记多少,以帮助模型处理长期依赖。
  3. 隐藏状态(Hidden State):同时作为单元状态和输出状态。

GRU的数学表达式如下:

[ z_t = \sigma(W_z \cdot [h_{t-1}, x_t] + b_z) ]
[ r_t = \sigma(W_r \cdot [h_{t-1}, x_t] + b_r) ]
[ \tilde{h}t = \tanh(W \cdot [r_t * h{t-1}, x_t] + b) ]
[ h_t = (1 - z_t) * h_{t-1} + z_t * \tilde{h}_t ]

其中,( z_t ) 是更新门的激活值,( r_t ) 是重置门的激活值,( \tilde{h}_t ) 是候选隐藏状态,( h_t ) 是最终的隐藏状态。

LSTM与GRU的比较

  • 参数数量:GRU的参数数量通常少于LSTM,因为它没有单独的单元状态和输出门。
  • 计算复杂度:GRU的计算复杂度较低,因为它的结构更简单。
  • 性能:在某些任务中,LSTM和GRU的性能相当,但在处理非常长的序列时,LSTM通常表现更好。
  • 适用性:对于较小的数据集,GRU可能更快地收敛,但在较大的数据集上,LSTM可能更稳定。

在实际应用中,选择LSTM还是GRU取决于具体任务的需求、数据集的大小以及模型的复杂度。有时,通过实验比较两者的性能来决定使用哪种模型是一个好的选择。


http://www.ppmy.cn/server/152346.html

相关文章

Linux安装mysql5.7

一、下载mysql5.7 ​ 首先我们需要去下载linux版本的mysql-5.7.24的安装包。 1.可以去官方网站链接: https://downloads.mysql.com/archives/community/ ,下载mysql-5.7.24-linux-glibc2.12-x86_64.tar压缩包。 2.在线下载,使用wget命令,直接从官网下载…

Flutter组件————BottomNavigationBar

BottomNavigationBar 是Flutter中用于在屏幕底部显示导航栏的组件,它允许用户在几个主要视图之间进行切换。 参数 参数名类型描述itemsList定义导航栏中的每个项目,通常包含图标和标签。onTapValueChanged当用户点击导航栏中的项目时触发的回调函数&am…

springboot中——Logback介绍

程序中的日志&#xff0c;是用来记录应用程序的运行信息、状态信息、错误信息等。 Logback基本使用 springboot的依赖自动传递了logback的依赖&#xff0c;所以不用再引入依赖 之后在resources文件下创建logback.xml文件&#xff0c;写入 <?xml version"1.0" …

图形 3.3 曲面细分与几何着色器_大规模草渲染

细分后的顶点曲面细分与几何着色器 大规模草渲染 B站视频&#xff1a;图形 3.3 曲面细分与几何着色器 大规模草渲染 文章目录 细分后的顶点曲面细分与几何着色器 大规模草渲染着色器执行顺序曲面细分着色器概述曲线和曲面相关概念输入与输出总体流程Hull Shader常量外壳着色器…

云计算赋能:TSP 问题求解与创新定价机制的全景剖析

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月18日14点02分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文源地址&#xff1a; Aspiringco…

基于Web的病历管理系统

一、系统背景与意义 随着医疗技术的不断进步和患者数量的不断增加&#xff0c;传统的纸质病历管理方式已经无法满足现代医疗机构的需求。纸质病历存在易丢失、难查询、难共享等问题&#xff0c;而基于Web的病历管理系统则能够很好地解决这些问题。通过该系统&#xff0c;医疗机…

【ELK】Filebeat采集Docker容器日志

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 介绍filebeat是如何工作的 使用部署filebeat 介绍 Filebeat 是一个用于转发和集中日志数据的轻量级传送器。 Filebeat 作为agent安装在服务器上&#xff0c;监视指…

【Mars3d】设置backgroundImage、map.scene.skyBox、backgroundImage来回切换

相关链接&#xff1a; http://mars3d.cn/editor-vue.html?keyex_1_2_1&idmap/other/backgroundImg 实现代码&#xff1a; export function show1() {map.setOptions({scene: {backgroundType: "image",backgroundImage: "url(//data.mars3d.cn/img/busin…