Mamba模型

為什么要提出mamba模型?

transformer特點:訓練快,推理慢,計算成本O(n*n)

Rnn的特點:訓練慢,推理快,容易遺忘

其實很容易理解,因為RNN的輸入只包含前一個隱藏層和當前的輸入,而transformer需要考慮之前所有(或者加窗)的TOKENS

transformer模型的優勢在于,它能夠回溯并利用序列中任何早期tokens的信息,以此來生成每個tokens的表征。Transformer模型由兩部分核心結構組成:一是用于理解文本內容的編碼器模塊,二是用于生成文本輸出的解碼器模塊。這兩種結構通常聯合使用,以應對包括機器翻譯在內的多種語言處理任務。

我們可以利用這種結構,僅通過解碼器來構建生成模型
基于Transformer的這種模型,被稱為Generative Pre-trained Transformer(GPT),它使用解碼器模塊來處理并續寫給定的文本輸入。例如給定一個句子前半部分,讓模型預測下一個單詞是什么。

狀態空間模型(SSM)

狀態空間模型(State Space Model,SSM) 與 Transformer 和 RNN 一樣,用于處理信息序列,例如文本和信號

1. 什么是狀態空間?
狀態空間是一組能夠完整捕捉系統行為的最少變量集合。它是一種數學建模方法,通過定義系統的所有可能狀態來表述問題。

讓我們用一個更簡單的例子來理解這個概念。想象我們正在走過一個迷宮。這里的“狀態空間”就像是迷宮中所有可能位置的集合,即一張地圖。地圖上的每個點都代表迷宮中的一個特定位置,并包含了該位置的詳細信息,比如離出口有多遠。

而“狀態空間表示”則是對這張地圖的抽象描述。它告訴我們當前所處的位置(當前狀態)、我們可以移動到哪些位置(未來可能的狀態),以及如何從當前位置轉移到下一個狀態(比如向左轉或向右轉)

雖然狀態空間模型利用方程和矩陣來記錄這種行為,但它們本質上是一種記錄當前位置、可能的前進方向以及如何實現這些移動的方法。

描述狀態的變量(在我們的迷宮例子中,這些變量可能是X和Y坐標以及與出口的相對距離)被稱作“狀態向量”

這個概念聽起來是不是有些耳熟?那是因為在語言模型中,我們經常使用嵌入或向量來描述輸入序列的“狀態”。例如,當前位置的向量(即狀態向量)可能如下所示:

在神經網絡的語境中,“狀態”通常指的是網絡的隱藏狀態。在大型語言模型的背景下,隱藏狀態是生成新tokens的一個關鍵要素。

2. 什么是狀態空間模型?


狀態空間模型(SSM)是用來描述這些狀態表示,并根據給定的輸入預測下一個可能狀態的模型。

在傳統意義上,SSM在時間 t 的工作方式如下:

將輸入序列 x ( t ) 例如,迷宮中的左移和下移,可以理解為之前時刻的移動軌跡)映射到潛在的狀態表示 h ( t )(例如,距離出口的遠近以及X/Y坐標)。
然后從這個狀態表示中推導出預測的輸出序列 y ( t ) (例如,為了更快到達出口而再次左移,即下一個時刻的動作)。

核心方程

狀態方程展示了輸入如何影響狀態(通過矩陣B),以及狀態如何隨時間變化(通過矩陣A)

?

輸出方程描述了狀態如何轉換為輸出(通過矩陣 C)?以及?輸入如何影響輸出(通過矩陣 D )

?

?

狀態空間模型具體流程

可視化這兩個方程為我們提供了以下架構:

1、設想我們有一個輸入信號 x ( t ) x(t)x(t),這個信號首先與矩陣B相乘,而矩陣B刻畫了輸入 對系統 的影響程度。

2.我們將這個狀態與矩陣A相乘,矩陣A揭示了所有內部狀態是如何相互連接的,因為它們代表了系統的基本動態。?矩陣A在創建狀態表示之前被應用,并在狀態表示更新之后進行更新

接著,我們利用矩陣C來定義狀態如何轉換為輸出

3、 最后,我們可以利用矩陣D提供從輸入到輸出的直接信號。這通常也稱為跳躍連接,類似于殘差連接。

這兩個方程共同作用,目的是根據觀測數據來預測系統的狀態。由于輸入被假定為連續的,狀態空間模型的主要表現形式是連續時間表示

3. 從連續信號到離散信號


