改进Transformer,解读Tokenformer论文:基于参数分词化重新思考Transformer的扩展策略

Transformer 训练成本高昂的问题日益凸显,不仅需要耗费巨额的资金与大量的计算资源,还对环境产生了不可忽视的影响,最近由北京大学与谷歌联合发表的一篇论文,为这一棘手难题带来了全新的曙光。论文中提出的创新方案,有望打破 Transformer 训练成本居高不下的困境,

一、研究动机

如今,很难想象人工智能领域如果没有Transformer会怎样。这些模型是大型语言模型的基础架构,为人工智能带来了革命性变化。而且,它们的影响力不仅限于自然语言处理领域。在计算机视觉等其他领域,视觉Transformer(ViT)也发挥着重要作用。随着技术的发展,模型规模不断扩大,从头开始训练模型的成本越来越高,且这种做法难以持续,还引发了环境方面的担忧。

在这里插入图片描述
训练Transformer模型成本高昂

二、引入Tokenformer

我们今天要解读的论文题目是。该论文对Transformer架构提出了一项引人注目的改进,名为Tokenformer。Tokenformer能够在增加模型规模时,避免从头开始重新训练模型,从而大幅降低成本。

在这里插入图片描述

三、Transformer与Tokenformer架构对比

让我们从整体上对比一下传统Transformer架构和Tokenformer,相关对比图来自论文。
在这里插入图片描述

3.1 Transformer整体流程

左边展示的是原始Transformer架构的简化图。底部是输入的词元序列。

  1. 输入首先经过线性投影层,计算注意力模块的输入,即矩阵Q、K和V。这一阶段涉及模型参数和输入词元(token)之间的相互作用,通过线性投影计算得出。
  2. 然后,自注意力组件让输入词元之间相互作用,这一过程通过注意力模块计算。
  3. 最后,前馈神经网络(FFN),为下一层生成输出,这同样体现了词元和参数之间通过线性投影计算的相互作用。

3.2 Tokenformer的核心思路

通常,词元与参数之间的相互作用是通过固定参数大小的线性投影组件计算的。这就导致在增加模型规模时,必须从头开始训练。

Tokenformer的主要思路是构建一个完全基于注意力机制的模型,包括词元与参数之间的相互作用,从而拥有更灵活的架构,支持逐步增加参数数量。

3.3 Tokenformer整体流程

在上面图的右侧,我们可以看到Tokenformer架构的简化图。

  1. 为了计算自注意力模块的输入(Q、K和V矩阵),我们将输入词元输入到一个名为词元 - 参数注意力的新组件中。在这个组件中,除了输入词元,我们还会传入参数。输入词元代表词元 - 参数注意力模块中的查询部分,参数则代表键和值部分。
  2. 接着,我们使用与之前相同的自注意力组件。
  3. 为了为下一层准备输出,我们用另一个词元 - 参数注意力模块取代前馈神经网络。在这个模块中,我们将自注意力模块的输出作为查询,同时为键矩阵和值矩阵使用不同的参数。

3.4 Tokenformer架构详解

在这里插入图片描述

  1. 计算自注意力模块的输入:深入研究Tokenformer架构,输入词元在经过归一化处理后,会被送入三个Pattention模块(Pattention即词元 - 参数注意力模块的名称)。三个Pattention模块各自拥有权重,分别负责为自注意力模块创建输入,即每个Pattention模块生成一个Q、K或V矩阵。

  2. Pattention与注意力模块的区别

    • 原始注意力模块计算公式为:(此处原文未给出原始注意力公式)。 在这里插入图片描述

    • Pattention模块计算公式为:
      P a t t e n t i o n ( X , K p , V p ) = Θ ( X ⋅ K p T ) ⋅ V p Pattention(X, K_p, V_p)=\Theta(X ⋅ K_p^T ) ⋅ V_p Pattention(X,Kp,Vp)=Θ(XKpT)Vp

    • 输入词元作为查询,键矩阵和值矩阵由Pattention模块的参数给出。与注意力模块相比,Pattention模块使用了带有不同缩放机制的改进softmax函数(即 Θ \Theta Θ函数),以提高优化的稳定性。

    • X X X K K K相乘后的改进softmax函数将输入词元与键参数进行匹配,得到注意力分数。然后,利用V参数矩阵对注意力分数进行加权,生成该模块的最终输出。

  3. 用Pattention取代FFN:在标准自注意力模块处理完三个Pattention模块的输出后,我们不再使用前馈神经网络,而是使用两个连续的Pattention模块。从上图左下角可以看到,在这两个模块之间,我们通过残差连接将其与输入词元合并。

  4. 模型的增量式扩展:在架构图的右下角,展示了通过添加新参数来逐步增加模型规模的示意图。我们在每个Pattention模块的键矩阵和值矩阵中追加更多的参数词元行。已训练的参数词元会被保留,无需从头开始训练。然后,我们训练规模更大的模型,并在这个过程中更新所有词元。从下面的结果可以看出,与从头开始训练相比,增量式训练的模型训练速度要快得多。

