【DL水记】循环神经网络RNN的前世今生,Transformer的崛起,Mamba模型

news2025/5/24 21:32:03

文章目录

      • RNN网络简介
        • 传统RNN网络结构
        • RNN的分类
      • 长-短期记忆网络 (LSTM)
      • GRU网络
      • 横空出世的Transformer网络
        • Self-Attention
        • VisionTransformer
      • Mamba模型
      • Reference:

RNN网络简介

“当人类接触新事物时,他们不会从头开始思考。就像你在阅读这篇文章时,你会根据以前的知识理解每个单词,而不是舍弃一切,从字母开始重新学习。换句话说,你的思维有延续性。”

如同卷积神经网络(Convolutional Neural Network, CNN)在计算机视觉领域深度学习模型的地位,循环神经网络(Recurrent Neural Network,RNN)同样对计算机听觉、时间序列预测、自然语言处理(Natural Language Processing,NLP)做出了巨大贡献。
使用循环神经网络最重要的目的就是解决输入数据的次序问题(当前时刻输入的信息可能受前一时刻输出的影响,存在时序关联性)。比如,对于人们日常对话中的语音和文本而言:播放一段录音和倒放一段录音、正着读一段文字和倒着读一段文字所能获取的信息并不相同(当然,通过一定训练能听懂的唱跳rap古神语或阿米诺斯除外)。
因此,为解决这一类需要捕捉序列数据中的时序依赖关系的问题,基于传统机器学习中包含输入、隐藏、输出三层的神经网络结构演变出的循环神经网络模型,通过引入一个递归、延迟或称作循环的单元结构来建立输入信息之间的时序依赖关系,从而允许信息在网络中传递并保持一定的记忆。

传统RNN单元基本结构
传统RNN网络结构

RNN 网络的基本结构包括一个输入层 x t x_t xt、隐藏层 h t h_t ht(含激活函数Activation Function)、延迟器(循环单元)、输出层 h t h_t ht
在这里插入图片描述

网络中的神经元通过时间步骤连接形成循环:允许信息从一个时间步骤的输出 h t − 1 h_{t-1} ht1通过与输入 X t X_t Xt经过tanh函数激活后,传递至下一个时间步骤输入的一部分
RNN具体计算公式:

h t = t a n h ( W i h x t + b i h + W h h x t − 1 + b h h ) h_t=tanh(W_{ih}x_t+b_{ih}+W_{hh}x_{t-1}+b_{hh}) ht=tanh(Wihxt+bih+Whhxt1+bhh)
在这里插入图片描述

单个展开的RNN结构

在这里插入图片描述

整体展开的RNN结构

对于某 t 时刻的步骤,RNN隐藏状态大致的计算方法为:

RNN的分类
按照输入和输出的结构分类
N vs N - RNN输入长度为N,输出长度为N
N vs 1 - RNN输入长度为N,输出长度为1
1 vs N - RNN输入长度为1,输出长度为N
N vs M - RNN输入长度为N,输出长度为M

在机器翻译里,常见的是N vs M的情况,即包含编码器 (Encoder) 和解码器 (Decoder) 两部分的seq2seq模型,也是一种RNN的变体,后来的Transformer模型也是基于Encoder-Decoder架构。

长-短期记忆网络 (LSTM)

为了解决 RNN 处理长期依赖关系时存在梯度消失/爆炸问题(随着前后信息之间的距离不断拉大,RNN会逐渐难以学习其中的连接信息),陆续出现了一些改进的 RNN 变体,如长短期记忆网络(LSTM)和门控循环单元(Gated Recurrent Unit,GRU)。这些模型通过引入门控机制,允许网络有选择性地更新记忆和遗忘信息,从而更有效地处理时间序列的长期依赖关系,避免梯度消失。

LSTM的全称是Long Short-Term Memory,顾名思义,它具有记忆更长的短期信息能力的神经网络。

