深度学习基础模型之Mamba

Mamba模型简介

问题:许多亚二次时间架构(运行时间复杂度低于O(n^2),但高于O(n)的情况)(例如线性注意力、门控卷积和循环模型以及结构化状态空间模型(SSM))已被开发出来,以解决 Transformer 在长序列上的计算效率低下问题,但此类模型的一个关键弱点是它们无法执行基于内容的推理

1. 模型架构

模型简单理解(特殊的门控RNN网络):线性层+门控+选择性SSM的组合

在这里插入图片描述

2. 模型特点

2.1 选择性机制

在这里插入图片描述

Δ \Delta Δ 、A、B、C应该是SSM中的可学习参数

  • 根据输入参数化 SSM 参数来设计一种简单的选择机制,这使得模型能够过滤掉不相关的信息并无限期地记住相关信息。
    这里作者认为(研究动机):‘序列建模的一个基本问题是将上下文压缩成更小的状态。事实上,我们可以从这个角度来看待流行序列模型的权衡。例如,注意力既有效又低效,因为它明确地根本不压缩上下文。自回归推理需要显式存储整个上下文(即KV缓存),这直接导致Transformers的线性时间推理和二次时间训练缓慢。’
    在这里插入图片描述
  • 序列模型的效率与有效性权衡的特征在于它们压缩状态的程度:高效模型必须具有较小的状态,而有效模型必须具有包含上下文中所有必要信息的状态。反过来,我们提出构建序列模型的基本原则是选择性:或关注或过滤掉序列状态输入的上下文感知能力。

2.2 硬件算法

算法通过扫描而不是卷积来循环计算模型,但不会具体化扩展状态,计算速度比所有先前的 SSM 模型提升三倍。

代码调用

import torch
from mamba_ssm import Mambabatch, length, dim = 2, 64, 16
x = torch.randn(batch, length, dim).to("cuda")
model = Mamba(# This module uses roughly 3 * expand * d_model^2 parametersd_model=dim, # Model dimension d_modeld_state=16,  # SSM state expansion factord_conv=4,    # Local convolution widthexpand=2,    # Block expansion factor
).to("cuda")
y = model(x)
print(x.shape)
print(y.shape)
assert y.shape == x.shape

总结

这项基础性模型研究旨在解决transformer模型的长序列数据计算效率低的问题,其解决方法的动机:利用选择性机制实现有效特征的提取。个人理解为通过有效特征信息的选择实现知识提取(信息压缩),这让我联想到,最初的VGG语义分割网络结构设计其实类似于模拟知识特征的压缩与抽取,但后来发现这种方式会损失边缘信息,因此提出了U-net架构,再进一步卷积的方式无法有效估计全局上下文信息的联系,进而提出注意力机制来解决这一问题。
从技术与文章写作的角度来看,问题的发展似乎从知识压缩->细节特征提取->全局信息整合,到Mamba貌似是在全局信息整合基础上在进行一次有效信息的抽取,进而使模型从数据中提取根据代表性的特征。整体突出一点:深度学习也是一个特征工程,利用模型来替换原有的手工设计的特征

  • 详细代码链接
  • 相关模型应用案例:U-Mamba
    在这里插入图片描述

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

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

相关文章

mac怎么删除python

mac 默认安装了python2;自己后面又安装了python3;为了方便,现在想将python3换成Anaconda3。 Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。 Python3安装之后,在系统中不同目…

概率论经典题目-二维随机变量及分布--由概率密度求分布函数和概率

解答: 由概率密度函数求解分布函数的公式可知: 辅助图形加以确定积分上下限

酷得单片机方案 2.4G儿童遥控漂移车

电子方案开发定制,我们是专业的 东莞酷得智能单片机方案之2.4G遥控玩具童车具有以下比较有特色的特点: 1、内置充电电池:这款小车配备了可充电的电池,无需频繁更换电池,既环保又方便。充电方式可能为USB充电或者专用…

Linux 给网卡配置ip

ip addr | grep eth9 ifconfig eth9 10.0.0.2 netmask 255.255.255.0 up

Zookeeper(九)客户端的启动流程

目录 一 ZooKeeper会话的创建与连接1.1 会话的创建1.1.1 ClientWatchManager1.1.2 ConnectStringParser1.1.3 HostProvider1.1.4 ClientCnxn 1.2 会话的连接1.2.1 SendThread1.2.2 eventThread 二 ZooKeeper会话的响应2.1 接受服务端响应 三 ClientCnxn 详解3.1 Packet3.2 队列…

vue/html 集成对接 汉王esp370(标准版/谷歌版)

