mamba的学习记录

最近新出了一种很火的架构mamba,听说吊打transformer,特此学习一下,总结一下学习的内容。

state-spaces/mamba (github.com)3个月8Kstar,确实有点受欢迎。

目录

1.先验

RNN​

LSTM

​2.mamba

State Space Models​

Selective State Space Models​


1.先验

RNN

RNN(循环神经网络)是一种在序列数据处理中广泛应用的神经网络模型。相较于传统的前馈神经网络(Feedforward Neural Network),RNN具有一种循环结构,使其能够对序列数据进行建模和处理。

RNN的关键思想是引入了时间维度上的循环连接,使得网络在处理序列数据时可以保持信息的传递和记忆。在RNN中,每个时间步都有一个隐藏状态(hidden state)它对应于该时间步的输入以及前面时间步的隐藏状态。这种隐藏状态的传递和更新机制使得RNN能够捕捉序列中的时序依赖关系。

在每个时间步,RNN的计算可以分为两个关键步骤:

  1.  当前隐藏状态 = 上一时刻隐藏状态 *W + input*W

  2. 输出预测 = 当前隐藏状态*W

  3. 隐藏状态:可以看作是一种记忆能力,记录了上一时刻的信息,但是上上时刻,上上上时刻的信息都没有,即短期记忆,只记得昨天,不记得前天和之前的信息(举例)

RNN的灵活性使其适用于多种任务,例如自然语言处理(NLP)、语音识别、机器翻译、时间序列预测等。然而,传统的RNN存在梯度消失(gradient vanishing)和梯度爆炸(gradient explosion)等问题,导致对长期时序依赖的建模能力有限。

梯度爆炸:偏导数 ∂ℎ�∂ℎ0 将会变得非常大,实际在训练时将会遇到NaN错误,会影响训练的收敛,甚至导致网络不收敛。可以用梯度裁剪(gradient clipping)来解决。

梯度消失:此时偏导数 ∂ℎ�∂ℎ0 将会变得十分接近0。LSTM和GRU通过门(gate)机制控制RNN中的信息流动,用来缓解梯度消失问题。其核心思想是有选择性的处理输入

推荐视频:【循环神经网络】5分钟搞懂RNN,3D动画深入浅出_哔哩哔哩_bilibili

这是CNN的神经元连接图。从输入层-->隐藏层-->输出层。

RNN更加关注时间维度上的信息。此时的隐藏状态是黄色部分

有了记忆力的RNN可以根据隐藏层状态推出出苹果不是水果,而是手机。

关于2D图怎么看:

蓝色的球就是隐藏层,红色的是输入,最后右边那个不知道什么颜色的球就是输出

黄色的线就是Ws*St-1的那个Ws

把上面旋转90°就变成这样的。横轴为时间。

为了解决这些问题,出现了一些RNN的变体,如长短期记忆网络(LSTM)和门控循环单元(GRU)。这些变体通过引入门控机制,能够更好地处理长期依赖关系,并在许多任务中取得了显著的性能提升。

LSTM

LSTM(长短期记忆网络)是一种循环神经网络(RNN)的变体,专门设计用于解决传统RNN中的梯度消失和长期依赖问题。它通过引入门控机制,能够更好地处理和捕捉序列中的长期依赖关系。

LSTM的关键思想是引入了称为“门”的结构,它能够控制信息的流动和存储。一个标准的LSTM单元包含以下组件:

  1. 输入门(Input Gate):决定是否将新的输入信息纳入到记忆中的门控单元。

  2. 遗忘门(Forget Gate):决定是否从记忆中删除某些信息的门控单元。

  3. 输出门(Output Gate):根据当前输入和记忆状态,决定输出的门控单元。

  4. 记忆单元(Cell State):负责存储和传递信息的长期记忆。

  5. sigmoid实现,把值map到[0,1], =1增加到长期记忆C里面,=0删除(举例)

S:短期记忆链条

C: 长期记忆链条

注意sigmoid是在当前输入Xt和上一时刻隐藏状态St-1(上一时刻的短期记忆)里面来决定删除(遗忘门)不重要的信息,重要的信息添加(输入门)到Ct长期记忆里面,并且把Ct-1的信息归并到Ct

  1. sigmoid 用在了各种gate上,产生0~1之间的值,这个一般只有sigmoid最直接了。
  2. tanh 用在了状态和输出上,是对数据的处理,使用tanh函数,是因为其输出在-1-1之间,这与大多数场景下特征分布是0中心的吻合。此外,tanh函数在输入为0近相比 Sigmoid函数有更大的梯度,通常使模型收敛更快。

2.mamba

2312.00752.pdf (arxiv.org)

本文是基于前人的状态空间模型做出优化,提出选择性状态空间模型的算法。

State Space Models