對于連續信號,直接找到狀態表示 h ( t ) h(t)h(t) 在分析上可能頗具挑戰。此外,由于我們通常處理的都是離散輸入(比如文本序列),我們希望將模型轉換為離散形式。

Zero-Order Hold Technoloty

為了實現這一點,我們采用了零階保持(Zero-Order Hold, ZOH)技術。其工作原理如下:每當接收到一個離散信號時,我們就保持該信號值不變,直到下一個離散信號的到來。這個過程實際上創建了一個SSM可以處理的連續信號。

我們保持信號值的時間由一個新的可學習參數表示,這個參數稱為 步長 Δ。它代表了輸入信號的分辨率。

現在,由于我們有了連續的輸入信號,我們能夠生成連續的輸出信號,并且只需根據輸入信號的時間步長來對輸出值進行采樣。這些采樣值構成了我們的離散輸出。

數學表示

從數學角度來看,我們可以按照以下方式應用零階保持技術:

關于運用ZOH零階保持法把連續SSM轉換為離散SSM的詳細推導這里不再贅述,感興趣的讀者可以自行查閱資料。

因此,可以將連續狀態空間模型(SSM)轉換為離散形式,其公式不再是連續函數到函數的映射

x ( t ) → y ( t ),而是離散序列到序列的映射 x_{k}\rightarrow y_{k}

????????這里,矩陣A和B現在表示模型的離散參數。使用 k kk 而不是 t tt 來表示離散時間步長,并在提到連續 SSM 與離散 SSM 時使其更加清晰。

????????在訓練期間仍然保存矩陣 A的連續形式,而不是離散化版本。在訓練過程中,連續表示被離散化。

現在我們已經有了離散表示的公式,讓我們探索如何實際計算模型。

4. 循環表示

離散 SSM 允許我們以特定的時間步長而不是連續信號來表述問題。正如我們之前在 RNN 中看到的那樣,循環方法在這里非常有用。如果我們考慮離散時間步長而不是連續信號,我們可以用時間步長重新表述問題:

5. 卷積表示

另一種可用于狀態空間模型(SSM)的表示形式是卷積。
在傳統的圖像識別任務中,使用?濾波器(或稱卷積核)?提取圖像的聚合特征:

我們用來表示這種“濾波器”的內核是從SSM模型推導而來的:

這可以被轉換為一個具有明確的核公式的單個卷積操作:

6. 三種表示

這三種表示法,連續的循環的,和卷積的都有不同的優點和缺點:

有趣的是,我們現在可以在推理時利用循環SSM的高效性,并在訓練時利用卷積SSM的并行處理能力。

借助這些不同的表示形式,我們可以采用一種巧妙的方法,即根據不同的任務需求選擇合適的表示。在訓練階段,我們采用可以并行計算的卷積表示,以便加快訓練速度;而在推理階段,我們則切換到高效的循環表示,以優化推理性能:(給我的啟示,既然可以把連續的做成離散的,并且在不同的階段利用TRANSFORMER訓練快的優勢,而RNN推理快的優勢,量子版本也是如此)

該模型稱為線性狀態空間層(Linear State-Space Layer,LSSL)。

這些表示形式都共有一個關鍵特性,即線性時間不變性(Linear Time Invariance,LTI)。LTI屬性指出,在狀態空間模型(SSM)中,參數A、B和C對于所有時間步來說是恒定的。這意味著無論SSM生成哪個token,矩陣A、B和C都是一模一樣的。

換句話說,無論你向SSM提供何種順序的輸入,A、B和C的值都不會改變。我們擁有的是一個不區分內容的靜態表示。

7. 矩陣A的重要性

矩陣A可以說是狀態空間模型(SSM)公式中最為關鍵的組成部分之一。正如我們之前在循環表示中所討論的,矩陣A負責捕捉先前狀態的信息,并利用這些信息來構建新的狀態

本質上,矩陣A產生隱藏狀態

因此,構建矩陣A的關鍵可能在于僅保留之前幾個token的記憶,并捕捉我們所見每個token之間的差異。特別是在循環表示的背景下,由于它僅考慮前一個狀態,這一點尤為重要。

那么,我們如何創建一個能夠保持大容量記憶(即上下文大小)的矩陣A呢?

這時,我們就用到了**HiPPO(Hungering Hungry Hippo)**????,這是一個高階多項式投影運算器。HiPPO的目標 是將迄今為止觀察到的 所有輸入信號壓縮成一個系數向量。

