当前位置: 首页 > news >正文

深度学习基础模型之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
    在这里插入图片描述

相关文章:

深度学习基础模型之Mamba

Mamba模型简介 问题:许多亚二次时间架构(运行时间复杂度低于O(n^2),但高于O(n)的情况)(例如线性注意力、门控卷积和循环模型以及结构化状态空间模型(SSM))已被开发出来,以解决 Transformer 在长…...

Topaz Video AI for Mac v5.0.0激活版 视频画质增强软件

Topaz Video AI for Mac是一款功能强大的视频处理软件,专为Mac用户设计,旨在通过人工智能技术为视频编辑和增强提供卓越的功能。这款软件利用先进的算法和深度学习技术,能够自动识别和分析视频中的各个元素,并进行智能修复和增强&…...

解决WordPress文章的段落首行自动空两格的问题

写文章时,段落首行都会空两格,可是WordPress自带的编辑器却没有考虑到这一点,导致发布的文章首行都是顶格的,看起来很不习惯。 我们通常的解决方法都是在发布文章时把编辑器切换到“文本”模式,然后再在首行手动键入两…...

RISC-V单板计算机模拟和FPGA板多核IP实现

🎯要点 🎯使用单板计算机 Visionfive 2 或模拟器测试RISC-V汇编🎯RISC-V汇编加载和算术。🎯使用GNU MAKE汇编RISC-V指令,ESP32使用CMake编译执行指令。🎯RISC-V汇编功能和使用释义:控制指令&am…...

Mojo编程语言案例及介绍

Mojo是一种新兴的编程语言,它结合了现代编程范式与简洁易读的语法,为开发者提供了一个强大且高效的开发工具。以下将详细介绍Mojo编程语言的特性,并通过一个实际案例来展示Mojo的应用。 一、Mojo编程语言介绍 Mojo编程语言的设计理念是“简单…...

【Python面试题收录】Python中有哪些方法交换两个变量的值?至少给出三种方法。

一、使用临时变量 # 定义原始变量 a 10 b 20# 直接交换,Python会一次性执行两个赋值操作 a, b b, a# 无需额外变量,a 和 b 的值已经交换 print(a) # 输出: 20 print(b) # 输出: 10 二、利用元组解包特性(不使用临时变量,推荐…...

MySQL核心命令详解与实战,一文掌握MySQL使用

文章目录 文章简介演示库表创建数据库表选择数据库删除数据库创建表删除表向表中插入数据更新数据删除数据查询数据WHERE 操作符聚合函数LIKE 子句分组 GROUP BY HAVINGORDER BY(排序) 语句LIMIT 操作符 分页查询多表查询-联合查询 UNION 操作符多表查询-连接的使用-JOIN语句编…...

基于Springboot + MySQL + Vue 大学新生宿舍管理系统 (含源码)

目录 📚 前言 📑摘要 📑操作流程 📚 系统架构设计 📚 数据库设计 💬 管理员信息属性 💬 学生信息实体属性 💬 宿舍安排信息实体属性 💬 卫生检查信息实体属性 &…...

vulnhub pWnOS v2.0通关

知识点总结: 1.通过模块来寻找漏洞 2.msf查找漏洞 3.通过网站源代码,查看模块信息 环境准备 攻击机:kali2023 靶机:pWnOS v2.0 安装地址:pWnOS: 2.0 (Pre-Release) ~ VulnHub 在安装网址中看到,该靶…...

leetcode热题100.数据流的中位数

作者:晓宜 🌈🌈🌈 个人简介:互联网大厂Java准入职,阿里云专家博主,csdn后端优质创作者,算法爱好者 ❤️❤️❤️ 你的关注是我前进的动力😊 Problem: 295. 数据流的中位数…...

C 从函数返回指针

我们已经了解了 C 语言中如何从函数返回数组,类似地,C 允许您从函数返回指针。为了做到这点,您必须声明一个返回指针的函数,如下所示: int * myFunction() { . . . }另外,C 语言不支持在调用函数时返回局部…...

(文章复现)考虑分布式电源不确定性的配电网鲁棒动态重构

参考文献: [1]徐俊俊,吴在军,周力,等.考虑分布式电源不确定性的配电网鲁棒动态重构[J].中国电机工程学报,2018,38(16):4715-47254976. 1.摘要 间歇性分布式电源并网使得配电网网络重构过程需要考虑更多的不确定因素。在利用仿射数对分布式电源出力的不确定性进行合…...

蓝桥杯第八届c++大学B组详解

目录 1.购物单 2.等差素数列 3.承压计算 4.方格分割 5.日期问题 6.包子凑数 7.全球变暖 8.k倍区间 1.购物单 题目解析&#xff1a;就是将折扣字符串转化为数字&#xff0c;进行相加求和。 #include<iostream> #include<string> #include<cmath> usin…...

小于n的最大数 Leetcode 902 Numbers At Most N Given Digit Set

这两个问题的本质就是一个棵树&#xff0c;然后根据n对树做剪枝。难点在于剪的时候边界条件有些坑&#xff0c;get_lower_largest_digit_dic是这两个题目的共同点 题目一&#xff1a; 小于n的最大数 算法题目&#xff1a;小于n的最大数 问题描述&#xff1a;给一个数组nums[5…...

Leetcode刷题-数组(二分法、双指针法、窗口滑动)

数组 1、二分法 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 需要注意区间的问题。首先在最外面的循环判断条件是left<right。那就说明我们区间规定的范围就是【left,right】 属于是左闭右闭&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&…...

STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (b)

继续上篇博文&#xff1a;STM32学习和实践笔记&#xff08;4&#xff09;: 分析和理解GPIO_InitTypeDef GPIO_InitStructure (a)-CSDN博客 往下写&#xff0c; 为什么&#xff1a;当GPIO_InitStructure.GPIO_PinGPIO_Pin_0 ; 时&#xff0c;其实就是将对应的该引脚的寄存器地…...

数据仓库——事实表

数据仓库基础笔记思维导图已经整理完毕&#xff0c;完整连接为&#xff1a; 数据仓库基础知识笔记思维导图 事实表 事务事实表 事务事实表用于跟踪事件&#xff0c;通过存储事实和与之关联的维度细节&#xff0c;允许单独或聚集地研究行为。粒度稀疏性包含可加事实 无事实的…...

人工智能常用的编程语言有哪些?

人工智能常用的编程语言包括Python、Java、C、R、Lisp和Prolog等。具体选择取决于项目需求、技术背景和性能要求。 Python是AI领域的明星语言&#xff0c;由于其简洁易懂的语法、丰富的库支持以及庞大的社区资源&#xff0c;适用于机器学习、深度学习和自然语言处理等领域。 …...

【Leetcode每日一题】模拟 - 提莫攻击(难度⭐)(45)

1. 题目解析 题目链接&#xff1a;495. 提莫攻击 2.算法原理 一、分情况讨论 要计算中毒的总时长&#xff0c;我们需要考虑时间点之间的差值&#xff0c;并根据这些差值来确定中毒的实际持续时间。 情况一&#xff1a;差值大于等于中毒时间 假设你的角色在时间点A中毒&#…...

OPPO云VPC网络实践

1 OPPO 云网络现状 随着OPPO业务的快速发展&#xff0c;OPPO云规模增长迅速。大规模虚拟实例的弹性伸缩、低延时需求对网络提出了诸多挑战。原有基于VLAN搭建的私有网络无法解决这些问题&#xff0c;给网络运维和业务的快速上线带来了挑战。 梳理存在的主要问题如下&#xf…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...