汉王eqp370版本介绍(所有下面的资料都在我主页文件里面) 标准版:只支持IE版本浏览器 谷歌版:支持谷歌版本浏览器 区分汉王版本的软件:已提供 如何区分版本 集成标准版方式 原理:exe的ocx组件安装后&#xf…

计算机视觉的应用27-关于VoVNetV2模型的应用场景,VoVNetV2模型结构介绍

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用27-关于VoVNetV2模型的应用场景,VoVNetV2模型结构介绍。VoVNetV2(Visual Object-Driven Representation Learning Network Version 2)是一种深度学习模型&#x…

建立动态MGRE隧道的配置方法

目录 一、实验拓扑 1.1通用配置 1.1.1地址配置 1.1.2静态缺省指向R5,实现公网互通 1.1.3MGRE协议配置 1.1.4配置静态 二、Shortcut方式 三、Normal方式(非shortcut) 四、总结 一、实验拓扑 下面两种配置方法皆使用静态方式 1.1通用配…

Sentinel原理及实践

Sentinel 是什么 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 为什么使用sentinel&…

文件的顺序读写——顺序读写函数——fgets、fgetc、fputs、 fputc

✨✨ 欢迎大家来到莉莉的博文✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 目录 一、fgetc和fputc函数 1.1 fputc 1.2 fgetc 二、fputs和fgets函数 2.1 fputs函数 2.2 fgets函数 一、fgetc和fputc函数 1.1 fputc 返回类…

基于单片机自行车码表系统设计

**单片机设计介绍,基于单片机自行车码表系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机自行车码表系统设计主要涵盖了硬件设计、软件设计以及功能实现等多个方面。以下是对该设计概要的详细描述&#xff1a…

计算机网络——31数据链路层和局域网引论和服务

数据链路层和局域网 WAN:网络形式采用点到点链路 带宽大,距离远(延迟大) 贷款延迟积大 如果采用多点连接方式 竞争方式:一旦冲突代价大令牌等协调方式:在其中协调节点的发送代价大 点到点链路的链路层服…

每日面经分享(Spring Boot: part3 Service层)

SpringBoot Service层的作用 a. 封装业务逻辑:Service层负责封装应用程序的业务逻辑。Service层是控制器(Controller)和数据访问对象(DAO)之间的中间层,负责处理业务规则和业务流程。通过将业务逻辑封装在S…

设计模式(9):外观模式

一.迪米特法则(最少知识原则) 一个软件实体应当尽可能少的与其他实体发生相互作用。 二.外观模式 为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用。它的核心是什么呢,就是为我们的子系统提供一个统一的入口,封装子…

newOJ-1093: 分香蕉

目录 题目链接: 思路: 坑一: 坑二: 坑三: 代码: 通过10%: 通过80%: 通过100%: 题目链接: P1093 - 分香蕉 - New Online Judge (ecustacm.cn) 思路&a…

RVM安装Ruby笔记(Mac)

环境 硬件:Macbook Pro 系统:macOS 14.1 安装公钥 通过gpg安装公钥失败,报错如下: 换了几个公钥地址(hkp://subkeys.pgp.net,hkp://keys.gnupg.net,hkp://pgp.mit.edu),…

使用Flink实现MySQL到Kafka的数据流转换

使用Flink实现MySQL到Kafka的数据流转换 本篇博客将介绍如何使用Flink将数据从MySQL数据库实时传输到Kafka,这是一个常见的用例,适用于需要实时数据connector的场景。 环境准备 在开始之前,确保你的环境中已经安装了以下软件:…

ML-Decoder: Scalable and Versatile Classification Head

1、引言 论文链接:https://openaccess.thecvf.com/content/WACV2023/papers/Ridnik_ML-Decoder_Scalable_and_Versatile_Classification_Head_WACV_2023_paper.pdf 因为 transformer 解码器分类头[1] 在少类别多标签分类数据集上表现得很好,但由于其查询…

PHP的定时任务框架的taskPHP3.0学习记录2(环境要求、配置Redis、crontab执行时间语法、命令操作以及Screen全屏窗口管理器)

环境要求 php版本> 5.5开启socket扩展开启pdo扩展开启shmop扩展 echo <pre>; echo --; $requiredVersion 5.6.0; $currentVersion phpversion(); if (version_compare($currentVersion, $requiredVersion, >)) {echo "1.PHP版本满足要求&#xff0c;当前版…

c语言:vs2022写一个一元二次方程(包含虚根)

求一元二次方程 的根&#xff0c;通过键盘输入a、b、c&#xff0c;根据△的值输出对应x1和x2的值(保留一位小数)(用if语句完成)。 //一元二次方程的实现 #include <stdio.h> #include <math.h> #include <stdlib.h> int main() {double a, b, c, delta, x1…