就像我们学习知识时会不断加深特别重要的记忆和遗忘部分不那么感兴趣的记忆,LSTM引入了门控机制用于控制特征的流通和损失。

标准RNN中只包含单个tanh层的重复模块:

而LSTM中包含了与之相似的链式结构,但不同的是它的重复模块结构不同,是加入了门控机制的神经网络:

LSTM结构中的符号定义:

LSTM单元包含的内容:

Cell 状态/记忆单元(Cell State):
cell状态本身是一个向量,包含了关于序列中过去的信息,以及在当前时刻步骤的输入中保留的新信息。它是LSTM单元的主要内部状态,用于存储长期依赖关系。
cell状态有点像传送带,它将遗忘门与cell状态的计算结果和输入门与候选记忆的计算结果贯穿整个链式结构,这其实也就是信息记忆的地方,因此信息能很容易地以不变的形式从中流过。


F t × C t − 1 F_t×C_{t−1} Ft×Ct1表示希望删除的信息, I t × C ~ t I_t× \widetilde{C}_t It×C t表示新增的信息

输入门(Input Gate):
控制有多少信息可以流入cell状态。它使用输入数据和先前的隐藏状态来决定更新哪些信息。
遗忘门(Forget Gate): 决定在cell状态中丢弃多少旧的信息。通过考虑先前的隐藏状态和输入,它确定要保留多少过去的信息。
输出门(Output Gate):
控制从cell状态到输出的信息流。通过考虑先前的隐藏状态和输入,它决定将多少cell状态的信息传递到当前的隐藏状态和输出。

候选记忆单元:
tanh将信息值映射到[-1,1]之间,有助于缓解梯度爆炸问题。

GRU网络

相比LSTM网络,GRU(Gate Recurrent Unit,门控循环单元)网络更为简化:

记录自B站大学上看到的一段针对GRU的讨论,凝炼了对GRU的理解,十分精彩:

R t R_t Rt Z t Z_t Zt 都是根据过去的状态 H t − 1 H_{t-1} Ht1和当前输入 X t X_t Xt计算得到的 [0,1] 之间的量;
R t R_t Rt首先与 H t − 1 H_{t-1} Ht1 进行元素积,由于 R t R_t Rt 内部都是 [0,1] 的变量,因此是对过去的状态 H t − 1 H_{t-1} Ht1 进行一次选择, R t R_t Rt在某个位置的值越趋近于0,则表示这个位置的过去信息越倾向于被丢弃,反之保留。随后与 X t X_t Xt一起构成候选隐藏变量 H ~ t \tilde{H}_t H~t。同样由于 R t R_t Rt的值在 [0,1] 中,它只会削弱过去的状态,而不会增强,因此被称为遗忘门(或重置门,重置过去的状态)。
Z t Z_t Zt被称为更新门,因为它控制了隐藏状态的更新。假如 Z t Z_t Zt全为1,则 H t H_t Ht将完全保留上一个时间的状态 H t − 1 H_{t-1} Ht1;反之,则全盘采用当前时刻的候选隐藏变量 H ~ t \tilde{H}_t H~t;

或许各位会有疑问,感觉 R t R_t Rt已经对过去有所选择,为何还要加上 Z t Z_t Zt多此一举。
实际上 Z t Z_t Zt 是对当前进行选择,比如,如果一个文本序列中已经有很多的“猫”,那么再输入猫,实际上对于网络的正收益不大,可以抛弃,而 R t R_t Rt 只能选择过去,不能抛弃当前,而 Z t Z_t Zt 可以。
总而言之,GRU通过两个门控网络,根据过去状态和当前输入,一方面对过去状态进行选择,一方面对当前状态也进行选择。”

横空出世的Transformer网络

如今在AI领域家喻户晓的Transformer网络源自Google 2017年发表的 Attention is all you need,

网络采用Encoder-Decoder结构:

基于自注意力机制以及多头自注意力机制增强全局上下文特征的整合能力,相比传统RNN、LSTM能捕捉更长的关联距离;起初Transformer由于该优点主要应用于NLP领域,后来热度逐渐攀升,诞生了诸多其他领域甚至具体下游任务的变体,如可用于语音信号处理的Conformer、用于CV的VisionTransformer,去雾的DeHazeFormer,复原的RestoreFomer等等,其中不乏SOTA级别。

Self-Attention

根据查询(Q)、键(K)和值(V)向量计算和分配全局注意力权重:

计算过程就是对输入数据编码或者说特征提取的过程,而编码的依据则是数据内部各元素之间的相关性。想要形象地理解自注意力机制的计算细节,可以通过结合网上博客、视频讲解的“顾客买衣服”,“海王选妃”之类的例子消化一下。

此外,还要通过位置编码给序列进行编号排序,计算公式:本质上就是利用积化合差

VisionTransformer

ViT受NLP中应用Transformer的启发,将图像数据拆分降维成序列数据送入Encoder处理,并同样引入一个位置编码,用于class分类排序:

相比CNN,ViT的优点在于:可以建立全局的依赖关系,扩大图像的感受野。相比于CNN,其感受野更大,可以获取更多上下文信息。

缺点:自注意力机制是通过筛选重要信息,过滤不重要信息实现的,这就导致其有效信息的抓取能力会比CNN小一些。这样是因为自注意力机制相比CNN,无法利用图像本身具有的尺度,平移不变性,以及图像的特征局部性(图片上相邻的区域有相似的特征,即同一物体的信息往往都集中在局部)这些先验知识,只能通过大量数据进行学习。这就导致自注意力机制只有在大数据的基础上才能有效地建立准确的全局关系,而在小数据的情况下,其效果不如CNN。

Mamba模型

在Mamba out之前,RWKV被认为是Transformer的时代的新RNN,它将Transformer与RNN各自的优点相结合,同时实现高度并行化训练与高效推理,时间复杂度为线性复杂度,在长序列推理场景下具有优于Transformer的性能潜力。

后来,Mamba 因其在语言处理、基因组学和音频分析等各个领域的应用而脱颖而出。这种创新模型采用线性时间序列建模架构,该架构结合了选择性状态空间,可在不同模式(包括语言、音频和基因组学)中提供一流的性能。
这种突破性的模型代表了机器学习方法的重大转变,这可能会提高效率和性能。
Mamba 的主要优势之一是能够解决与传统 Transformer 在处理长序列时相关的计算挑战。通过将选择机制集成到其状态空间模型中,Mamba 可以根据序列中每个token的相关性有效地决定是传播还是丢弃信息。这种选择性方法可显着加快推理速度,吞吐率比标准 Transformer 高出五倍,并展示了随序列长度的线性缩放。值得注意的是,即使在序列扩展到一百万个元素的情况下,Mamba 的性能也会随着实际数据的不断提高而不断提高。

状态空间模型结构图如下:

在这里插入图片描述
状态空间模型计算公式及其离散化:中间水去了海量推导细节和算法对比…
在这里插入图片描述
离散化方法同样也是采用信号处理中常见的双线性变换法和零阶保持器。

在近几个月里,基于Mamba模型的研究在AI领域的热度居高不下,可见其相比Transformer具有一定的推理优势和有效性。
在这里插入图片描述
在这里插入图片描述

Reference:

[1] 爱生活爱自己_RNN的网络结构
[2] 落花雨时_深度学习 RNN架构解析
[3] 程序遇上智能星空_【RNN】深入浅出讲解循环神经网络(介绍、原理)
[4] 大师兄_详解LSTM
[5] 李倩_LSTM的工作原理究竟是什么?深入了解LSTM
[6] 跟李沐学AI_56 门控循环单元(GRU)【动手学深度学习v2】
[7] 57 长短期记忆网络(LSTM)【动手学深度学习v2】
[8] 狗中赤兔–在线激情讲解transformer&Attention注意力机制
[9] RWKV解读:在Transformer的时代的新RNN
[10] markconca_一文搞定自注意力机制
[11] 人工智能|Mamba 介绍
[12] MindSpore_RWKV解读:在Transformer的时代的新RNN

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

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