HiPPO利用矩陣A構建一個狀態表示,這個表示能夠有效地捕捉最近token的信息,并同時讓舊token的影響逐漸減弱。其公式可以表示為:

?

實踐證明,使用HiPPO構建矩陣A的方法明顯優于隨機初始化。因此,它能夠更精確地重建最新的信號(即最近的tokens),而不僅僅是初始狀態。

HiPPO矩陣的核心在于其能夠生成一個隱藏狀態,用以存儲歷史信息。 在數學上,這是通過追蹤勒讓德多項式的系數來實現的,這使得它能夠近似所有歷史數據。

8. S4模型的誕生


HiPPO隨后被應用到循環和卷積表示中,以處理遠程依賴關系。這導致了序列的結構化狀態空間 Structured State Space for Sequences(S4)的產生,這是一種能夠有效處理長序列的SSM。

S4由三部分組成:

狀態空間模型SSM
HiPPO用于處理遠程依賴關系
用于創建循環和卷積表示的離散化處理

參考

圖文并茂【Mamba模型】詳解-CSDN博客

A Visual Guide to Mamba and State Space Models - Maarten Grootendorst

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75994.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75994.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75994.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何在 Windows 11 上查找計算機的 IP 地址?

原文:如何在 Windows 11 上查找計算機的 IP 地址? | w3cschool筆記 在開始之前,我們先來了解一下什么是 IP 地址: 假設你住在一棟公寓樓里,快遞員需要把包裹送到你家。為了確保快遞能準確送到,你需要提供…

2.Spring-注解開發定義bean/純注解開發/Spring整合MyBatis(p21-p30)

(一)注解開發定義bean (二)純注解開發 (三)bean的作用范圍 (三)xml配置和注解配置 (四)Spring整合MyBatis 要在pom.xml定義一下坐標。org.spr…

解決:Fontconfig head is null, check your fonts or fonts configurat

文章目錄 問題解決方案安裝字體依賴包強制刷新字體緩存驗證是否生效 個人簡介 問題 在使用 Java 環境部署或運行圖形相關應用時,比如圖片驗證碼,偶爾會遇到如下報錯: Fontconfig head is null, check your fonts or fonts configurat意味當…

『不廢話』之Llama 4實測小報

2025年4月5日Llama 4一開源,隨后OpenRouter等平臺就提供免費調用。對于中文社區來,官方的測評結果其實意義不大(原因先按下不表),就看知乎、微博、B站、twitter上的真實感受,最重要的是自己的真實案例測評。…

【NLP 56、實踐 ? LoRA完成NER任務】

目錄 一、數據文件 二、模型配置文件 config.py 三、數據加載文件 loader.py 1.導入文件和類的定義 2.初始化 3.數據加載方法 代碼運行流程 4.文本編碼 / 解碼方法    ① encode_sentence(): ② decode(): 代碼運行流程 ③ padding(): 代碼…

八大排序——c++版

本次排序都是按照升序排的 冒泡排序 void bubbleSort(vector<int>& nums) {int nnums.size();for(int i0;i<n-1;i){bool swappedfalse;for(int j0;j<n-1-i;j){if(nums[j]>nums[j1]){swap(nums[j],nums[j1]);swappedtrue;}}if(!swapped)break;} } //算法原…

mlir-tblgen 的應用漸進式示例

示例01 -gen-dialect-decls toy_dia.1.toy include "mlir/IR/OpBase.td" //include "mlir/IR/FunctionInterfaces.td" //include "mlir/IR/SymbolInterfaces.td" //include "mlir/Interfaces/SideEffectInterfaces.td"def Toy_Diale…

Go語言從零構建SQL數據庫(5)-Pratt解析算法:SQL表達式解析的核心引擎

Pratt解析算法&#xff1a;SQL表達式解析的核心引擎 1. 算法概述與工作原理 Pratt解析算法&#xff08;自頂向下運算符優先級解析&#xff09;是一種優雅的表達式解析方法&#xff0c;特別適合處理具有不同優先級運算符的復雜表達式。在我們的SQL解析器中&#xff0c;它負責解…

spring-ai-openai調用Xinference1.4.1報錯

1、Xinference 報錯logs 此處是調用 /v1/chat/completions 接口 2025-04-06 15:48:51 xinference | return await dependant.call(**values) 2025-04-06 15:48:51 xinference | File "/usr/local/lib/python3.10/dist-packages/xinference/api/restful_api.py", …

刻意練習:如何從新手到大師