找到个写的不错的blog:https://blog.csdn.net/weixin_4528312/article/details/134829021

RNN和SSM的本质一样。

((输入x * wB + wA * 上一时刻状态) * wC) + wD*输入x = OUTPUT

可以看出这个一个递归函数,进行公式推导:

H4 = A*H3 + B*X4

H3 = A*H2 + B *X3

H2 = A*H1 + B * x2

那么:

H4 = A*H3 + B*X4=A*(A*H2 + B *X3) + B*X4 = A^2*H2 + AB*X3 +B*X4

    = A^2(A*H1 + B * x2)+AB*X3 +B*X4 = A^3*H1 +A^2B*X2 +AB*X3 +B*X4

上面的式子表明:

H4 = F(H3,X4) = F(H2,X3,X4) =F(H1,X2,X3,X4)

那么

H3 = F(H2,X3) = F(H1,X2,X3)

也就是说:H3的计算是可以和H2无关的,只需要知道H1,X2,X3即可,同时H4的计算也是可以独立于H3,只需要知道H1,X2,X3,X4即可,这也是后面并行计算的关键

同理:

Y4 = CH4

Y3 = CH3

Y2 = CH2

Y1 =CH1

Y4 = C( A^3*H1 +A^2B*X2 +AB*X3 +B*X4)

使用卷积的原因,RNN没法并行训练,卷积可以,所以使用conv1D卷积进行。

为什么可以使用卷积等价计算?

但是为什么推理又使用RNN?

因为RNN推理速度更快。

训练CNN(可并行),推理RNN(速度快)

RNN的通病是只有短期记忆,如何解决--HiPPO!!

对信息的压缩方法。

Selective State Space Models

SB决定输入词的权重,SC决定Ht的权重(Ht保护过去信息Ht-1和输入Xt)

传统B,输入的所有词的权重是一样的:

SB决定输入信息中每个词的权重:

简单点说,RNN推理快但训练慢,且会遗忘以前的信息,SSM压缩以前的信息可以记住所有,但是矩阵参数固定,无法针对输入做针对性推理。mamba选择性的关注以前的信息,参数化ssm的输入,(不停总结以前的信息)。这样既可以记住以前的重要信息,又内存占用不大,推理快

总结:因为SSM和RNN几乎等价:

都是:

Ht = A * Ht-1 + B *Xt

y = C * Ht

mamba核心就是在此基础上把B,C改成SB,SC可以选择性给信息加权,然后输入信息关注重点,让过去信息保留重要的部分,从而解决遗忘和短期记忆问题。并且可以并行计算。

参考:

https://www.bilibili.com/video/BV1z5411f7Bm/?spm_id_from=333.337.search-card.all.click&vd_source=3aec03706e264c240796359c1c4d7ddc

https://blog.csdn.net/weixin_4528312/article/details/134829021

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

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

相关文章

React和Vue.js的有什么区别

在当今前端开发领域,React 和 Vue.js 作为两大热门的前端框架备受开发者关注。它们各自拥有独特的特点和优势,在实际项目中有着广泛的运用。本文将深入探讨 React 和 Vue.js 之间的区别,从组件化方式、数据绑定、模板语法以及生态系统和工具支…

案例 | 华院计算x第一财经:我和我的数智人唱双簧

创新关乎命运,科技引领未来。生成式人工智能(AIGC)给传媒行业发展带来严峻挑战的同时,也带来千载难逢的重大发展机遇。2024年政府工作报告中提出,要深化大数据、人工智能等研发应用,开展“人工智能”行动,打造具有国际…

俚语加密漫谈

俚语加密是一种古老而有效的通信方式,将特定词语或短语在群体内赋予特殊含义,从而隐藏真实信息。类似于方言,它在历史上的应用不可忽视。随着计算机时代的到来,现代密码学通过数学运算编织密语,使得加密变得更加高深莫…

【win10 win11添加右键】git bash

打开注册表编辑器。 按下Win键 R,然后输入”regedit”并按下回车键来打开注册表编辑器。计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\git_bash\command2. 导航到注册表路径:依次展开”HKEY_CLASSES_ROOT\Directory\Background\shell”。右键…

【数据结构】 HashMap源码分析(常量+构造方法+方法)

文章目录 HashMap源码分析一、成员常量二、构造方法三、方法1.此时假定为进行了无参构造,没有分配内存2.当发生有参构造时,完成对容量的大小判断后,将容量大小,传进tableSizeFor方法中: HashMap源码分析 一、成员常量…

如何使用Docker轻松构建和管理应用程序(二)

上一篇文章介绍了 Docker 基本概念,其中镜像、容器和 Dockerfile 。我们使用 Dockerfile 定义镜像,依赖镜像来运行容器,因此 Dockerfile 是镜像和容器的关键,Dockerfile 可以非常容易的定义镜像内容,同时在我们后期的微…