相关文章

最新版的GPT-4.5-Turbo有多强

OpenAI再次用实力证明了,GPT依然是AI世界最强的玩家!在最新的AI基准测试中,OpenAI几天前刚刚发布的GPT-4-Turbo-2024-04-09版本,大幅超越了Claude3 Opus,重新夺回了全球第一的AI王座: 值得一提的是&#xf…

Assign Memory Resources to Containers and Pods

minikube addons enable metrics-server minikube addons enable metrics-server 是一个命令,用于在 Minikube 环境中启用 metrics-server 插件。 Minikube 是一个工具,可以在本地轻松创建和管理单节点 Kubernetes 集群,适合开发和测试。Mini…

二叉树进阶题目

1还原二叉树 #include<bits/stdc.h> using namespace std; const int N1e310; char pre[N],mid[N]; int w[N]; int ans; struct node{int l,r; }t[N]; int build(int prel,int prer,int midl,int midr){int ascpre[prel];int posw[asc];if(midl<pos)t[asc].lbuild(pre…

从 Elastic 的 Go APM 代理迁移到 OpenTelemetry Go SDK

作者&#xff1a;来自 Elastic Damien Mathieu 正如我们之前所分享的&#xff0c;Elastic 致力于帮助 OpenTelemetry&#xff08;OTel&#xff09;取得成功&#xff0c;这意味着在某些情况下构建语言 SDK 的分发版本。 Elastic 在观察性和安全数据收集方面战略性地选择了 OTel…

深入挖掘C语言 ----动态内存分配

