文献阅读:Transformers are Multi-State RNNs

2024-02-26 08:12

本文主要是介绍文献阅读:Transformers are Multi-State RNNs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 文献阅读:Transformers are Multi-State RNNs
    • 1. 内容简介
    • 2. 方法介绍
      • 1. 基础回顾
        • 1. RNN
        • 2. Transformer
      • 2. Transformer解构
        • 1. MSRNN
        • 2. Transformer
      • 3. TOVA
        • 1. 现有转换策略
        • 2. TOVA
    • 3. 实验考察 & 结论
      • 1. 实验设计
      • 2. 实验结果
        • 1. LM
        • 2. 长文本理解
        • 3. 文本生成
      • 3. 细节考察
    • 4. 总结 & 思考
  • 文献链接:https://arxiv.org/abs/2401.06104
  • GitHub链接:https://github.com/schwartz-lab-NLP/TOVA

1. 内容简介

这篇文章是今年1月Meta发表的一篇对Transformer的解构工作。

它对Transformer进行了更深入的解析和考察,发现Transformer的self attention机制等价于一个无限状态的MSRNN(multi-state RNN),并在此基础上对MSRNN进行了优化,提出了一个TOVA的MSRNN压缩策略,使之效果超过了其他的MSRNN,并能够与Transformer本身相提并论。而在内存方面,则显著优于经典的Transformer模型。

在这里插入图片描述

下面,我们就来具体看一下文中对于Transformer的具体考察以及文中提出的TOVA方法究竟是怎样的一个设计思路。

2. 方法介绍

1. 基础回顾

在解构Transformer以及引入TOVA之前,文中首先回顾了一下RNN和Transformer本身,这里,为了保持文章在结构上的完整性,我们也简略的回顾一下RNN和Transformer本身。

1. RNN

首先的话,RNN的话是一个迭代的解构,模型本身维护一个隐态 h t h_t ht,然后根据输入 x t x_t xt进行迭代:

x t l + 1 , h t l = f ( x t l , h t − 1 l ) x_t^{l+1}, h_{t}^{l} = f(x_t^l, h_{t-1}^l) xtl+1,htl=f(xtl,ht1l)

2. Transformer

Transformer的话则是self-attention的解构,具体表达式如下:

X l + 1 = F F N ( A t t n ( X l ) ) = F F N ( S o f t m a x ( Q l ⋅ ( K l ) T ) ⋅ V l ) \begin{aligned} X^{l+1} &= \mathop{FFN}(\mathop{Attn}(X^l)) \\ &= \mathop{FFN}(\mathop{Softmax}(Q^l\cdot (K^l)^T) \cdot V^l) \end{aligned} Xl+1=FFN(Attn(Xl))=FFN(Softmax(Ql(Kl)T)Vl)

2. Transformer解构

有了上面的基础,我们来看一下文中是如何说明Transformer的本质就是一个无线state的MSRNN的。

我们将分两部分来说明这个问题:

  1. MSRNN是什么
  2. Transformer怎么对应到一个MSRNN

下面,我们来看一下文中对于这两个问题的回答。

1. MSRNN

首先,我们来看一下MSRNN是什么,本质上来说,MSRNN还是一个RNN,不过RNN当中的隐态是一个向量,而MSRNN则是用一个矩阵来替代向量,直观上理解就是有多个隐态,即multi-state。

用公式表达即为:

x t l + 1 , H t l = f ( x t l , H t − 1 l ) x_t^{l+1}, H_{t}^{l} = f(x_t^l, H_{t-1}^l) xtl+1,Htl=f(xtl,Ht1l)

2. Transformer

然后,我们再来看一下Transformer,如前所述,Transformer的每一个module可以写为:

X l + 1 = F F N ( S o f t m a x ( Q l ⋅ ( K l ) T ) ⋅ V l ) X^{l+1} = \mathop{FFN}(\mathop{Softmax}(Q^l\cdot (K^l)^T) \cdot V^l) Xl+1=FFN(Softmax(Ql(Kl)T)Vl)