1. 練習方式 練習主要有兩類&#xff1a;天真的練習和刻意練習。 所謂“天真的練習”&#xff0c;基本上只是反復地做某些事情&#xff0c;并指望只靠那種反復&#xff0c;就能提高表現和水平。一旦某個人的表現達到了“可接受”的水平&#xff0c;并且可以做到自動化&#x…

基于Java的人臉識別在線考試系統(jsp+springboot+mysql8.x)

基于Java的人臉識別在線考試系統(jspspringbootmysql8.x) 在線考試系統提供全面的考試管理和用戶管理功能。登錄界面支持管理員、教師和學生三種身份驗證&#xff0c;確保不同用戶訪問相應的功能模塊。系統自動組卷功能允許管理員根據不同科目和題型&#xff0c;如單選題、多選…

預測分析(二):基于機器學習的數值預測

文章目錄 基于機器學習的數值預測機器學習簡介監督學習的任務創建第一個機器學習模型機器學習的目標——泛化過擬合現象評價函數與最優化 建模前的數據處理進一步特征變換 多元線性回歸模型LASSO回歸kNN算法原理算法步驟k值的選擇 基于機器學習的數值預測 機器學習是人工智能的…

批量壓縮 jpg/png 等格式照片|批量調整圖片的寬高尺寸

圖片格式種類非常的多&#xff0c;并且不同的圖片由于像素、尺寸不一樣&#xff0c;可能占用的空間也會不一樣。文件太大會占用較多的磁盤空間&#xff0c;傳輸及上傳系統都非常不方便&#xff0c;可能會收到限制&#xff0c;因此我們經常會碰到需要對圖片進行壓縮的需求。如何…

生鮮果蔬便利店實體零售門店商城小程序

——線上線下融合賦能社區零售新生態 隨著新零售模式的深化和消費者需求的升級&#xff0c;生鮮果蔬便利店亟需通過數字化工具實現經營效率與用戶體驗的雙重提升。結合線下實體門店與線上商城的一體化小程序&#xff0c;成為行業轉型的核心工具。以下從功能模塊、運營策略及行…

如何開通google Free Tier長期免費云服務器(1C/1G)

Google宣布的一項政策&#xff0c;為標準層級的網絡提供每地域200G的免費流量。兩項政策結合&#xff0c;于是便可以得到一臺1核心、1G內存、30G磁盤、200G流量的小云服務器&#xff0c;可玩性大大提高。這篇文章就分享一下如何正確開機&#xff0c;避免產生額外的費用。 免費…

C# 多線程并發編程基礎

1. 線程基礎 1.1 線程簡介 C# 中的線程是操作系統能夠進行運算調度的最小單位&#xff0c;它被包含在進程中&#xff0c;是進程中的實際運作單位。一個進程可以包含多個線程&#xff0c;這些線程可以并發執行不同的任務。 1.2 線程的創建與啟動 在 C# 中&#xff0c;可以使…

【Introduction to Reinforcement Learning】翻譯解讀2

2.2 馬爾可夫決策過程&#xff08;MDPs&#xff09; 馬爾可夫決策過程&#xff08;MDP&#xff09;為順序決策提供了框架&#xff0c;其中動作不僅影響即時獎勵&#xff0c;還會影響未來結果。與多臂老虎機問題不同&#xff0c;MDP中的即時獎勵與延遲獎勵相平衡。在多臂老虎機…

STM32單片機入門學習——第22節: [7-2] AD單通道AD多通道

寫這個文章是用來學習的,記錄一下我的學習過程。希望我能一直堅持下去,我只是一個小白,只是想好好學習,我知道這會很難&#xff0c;但我還是想去做&#xff01; 本文寫于&#xff1a;2025.04.07 STM32開發板學習——第22節: [7-2] AD單通道&AD多通道 前言開發板說明引用解…

Python高階函數-filter

1. 基本概念 filter() 是Python內置的高階函數&#xff0c;用于過濾序列中的元素。它接收一個函數和一個可迭代對象作為參數&#xff0c;返回一個迭代器&#xff0c;包含使函數返回True的所有元素。 filter(function, iterable)2. 工作原理 惰性計算&#xff1a;filter對象是…

密碼學基礎——分組密碼的運行模式

前面的文章中文我們已經知道了分組密碼是一種對稱密鑰密碼體制&#xff0c;其工作原理可以概括為將明文消息分割成固定長度的分組&#xff0c;然后對每個分組分別進行加密處理。 下面介紹分組密碼的運行模式 1.電碼本模式&#xff08;ECB&#xff09; 2.密碼分組鏈接模式&…