开篇备忘录: "自给自足的光, 永远都不会暗" 目录 1. malloc和free1.1 malloc1.2 free 2. calloc和realloc2.1 calloc2.2 realloc 3. 总结C/C中程序内存区域划分 正文开始 1. malloc和free 1.1 malloc C语言提供了一个动态开辟内存的函数; void* malloc (size_t s…

Python中的迭代器:深入理解与实用指南

文章目录 1. 迭代器的基本概念2. Python中的迭代器实例3. 自定义迭代器3.1 例子3.2 详细过程 4. 迭代器的高级应用5. 常见问题与解答 迭代器是Python中非常核心的概念之一&#xff0c;在面试中也会被问到。下面我会详细介绍什么是迭代器&#xff0c;使用方法&#xff0c;以及使…

爬虫 | 基于 requests 实现加密 POST 请求发送与身份验证

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在实现一个简单的 Python 脚本&#xff0c;用于向指定的 URL 发送 POST 请求&#xff0c;并通过特定的加密算法生成请求头中的签名信息。这个脚本的背后是与某个特定的网络服务交互&#xff0c;发送特定格式的 JSON 数据…

vi编辑器的用法linux中的vim编辑器大全

vim的介绍 vi 和 vim 命令是linux中强⼤的⽂本编辑器, 由于Linux系统⼀切皆⽂件&#xff0c;⽽配置⼀个服务就是在修改其配置⽂件的参数。 vim 编辑器是运维⼯程师必须掌握的⼀个⼯具, 没有它很多⼯作都⽆法完成。 其中有vi和vim两种 vi和vim的区别 Vim是Vi的升级版本&#…

source map 开发优化工具

什么是 Source map 简单来说 Source map 就是一个存储信息的文件&#xff0c;里面储存着位置信息。 Source map 英文释义&#xff1a;源程序映射。 位置信息&#xff1a;转换后的代码 对应的 转换前的代码 位置映射关系。 有了 Source map&#xff0c;就算线上运行的是转换…

el-menu 该有的页面显示不出来第一个应该想到的问题首先就算检查是否多写了一个 , 导致显示不出来原有的页面

问题描述 el-menu 该有的页面显示不出来第一个应该想到的问题首先就算检查是否多写了一个 , 导致显示不出来原有的页面 如图所示多写了一个&#xff0c;就会导致该有的页面显示不出来。

nVisual在线网络规划设计软件

●01● nVisual在线网络规划设计软件 在信息化快速发展的今天&#xff0c;网络基础设施的建设与优化变得尤为关键。为了满足现代通信行业对高效、精准的网络规划需求&#xff0c;nVisual在线网络规划设计软件应运而生&#xff0c;它通过集成先进的GIS技术和网络规划工具&#…

OpenHarmony鸿蒙南向开发案例:【智能门铃】

样例简介 智能门铃通过监控来访者信息&#xff0c;告诉主人门外是否有人按铃、有陌生人靠近或者无人状态。主人可以在数字管家中远程接收消息&#xff0c;并根据需要进行远程取消报警和一键开锁。同时&#xff0c;也可以通过室内屏幕获取门外状态。室内屏幕显示界面使用DevEco…

人工智能,如何走好下一步

以下文章来源&#xff1a;金台资讯 2023年&#xff0c;生成式人工智能在全球范围爆火&#xff0c;引发了人工智能领域新一轮的科技竞赛。眼下&#xff0c;人工智能不仅能辅助科学研究与艺术创作&#xff0c;还能实现自动驾驶、打造“无人农场”和“黑灯工厂”&#xff0c;成为解…

数据很重要,ASM磁盘组损坏,使用AMDU来抢救

欢迎关注“数据库运维之道”公众号&#xff0c;一起学习数据库技术! 本期将为大家分享“数据很重要&#xff0c;ASM磁盘组损坏&#xff0c;使用AMDU来抢救”的处置案例。这个案例对个人来说比较经典&#xff0c;下面我将把自己的处理思路进行整理与总结。 环境信息&#xff1…

户用光伏业务解决方案

一、光伏户用痛点 1、推广难 没有成熟的推广与拓客能力&#xff0c;造成时间和金钱大量浪费。 2、管理难 有内部和外部几十或者上百推广人员&#xff0c;管理纷杂&#xff0c;效率低下。 3、无制度 缺少有效的人员管理制度与系统&#xff0c;分辨不出优秀人才&#xff0c…

Let‘s Forkin‘ Dance!Tanssi 激励测试网活动全面启动

作者&#xff1a;Tanssi 编译&#xff1a;OneBlock 作为 Tanssi 社区和生态系统发展的重要推手&#xff0c;Tanssi 基金会推出了 Incentivized TestNet 活动 —— Let’s Forkin’ Dance。该活动旨在激励顶尖参与者&#xff0c;推动社区增长和网络活动&#xff0c;为今年晚些时…

c语言-快速排序

文章目录 代码工程运行结果 这个是升序排列&#xff0c;如果想降序排列,将下面两行的符号反过来即可; arr[right] < arr[key] arr[left] > arr[key]代码工程 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>void swap(int *v1, int *v2) {int temp *v1;*v1 …

【VTKExamples::Meshes】第 十四期 ExtractEdges

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例ExtractEdges,并解析接口vtkExtractEdges,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~…

如何高效建立企业绩效评估体系?这家世界500强企业用BI工具这么做

在目前经济下行&#xff0c;竞争激烈&#xff0c;向精细化管理要效益的社会背景下&#xff0c;如何对资金结算部门做好绩效管理&#xff0c;以保障组织的正常运作&#xff0c;是各大企业面对的重要痛点。 本文将基于某世界500强公司的财务共享资金结算部门的绩效管理办法&…

python处理IP对应城市省份

python处理IP对应城市省份 IP地理地址库geoip2用法 数据包下载 数据包下载地址&#xff08;需要注册&#xff09; https://www.maxmind.com/en/accounts/258630/geoip/downloads 考虑到注册麻烦&#xff0c;可以到下面这个github的链接去直接下载 https://github.com/Hackl0…