前言
我们通过Transformer模型的学习可以知道,在最开始处理这个序列数据的时候是通过RNN和CNN来进行处理的,但是RNN由于自己不能够进行并行计算,同时会产生遗忘,所以引入了注意力机制,Transformer的创新就是引入了多头自注意力机制。
而本文所要研究的Mamba模型和Transformer模型一样同样是处理序列数据的。可以利用这个模型处理一串有顺序信息的数据
Mamba基于SSM或S4发展为S6
这些概念不需要知道特别清楚,只需要知道
- SSM 是 State Space Model(状态空间模型)的缩写
- S4 是 SSM 的一种改进版
- Mamba 又是 S4 的升级版,作者把它叫 S6(Selective SSM)
- 它们就像“祖孙三代”:SSM → S4 → S6(Mamba)。
Transformer模型有一个缺点
Transformer模型在处理特别长的文本时,计算量会爆炸。
-
这是因为由于注意力机制,Transformer模型在读取句子中的单词的时候,会把这个单词的前面的词在扫一遍。才能决定下一个字最该说什么。
-
今天天气真好,我们一起去郊游吧。
- 生成“真”时,要回看“今、天、天、气”;
- 生成“好”时,要回看“今、天、天、气、真”;
-
为了得到下一个字的表示,要把当前这个字的 Query,与前面所有字的 Key 做点积,算出“谁重要”,再把对应的 Value 加权求和。
-
用公式写就是Attention(Q, K, V) = softmax(Q·Kᵀ / √d) · V
几种模型的对比
- RNN:像“递纸条”,每一步只把当前字的信息写到隐藏状态里,然后把这个隐藏状态传下一步。计算量只和 L 成正比,但缺点是难以捕捉长距离关系
- Transformer:像“全班开大会”,每一步都要把前面所有同学的发言再听一遍,信息完整但时间、空间都是 L²
- Mamba:像“聪明的秘书”,把前面所有内容压缩成一份“摘要”,再决定哪些信息要留、哪些要丢,既保留长距离记忆,又保持线性复杂度 O(L)
状态空间和SSM
状态向量和状态空间:举个例子来理解
1.想象春游,路线是固定的5个站点,学校门口->公交站->公园门口->湖边->山顶
2.每个站点上都会有一个牌子,包含信息:1. 山顶还有几公里 2. 当前海拔多少米 3. 累不累(体力值 0~100)
3.比如公园的牌子写:离山顶 2 km,海拔 50 m,体力值 70将其写为一排[2, 50, 70],这个就是一个状态向量。
4.当走路的时候这三个变量发生变化,状态向量完成更新
5.如果把 5 个站点 × 各种可能的体力值都列出来,就得到一大堆向量,这一大堆向量就称为状态空间。
将春游换成我们的自然语言处理:
我们处理这句话“I want to order a hamburger.”
读完 “I” → [主语=I, 单复数=单, 时态=现在, …]
读完 “want” → [主语=I, 动词=want, 单复数=单, …]
读完 “order” → [主语=I, 动词=want, 动作=order, …]
向量里的数字在变,每读一个词→ 状态向量更新一次,所有可能出现的向量 → 构成“状态空间,
模型就是根据当前这排数字,猜下一个词该谁上场
那么如何来表示下一步可能去哪里呢,以及哪些变化会将你带到下一个状态呢。
下一步去哪里,并不是由状态向量决定的,而是由当前的状态向量与系统中存好的地图A和B矩阵来决定的。
状态更新方程。hnext=A⋅hnow+B⋅xinputℎ_{next} = A · ℎ_{now} + B · x_{input}hnex

最低0.47元/天 解锁文章
7607

被折叠的 条评论
为什么被折叠?