四、实验结果

在这里插入图片描述

上图展示了Tokenformer相对于从头开始训练的Transformer在性能和训练成本方面的对比。

蓝色线代表使用3000亿词元从头开始训练的Transformer模型。不同大小的圆圈代表不同的模型规模,中间灰色圆圈列出了具体规模。其他线条代表Tokenformer模型,每种颜色代表训练增量版本时使用的不同词元数量。例如,红线代表模型从1.24亿参数扩展到14亿参数,在用于从头训练的3000亿词元中,仅使用了300亿词元进行训练。最终版本在性能上与相同规模的Transformer相当,但训练成本却大幅降低!黄线表明,使用600亿词元训练增量版本的模型,性能优于Transformer,且训练成本更低。

五、参考文献与链接

  • 论文页面
  • 代码
  • AI Papers Academy解析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/68022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【STM32】HAL库USB虚拟U盘MSC配置及采用自带的Flash作为文件系统

【STM32】HAL库USB虚拟U盘MSC实现配置及采用自带的Flash作为文件系统 本文将自带的Flash作为文件系统 通过配置USB的MSC功能实现虚拟U盘 没有单独建立FATFS文件系统 仅仅是配置USB和Flash读写而已 当然 这里也可以用外部Flash等等 也可以配置文件系统来进行套壳 但总体而言不如…

Noise Conditional Score Network