我们可以将其重写为:

x t l + 1 = F F N ( S o f t m a x ( q t l ⋅ ( K t l ) T ) ⋅ V t l ) x_{t}^{l+1} = \mathop{FFN}(\mathop{Softmax}(q_t^l\cdot (K_t^l)^T) \cdot V_t^l) xtl+1=FFN(Softmax(qtl(Ktl)T)Vtl)

亦即:

x t l + 1 , ( K t l , V t l ) = f l ( x t l , ( K t l , V t l ) ) x_{t}^{l+1}, (K_t^l, V_t^l) = f^l(x_t^l, (K_t^l, V_t^l)) xtl+1,(Ktl,Vtl)=fl(xtl,(Ktl,Vtl))

因此,从定义式上来看,Transformer确实可以理解为无限维度的MSRNN。

3. TOVA

综上,我们已经可以发现,在形式上而言,Transformer可以视为一个无限state的MSRNN,但是无限state显然在实现层面并不现实,因此,要想要真正将其对应到MSRNN,我们需要一个无限维转换为有限维的转换策略。

文中的话也是首先讨论了一下现有的几个转换的方法,然后在此基础上提出了他们自己的转换方法,即他们所谓的TOVA方法。

下面,我们来具体看一下这两部分的内容。

1. 现有转换策略

首先,我们来看一下当前已有的一些无限维转有限维的策略,文中主要给出了三种方法:

  1. Window
    • 只保留最后k个token
  2. Window + i
    • 保留最后k个token以及头部的i个token
  3. H 2 O H_2O H2O
    • 保留最后k个token,然后动态通过attention score额外多保留i个token
2. TOVA

然后,我们来看一下文中提出的TOVA方法,其全称为Token Omission Via
Attention (TOVA),思路上其实也很直接,就是直接通过attention score选择attention score最高的k个token进行保留,文中给出示意图如下:

在这里插入图片描述

3. 实验考察 & 结论

下面,我们来考察一下文中的实验结果。

我们将分以下几个部分对文中的内容进行一下整理:

  1. 文中的实验设计
  2. 具体的实验结果
  3. TOVA的拆解实验

1. 实验设计

首先,我们来看一下文中的实验设计,主要包括两部分的内容:

  1. 具体采用的实验
  2. 实验中使用的模型

其中,关于文中具体采用的实验的话,主要是长文本上的实验,包括:

  1. LM的ppl考察
  2. 长文本的理解实验
  3. 文本生成任务

而关于文中使用的模型的话,文中主要使用了以下三类模型:

  1. LLama-2-7B
  2. Mistral-7B
  3. Yi-7B

2. 实验结果

下面,我们来看一下文中给出的具体实验结果。

1. LM

首先,关于Language Model的ppl,文中得到结果如下:

在这里插入图片描述

可以看到:

  • 在各类策略下,TOVA能够获得最好的效果表达,且在各个模型下都有一致的结论。
2. 长文本理解

文中关于长文本当中理解任务的实验结果则如下所示:

在这里插入图片描述

可以看到:

  • 无论是在长文本概括任务还是长文本QA任务当中,TOVA的效果都显著优于其他的转换策略。
  • 同样的,在长文本理解任务当中,TOVA同样在不同的模型当中都有一致的有效性表达。
3. 文本生成

最后,文中还在生成任务当中对TOVA的效果进行了一下考察,具体来说的话,就是令TOVA和GPT4分别进行生成,然后交给人来标注对比结果的好坏,得到结果如下:

在这里插入图片描述

可以看到:

  • 随着文本的增长,TOVA的效果逐步追上GPT4,说明TOVA在长文本下确实有效,且效果拔群。

3. 细节考察

然后,除了对于TOVA效果的基础考察,文中还对TOVA进行了细节的拆解,具体来说,主要就是考察了一下几个问题:

  1. TOVA保留的是哪些位置的token
  2. TOVA对于头部的token的留存度
  3. TOVA保留的具体是哪些token

