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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

两个有序序列的中位数(全网首篇递归、分治解决)

题目描述 已知有两个等长非降序序列 S 1 S_1 S1​和 S 2 S_2 S2​。先将 S 1 S_1 S1​和 S 2 S_2 S2​ 合并为 S 3 S_3 S3​ ,求 S 3 S_3 S3​的中位数。 输入描述 第一行,序列 S 1 S_1 S1​ 和 S 2 S_2 S2​ 的长度 N N N , 第二行&#xff…

Uibot6.0 (RPA财务机器人师资培训第4天 )批量开票机器人案例实战

类似于小北之前发布的一篇博客(不能说很像,只能说是一模一样) Uibot (RPA设计软件)财务会计Web应用自动化(批量开票机器人)-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/136782171?spm1001.2014.3001.…

JAVA面试大全之并发篇

目录 1、并发基础 1.1、多线程的出现是要解决什么问题的? 本质什么? 1.2、Java是怎么解决并发问题的? 1.3、线程安全有哪些实现思路? 1.4、如何理解并发和并行的区别? 1.5、线程有哪几种状态? 分别说明从一种状态到另一种状态转变有哪些方式? 1.6、通常线程有哪几…

【Android 源码】Android源码下载指南

文章目录 前言安装Repo初始化Repo选择分支没有梯子替换为清华源 有梯子 下载源码下载开始参考 前言 这是关于Android源码下载的过程记录。 环境:Windows上通过VMware安装的Ubuntu系统 安装Repo 创建Repo文件目录 mkdir ~/bin PATH~/bin:$PATH下载Repo工具&#…

Elastic Search 8.13: 为开发者简化嵌入和排名

作者:来自 Elastic Alvin Richards, Ranjana Devaji Elasticsearch 8.13 扩展了能力,使开发者能够利用人工智能和机器学习模型创建快速和卓越的搜索体验。与 Apache Lucene 9.10 集成,测量向量搜索性能在基准测试中超过 2 倍,扩展…

基于springboot+vue+Mysql的酒店管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

git配置SSH 密钥

git配置SSH 密钥 1.window配置ssh1.安装ssh2.安装 Git(安装教程参见安装Git)并保证版本大于 1.9![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e59f4e16b83c45649f1d9d7bd6bf92c0.png)3.SSH 尽量保持最新,6.5之前的版本由于使用…

【保姆级讲解如何Chrome安装Vue-devtools的操作】

🌈个人主页:程序员不想敲代码啊🌈 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家🏆 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提…

ruoyi-nbcio-plus基于vue3的flowable其它元素(目前主要是元素文档)的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

深度好文:解决Ubuntu 18.04安装nvidia显卡驱动,导致内核不匹配:无需重装系统修复内核

深度好文:解决Ubuntu 18.04安装nvidia显卡驱动,导致内核不匹配:无需重装系统修复内核 目录 一、问题描述二、尝试修复三、安装Nvidia驱动和CUDA并配置cuDNN四、总结 一、问题描述 昨天打算更新一下Ubuntu 18.04的显卡驱动,以支持…

MSTP-3 8K/4K多业务综合光传输平台

MSTP-3作为全新的多业务综合光传输平台,是目前市场上少有的非插卡式、集中式最大32路4K多业务综合光传输产品,不但实现了自主知识产权和国产化替代,还填补了国内多通道8K/16K远距离光传输产品空白。 ⚫ 单套设备即可实现集中式多业务远距离光…

MySQL高阶SQL语句(二)

文章目录 MySQL高阶SQL语句(二)一、MySQL常用查询1、子查询1.1 语法1.1.1 结合select语句查询1.1.2 结合insert语句查询1.1.3 结合update语句查询1.1.4 结合delete语句查询1.1.5 在in前面添加not1.1.6 exists关键字 2、别名 二、MySQL视图1、视图介绍1.1…

Python处理文件系统路径库之pathlib使用详解

概要 Python的pathlib库提供了一种面向对象的方法来处理文件系统路径。它使得路径操作更加直观和易于管理,相比于传统的os.path模块,pathlib提供了更为丰富和灵活的API。 pathlib库 pathlib模块在Python中用于处理文件系统路径。通过使用面向对象的方法,它允许路径表示为P…

《科学技术创新》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答: 问:《科学技术创新》期刊是哪个级别? 答:省级 主管单位:黑龙江省科学技术协会 主办单位:黑龙江省科普事业中心 问:《科学技术创新》期刊影响因子? 答:(2…

机器学习——聚类算法-层次聚类算法

机器学习——聚类算法-层次聚类算法 在机器学习中,聚类是一种将数据集划分为具有相似特征的组或簇的无监督学习方法。聚类算法有许多种,其中一种常用的算法是层次聚类算法。本文将介绍聚类问题、层次聚类算法的原理、算法流程以及用Python实现层次聚类算…

深入理解Vue的生命周期机制

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

文件删除了怎么恢复?10 个最好的免费文件恢复工具

意外删除、格式化问题和系统故障是数字时代数据丢失的常见原因。在这些情况下,免费的文件恢复软件可以通过廉价地恢复丢失的数据来挽救局面。了解这些程序如何快速有效地恢复任何原因的文件。 为什么您需要免费的文件恢复软件: 如今,任何人都…

【教程】JavaScript代码混淆及优化

摘要 本文将介绍常见的JavaScript代码混淆技术,包括字符串转十六进制、Unicode编码、Base64加密、数值加密、数组混淆、花指令、逗号表达式、控制流程平坦化和eval执行。通过对这些混淆技术的理解和应用,可以提高代码的安全性和保护知识产权。 引言 随…

hutool-captcha 图片偏红问题

hutool-captcha 图片偏红问题 如图 设置代码背景色如下 // 设置背景颜色为白色 不生效 lineCaptcha.setBackground(Color.white);问题代码 //返回 base64 ByteArrayOutputStream bos new ByteArrayOutputStream(); ImageIO.write(lineCaptcha.getImage(), "JPEG"…

47 vue 常见的几种模型视图不同步的问题

前言 这里主要是来看一下 关于 vue 中的一些场景下面 可能会出现 模型和视图 不同步更新的情况 然后 这种情况主要是 vue 中的对象 属性没有响应式的 setter, getter 然后 我们这里就来看一下 大多数的情况下的一个场景, 和一些处理方式 当然 处理方式主要是基于 Vue.set, …