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

Mamba:超越Transformer的新一代神经网络架构

image.png

在过去的七年里,Transformer一直在语言建模领域占据着主导地位。然而,现在有一个新兴的神经网络架构Mamba,正在挑战Transformer的霸主地位。虽然目前Mamba仅在规模较小的模型上进行了测试(参数量达到数十亿),但其结果已经展现出巨大的潜力。此外,与Transformer相比,Mamba所需的计算量更少。对于n个单词的输入序列,Mamba仅需O(nlog(n))的计算量,而Transformer则需要O(n^2)的计算量。因此,基于Mamba的语言模型应该能够处理~~~~更大的上下文信息量。

什么是Mamba?

Mamba通常被认为是状态空间模型(State-Space Model)的一种扩展。状态空间模型是一种序列模型,近年来逐渐受到关注。然而,状态空间模型背后的理论相当复杂,涉及到一些高级数学。幸运的是,Mamba也可以被理解为递归神经网络(Recurrent Neural Networks,简称RNNs)的扩展,而RNNs相对来说更容易理解。因此,我们将通过RNN的路径来理解Mamba。

递归神经网络概述

递归神经网络是一种处理序列数据的神经网络。给定一个输入向量序列,一个卷积层会对连续的向量组应用神经网络。关键在于神经网络每次只处理少量向量,这使得模型易于训练。然而,卷积神经网络(CNNs)的一个缺点是,远处向量的信息不能被立即组合起来,这使得它们难以理解输入中的长距离依赖关系。为了解决这个问题,Transformer架构应运而生,成功地允许单层神经网络组合任意距离的向量信息。

Transformer的局限性

尽管Transformer在许多任务中表现出色,但它的一个显著限制是其计算量随着输入长度呈二次方增长。这对于较小的输入来说不是大问题,但如果输入包含百万个向量,那么计算量将增加到百万的平方,这相当庞大。

RNN的不同方法

递归神经网络采用了一种完全不同的方法来改进卷积层。其基本思想是,将神经网络应用于一个输入向量和先前的输出向量。这看似一个小改动,但却带来了深远的影响:每个输出向量现在包含了所有先前输入向量的信息,而不仅仅是前一个向量的信息。这使得最终的输出向量包含了所有输入向量的信息,而无需额外的计算量。

RNN的实际问题

尽管理论上RNN能够免费地整合长距离信息,但在实际使用中,RNN存在两个主要问题,使其几乎无法使用。首先,尽管递归层的计算量与卷积层相同,但这种计算无法并行化。即使有许多处理器可用,也无法在前一步完成前开始评估下一个输入。相比之下,卷积层的神经网络只需要看到原始输入,可以同时在所有输入上运行。

其次,RNN非常难以训练。尽管理论上单层递归层可以整合任意多的输入信息,但实际中它们只能学习到整合前几步的信息。这使得RNN在过去几十年中逐渐被卷积神经网络和Transformer所取代,几乎没有被使用。

线性RNN的突破

去年发表的一篇论文展示了线性RNN能够避免上述两个问题,因此线性RNN在处理长序列任务时非常有效。那么,什么是线性递归神经网络?简单来说,就是将神经网络替换为线性函数。尽管线性函数只能进行相对简单的变换,但我们可以通过在每个输出向量后应用完整的神经网络来弥补这一缺陷。

线性递归层的并行计算

通过将递归操作纯粹线性化,可以在O(log(n))时间内并行计算。具体来说,线性递归操作可以通过一种称为扫描(scan)的操作来实现,例如累积和(cumulative sum)。这种操作可以在并行计算中显著提高效率。

解决RNN的训练问题

RNN训练困难的根源在于梯度消失和爆炸问题。线性RNN通过在初始化时确保权重接近于1来解决这个问题。具体方法包括使用复数极坐标形式参数化权重,确保在初始化时权重接近于1,并将输入乘以一个可学习参数,使其接近于0,从而在初始化时保持稳定状态。

Mamba的创新

尽管线性RNN在长序列任务中表现出色,但在语言建模中效果不如Transformer。Mamba通过根据输入生成不同的权重来解决这一问题,从而实现信息的选择性遗忘或保留。此外,Mamba将输出向量的大小增加了16倍,使其能够存储更多的输入信息。这些改进使得Mamba在语言建模中表现优于Transformer,同时计算量仅为O(nlog(n))。

Mamba的争议

尽管Mamba展现出巨大潜力,但在2024年ICLR会议中,Mamba论文被拒,引发了机器学习社区的广泛讨论。评审认为Mamba未在长距离竞技场基准上进行测试,且只在语言建模上进行了评估。然而,Mamba在语言建模中的表现已经证明了其优越性,并在下游任务中表现出色。

Mamba通过一系列创新,成功地解决了RNN和Transformer的局限性,为语言建模提供了一种高效且强大的新方法。尽管面临一些争议和质疑,但Mamba的潜力不容忽视。在未来,它有望在更多实际应用中展现出其卓越的性能。

关注我,每天带你开发一个AI应用,每周二四六直播,欢迎多多交流。

image.png

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【算法】LRU置换算法
  • Linux——用户和权限
  • K8S CronJob
  • 【QNX+Android虚拟化方案】114 - QNX /dev/switch 节点创建 及 读写功能实现实例
  • OpenCPN Compiling on Windows
  • Python 数据分析笔记— Numpy 基本操作(上)
  • C++笔记---模板初阶
  • Elasticsearch7.14.2集群部署和elk部署
  • C#中通过TabControl控制MDI子窗体显示切换的实现过程
  • jmeter响应断言、json断言、断言持续时间、大小断言操作
  • pytest.mark简介
  • RabbitMQ中的死信交换机?(RabbitMQ延迟队列有了解过吗)
  • [Labview] 表格改值后单元格编辑功能,更改颜色、字体、颜色等
  • sqli-labs靶场通关攻略(五十一到五十六关)
  • 数据线性结构
  • co.js - 让异步代码同步化
  • Electron入门介绍
  • Java 内存分配及垃圾回收机制初探
  • Laravel 菜鸟晋级之路
  • python学习笔记-类对象的信息
  • Spring声明式事务管理之一:五大属性分析
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 解析带emoji和链接的聊天系统消息
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 携程小程序初体验
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​520就是要宠粉,你的心头书我买单
  • ​io --- 处理流的核心工具​
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • (12)目标检测_SSD基于pytorch搭建代码
  • (2020)Java后端开发----(面试题和笔试题)
  • (arch)linux 转换文件编码格式
  • (Charles)如何抓取手机http的报文
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)jQuery 基础
  • (转)Sublime Text3配置Lua运行环境
  • (转载)OpenStack Hacker养成指南
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .net core 6 集成和使用 mongodb
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core 中插件式开发实现
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net Signalr 使用笔记
  • .NET6实现破解Modbus poll点表配置文件