文中得到的具体实验结果如下:

在这里插入图片描述

在这里插入图片描述

可以看到:

  • 在图7当中,每一行代表对应的step当中参与到生成当中的token,可以看到,整体来说,邻近的token会更重要,当这也不是必然的,有时候长程的token也会参与其中,反而是短程的会被过滤掉。
  • 从图8可以看到,前25个token都悲保留了很长的距离,且第一个token尤为关键;
  • 从图9可以看到,一些标点符号类型的token会被更倾向于保留下来。

4. 总结 & 思考

综上,文中对Transformer进行了一下结构上的解构分析,发现其本质上就是一个无限维的MSRNN,且通过一定的压缩策略,可以用一个有限维的MSRNN对其进行逼近。

基于此,文中给出了一个名为TOVA的压缩策略,碾压了当前已有的其他压缩策略,并在长文本当中的效果逼近了GPT4,而在batch size方面可以扩大8倍,即效率上可以比当前的Transformer结构更好。

这个还是非常厉害的,Meta感觉确实还是做了不少基础方面的工作,不过具体TOVA策略下的MSRNN能不能干掉Transformer估计现在也说不好,毕竟文中也没有给什么直接的比较,估计效果上还是有差。

后面再看看吧,看看能不能有什么工作能够最终干掉transformer框架吧。

这篇关于文献阅读:Transformers are Multi-State RNNs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/748200

相关文章

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

2014 Multi-University Training Contest 8小记

1002 计算几何 最大的速度才可能拥有无限的面积。 最大的速度的点 求凸包, 凸包上的点( 注意不是端点 ) 才拥有无限的面积 注意 :  凸包上如果有重点则不满足。 另外最大的速度为0也不行的。 int cmp(double x){if(fabs(x) < 1e-8) return 0 ;if(x > 0) return 1 ;return -1 ;}struct poin

2014 Multi-University Training Contest 7小记

1003   数学 , 先暴力再解方程。 在b进制下是个2 , 3 位数的 大概是10000进制以上 。这部分解方程 2-10000 直接暴力 typedef long long LL ;LL n ;int ok(int b){LL m = n ;int c ;while(m){c = m % b ;if(c == 3 || c == 4 || c == 5 ||

2014 Multi-University Training Contest 6小记

1003  贪心 对于111...10....000 这样的序列,  a 为1的个数,b为0的个数,易得当 x= a / (a + b) 时 f最小。 讲串分成若干段  1..10..0   ,  1..10..0 ,  要满足x非递减 。  对于 xi > xi+1  这样的合并 即可。 const int maxn = 100008 ;struct Node{int

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

状态模式state

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/state 在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 在状态模式中,player.getState()获取的是player的当前状态,通常是一个实现了状态接口的对象。 onPlay()是状态模式中定义的一个方法,不同状态下(例如“正在播放”、“暂停

软件架构模式:5 分钟阅读

原文: https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2 软件架构模式:5 分钟阅读 当有人潜入软件工程世界时,有一天他需要学习软件架构模式的基础知识。当我刚接触编码时,我不知道从哪里获得简要介绍现有架构模式的资源,这样它就不会太详细和混乱,而是非常抽象和易

[论文笔记]LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale

引言 今天带来第一篇量化论文LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale笔记。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 大语言模型已被广泛采用,但推理时需要大量的GPU内存。我们开发了一种Int8矩阵乘法的过程,用于Transformer中的前馈和注意力投影层,这可以将推理所需

【阅读文献】一个使用大语言模型的端到端语音概要

摘要 ssum框架(Speech Summarization)为了 从说话人的语音提出对应的文本二题出。 ssum面临的挑战: 控制长语音的输入捕捉 the intricate cross-mdoel mapping 在长语音输入和短文本之间。 ssum端到端模型框架 使用 Q-Former 作为 语音和文本的中介连接 ,并且使用LLMs去从语音特征正确地产生文本。 采取 multi-st