NCSN p σ ( x ~ ∣ x ) : N ( x ~ ; x , σ 2 I ) p_\sigma(\tilde{\mathrm{x}}|\mathrm{x}) : \mathcal{N}(\tilde{\mathrm{x}}; \mathrm{x}, \sigma^2\mathbf{I}) pσ​(x~∣x):N(x~;x,σ2I) p σ ( x ~ ) : ∫ p d a t a ( x ) p σ ( x ~ ∣ x ) d x p_\sigma(\mathrm…

jdk8 G1收集器怎么手动调优

在 JDK 8 中,手动调优 G1 垃圾收集器可以通过以下步骤和参数进行: 1. 启用 G1 垃圾收集器 要启用 G1 垃圾收集器,需要在 JVM 启动参数中添加以下选项: -XX:UseG1GC 这个参数告诉 JVM 使用 G1 作为垃圾收集器。 2. 设置堆内存…

Nginx通过设置自定义标记识别代理调用

Nginx通过设置自定义标记识别代理调用 业务场景 最近遇到一个业务场景,部署在云端服务器的一个平台,接口提供给多个现场调用,其中一个现场是通过nginx代理服务器代理转发到云服务器,另外一个现场则是直接通过云服务器接口进行调…

前端知识速记:POST和GET

前端知识速记:POST和GET请求的区别 一、GET请求概述 GET请求是一种用于获取服务器资源的请求方式。**使用GET请求时,数据通过URL传递,适合用于获取数据而不修改资源。**以下是GET请求的一些基本特征: 数据附在URL后面&#xff…

axios如何利用promise无痛刷新token

目录 需求 需求解析 实现思路 方法一: 方法二: 两种方法对比 实现 封装axios基本骨架 instance.interceptors.response.use拦截实现 问题和优化 如何防止多次刷新token 同时发起两个或以上的请求时,其他接口如何重试 最后完整代…

【DeepSeek系列】01 DeepSeek-V1 快速入门

1、DeepSeek简介 2024年底,DeepSeek 相继推出了其第一代推理大模型:DeepSeek-R1-Zero 和 DeepSeek-R1。 DeepSeek-R1-Zero 是一个通过大规模强化学习(RL)训练的模型,训练过程中没有使用监督微调(SFT&…

基于LabVIEW的Modbus-RTU设备通信失败问题分析与解决

在使用 LabVIEW 通过 Modbus-RTU 协议与工业设备进行通信时,可能遇到无法正常发送或接收指令的问题。常见原因包括协议参数配置错误、硬件连接问题、数据帧格式不正确等。本文以某 RGBW 控制器调光失败为例,提出了一种通用的排查思路,帮助开发…

【初/高中生讲机器学习】0. 本专栏 “食用” 指南——写在一周年之际⭐

创建时间:2025-01-27 首发时间:2025-01-29 最后编辑时间:2025-01-29 作者:Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏,很高兴遇见你~ 我是 Geeker_LStar,一名高一学生,热爱计…

密云生活的初体验

【】在《岁末随笔之碎碎念》里,我通告了自己搬新家的事情。乙巳年开始,我慢慢与大家分享自己买房装修以及在新家的居住体验等情况。 跳过买房装修的内容,今天先说说这三个月的生活体验。 【白河】 潮白河是海河水系五大河之一,贯穿…

系统通解:超多视角理解

在科学研究和工程应用中,我们常常面临各种复杂系统,需要精确描述其行为和变化规律。从物理世界的运动现象,到化学反应的进程,再到材料在受力时的响应,这些系统的行为往往由一系列数学方程来刻画。通解,正是…

Python爬虫:1药城店铺爬虫(完整代码)

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

openwebui入门

1 简介 ‌Open WebUI‌(网址是openwebui.com)是一个高度可扩展、功能强大且用户友好的自托管Web用户界面,专为完全离线操作设计,编程语言是python。它支持对接Ollama和OpenAI兼容的API的大模型。‌ Open WebUI‌在架构上是一种中…

Day36-【13003】短文,数组的行主序方式,矩阵的压缩存储,对称、三角、稀疏矩阵和三元组线性表,广义表求长度、深度、表头、表尾等

文章目录 本次课程内容第四章 数组、广义表和串第一节 数组及广义表数组的基本操作数组的顺序存储方式-借用矩阵行列式概念二维数组C语言对应的函数-通常行主序方式 矩阵的压缩存储对称矩阵和三角矩阵压缩存储后,采用不同的映射函数稀疏矩阵-可以构成三元组线性表三…

Android原生开发入门

1. 资源地址 Android官方教程Android参考手册 2. 必看基础模块 应用基础知识View 绑定 :绑定相当于Qt中的ui文件生成界面代码的机制,Qt中的ucc会自动将ui文件编译成ui_xxxx.h文件,Android开发中也一样。 Android中自动生成的代码在&#x…

3-Not_only_base/2018网鼎杯

3-Not_only_base 打开code MCJIJSGKPZZYXZXRMUW3YZG3ZZG3HQHCUS 分析: 首先看题知道解密过程中肯定有base解密。 知识点1: Base64字符集: 包含大小写字母(A-Z、a-z)、数字(0-9)以及两个特殊字…

deepseek、qwen等多种模型本地化部署

想要在本地部署deepseek、qwen等模型其实很简单,快跟着小编一起部署吧 1 环境搭建 1.1下载安装环境 首先我们需要搭建一个环境ollama,下载地址如下 :Ollama 点击Download 根据自己电脑的系统选择对应版本下载即可 1.2 安装环境(window为例) 可以直接点击安装包进行安…

02/06 软件设计模式

目录 一.创建型模式 抽象工厂 Abstract Factory 构建器 Builder 工厂方法 Factory Method 原型 Prototype 单例模式 Singleton 二.结构型模式 适配器模式 Adapter 桥接模式 Bridge 组合模式 Composite 装饰者模式 Decorator 外观模式 Facade 享元模式 Flyw…

Idea ⽆ Maven 选项

Idea ⽆ Maven 选项 1. 在 Idea 项⽬上右键2. 选中 Maven 选项 如果在创建 Spring/Spring Boot 项⽬时,Idea 右侧没有 Maven 选项,如下图所示: 此时可以使⽤以下⽅式解决。 1. 在 Idea 项⽬上右键 2. 选中 Maven 选项 选中 Maven 之后&#…

企业百科和品牌百科创建技巧

很多人比较困惑,创建百科词条需要注意哪些事情?为什么参考提交了权威新闻参考资料还是没有通过,下面小马识途营销顾问就为大家解答疑惑: 1、品牌词以及企业词提交 1)如果没有词条,我们可以通过平台提供的急…