JDK8中ArrayList扩容机制

前言 这是基于JDK8的源码分析&#xff0c;在JDK6之前以及JDK11之后细节均有变动&#xff01;&#xff01; 首先来看ArrayList的构造方法 public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Seriali…

LeetCode刷题---查询近30天活跃用户数

1.给出满足的条件&#xff0c;截止至2019-07-27的近30天 activity_date BETWEEN DATE_ADD(2019-07-27,INTERVAL -29 day) and 2019-07-27这里使用了Between and 函数和 Date_add函数 2.按照日期分组&#xff0c;统计活跃用户个数 select activity_date day,count(distinct(us…

vue3+threejs新手从零开发卡牌游戏(十六):初始化对方手牌

添加对方手牌区时注意位置调整&#xff0c;以及手牌应该是背面朝上&#xff0c;加个rotateX翻转即可&#xff0c;其他代码和p1.vue代码一致&#xff0c;game/hand/p2.vue代码如下&#xff1a; <template><div></div> </template><script setup lan…

STL的基本概念

一、STL的诞生 长久以来&#xff0c;软件界一直希望建立一种可重复利用的东西 C的面向对象和泛型编程思想&#xff0c;目的就是复用性的提升 面向对象的三大特性(简单理解) 封装&#xff1a;把属性和行为抽象出来作为一个整体来实现事和物 继承&#xff1a;子类继承父类&a…

目前可用的免费云服务器整理汇总

随着云计算技术的飞速发展&#xff0c;越来越多的企业和个人开始关注并使用云服务器。为了吸引用户上云&#xff0c;各大云服务商纷纷推出了免费云服务器&#xff0c;供用户免费试用。本文将为大家整理汇总目前市场上可用的免费云服务器&#xff0c;以便大家更好地选择适合自己…

GIS与Python机器学习:开创地质灾害风险评价新纪元

地质灾害是指全球地壳自然地质演化过程中&#xff0c;由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下&#xff0c;地质灾害在世界范围内频繁发生。我国除滑坡灾害外&#xff0c;还包括崩塌、泥石流、地面沉…

Unity编辑器功能 将选中的文件夹复制一份到其他文件夹

[MenuItem("Ab包工具/将选中的文件移动到StreamingAssets文件夹下")] public static void MoveFireToStreamA() { //得到选中文件的数组 Object[] selectobj Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets); i…

Django之Web应用架构模式

一、Web应用架构模式 在开发Web应用中,有两种模式 1.1、前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示。前端与后端的耦合度很高 1.2、前后端分离 在前后端分离的应用模式中,后端仅返…

【物联网开源平台】tingsboard安装与编译

别看这篇了&#xff0c;这篇就当我的一个记录&#xff0c;我有空我再写过一篇&#xff0c;编译的时候出现了一个错误&#xff0c;然后我针对那一个错误执行了一个命令&#xff0c;出现了绿色的succes,我就以为整个tingsboard项目编译成功了&#xff0c;后面发现的时候&#xff…

Redis 教程系列之Redis 发布订阅(十五)

Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式&#xff1a;发送者(pub)发送消息&#xff0c;订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 下图展示了频道 channel1 &#xff0c; 以及订阅这个频道的三个客户端 —— client2 、 client5 和 cl…

【业界动态】数字孪生到底意味着什么

什么是数字孪生&#xff1f;它可以理解为一种技术&#xff0c;也可以理解为某种生态。数字孪生即指将物理实体映射至虚拟空间&#xff0c;进而协助完成预测、决策等动作。随着互联网的建设与发展&#xff0c;数字孪生在未来又会如何落地&#xff1f; 一、数字孪生到底是什么&am…

抗干扰段码屏驱动芯片/ LCD液晶屏驱动/仪器仪表液晶驱动IC-VK1C21D/DA FAE支持

产品型号&#xff1a;VK1C21D/DA 产品品牌&#xff1a;永嘉微电/VINKA 封装形式&#xff1a;SOP28/SSOP28 可定制裸片&#xff1a;DICE(COB邦定片)&#xff1b;COG(邦定玻璃用) 工程服务&#xff0c;技术支持&#xff01; 概述&#xff1a; VK1C21D/DA是一个点阵式存储映射…

【C/C++】C++中的四种强制类型转换

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

保姆级指导0基础如何快速搭建“对话机器人”类ChatGPT

参考了CDSN上的文章&#xff0c;但发现不work&#xff0c; 不是这里有问题&#xff0c;就是那里有问题&#xff0c;查阅了大量的资料&#xff0c;做了无数次试验&#xff0c;终于整理出来了一个完整的教程&#xff0c;保可用&#xff0c;保真~~~~~如果各位遇到什么问题&#xf…