谷歌Titans模型论文解析,Transformer迎来变革拐点——DeepSeek能否“接招”?

一、引入 Titans 模型

我们将深入探讨谷歌研究院的一篇新论文《Titans: Learning to Memorize at Test Time》,该论文介绍了一种名为 Titans 的新模型架构。
在这里插入图片描述

Titans 在缓解 Transformer 二次方成本问题的同时,展现出了令人期待的成果。Titans 模型的设计灵感来源于人类大脑的记忆运作方式。论文中有一句有趣的话提到,记忆是一种基本的心理过程,是人类学习不可或缺的组成部分。如果没有正常运作的记忆系统,人类和动物将局限于基本的反射和刻板行为

在这里插入图片描述

二、深度神经长期记忆模块

Titans 论文的一个关键贡献是深度神经长期记忆模块(deep neural long-term memory module)。我们先来了解一下它是什么,然后再探讨它是如何融入 Titans 模型的。

与循环神经网络中将记忆编码为固定向量不同,神经长期记忆模块本身就是一个模型,是一个多层神经网络,它将过去的历史抽象编码到自身的参数中。要训练这样一个模型,一种思路是训练它记忆训练数据。然而,众所周知,记忆会限制模型的泛化能力,可能导致性能不佳。

三、避免过拟合的记忆机制

研究人员设计了一种巧妙的方法,来创建一个能够记忆,但又不会在训练数据上过拟合的模型。这种方法的灵感来自人类记忆的一个类比。当我们遇到令人惊讶的事件时,我们更有可能记住它。神经长期记忆模块的学习过程正是基于这一理念设计的。

3.1 对 “惊讶” 进行建模

在这里插入图片描述
Updating the neural memory using a surprise element

通过论文中的上述定义,我们可以了解研究人员是如何对 “惊讶” 进行建模的。 Mt代表时刻t的神经长期记忆模块。它通过上一时刻的参数以及一个被建模为梯度的 “惊讶” 元素进行更新。如果梯度较大,说明模型对输入更 “惊讶”,这会导致模型权重得到更显著的更新。

然而,这个定义仍不理想,因为模型可能会错过 “惊讶” 时刻之后紧接着发生的重要信息。

3.2 对 “过去的惊讶” 进行建模

从人类的角度来看,一个令人惊讶的事件不会在很长一段时间内持续让我们感到惊讶,尽管它仍然令人难忘。我们通常会适应这个令人惊讶的事件。不过,该事件可能足够令人惊讶,从而在很长一段时间内吸引我们的注意力,使我们记住整个时间段。

在这里插入图片描述
Updating the neural memory using both past and momentary surprise

通过论文中的上述定义,我们可以了解到改进后的建模方式,其中包括对 “过去的惊讶” 的建模。现在,我们使用上一时刻的权重状态以及一个 “惊讶” 分量St来更新神经长期记忆的权重。“惊讶” 分量现在是随时间测量的,它由带有衰减因子的上一时刻 “惊讶” 和我们在上一节讨论过的当下 “惊讶” 组成。

还有一个尚未建模的因素是遗忘。

3.3 对遗忘进行建模

在这里插入图片描述
Allowing the model to forget past information

在处理非常长的序列(例如数百万个标记 tokens)时,管理哪些过去的信息应该被遗忘至关重要。通过论文中的上述定义,我们可以看到最终的建模方式。这些定义与上一节的定义相同,只是我们添加了一个自适应遗忘机制,用 alpha 表示,也称为门控机制(gating mechanism)。这使得记忆能够遗忘不再需要的信息。

3.4 损失函数

在这里插入图片描述
Neural memory loss function

损失函数由上述公式定义。该损失旨在通过将过去的数据存储为键值对来模拟联想记忆,并训练模型在键和值之间进行映射。与 Transformer 类似,线性层将输入投影为键和值。然后,损失值loss衡量记忆模块学习键值对之间关联的程度。

需要说明的是,模型不是一次性处理整个序列,而是逐步处理,在其权重中积累记忆信息。

四、Titans 架构

4.1 Titans 架构 1—— 记忆作为上下文(MAC)

论文提出了几种不同的架构。第一种称为记忆作为上下文(MAC)。我们可以通过论文中的下图来了解它。

在这里插入图片描述
Titans Memory as a Context Architecture

该模型由 3 个组件组成:持久记忆、核心和上下文记忆。给定一个长输入序列,我们将其划分为较小的序列。核心组件中显示的序列实际上是一个分块后的序列。

持久记忆

我们首先引入持久记忆,在序列开头添加与数据无关的可学习权重。实际上,这些是可学习的标记,用于存储不受输入影响的全局信息。序列还会经过一个注意力块,在序列开头添加可学习标记有助于避免注意力分散,因为由于偏差,注意力权重往往会过度关注初始标记。英伟达的 Hymba 模型添加可学习元标记的做法也取得了成功,我后续会介绍。

上下文记忆

上下文记忆(Contextual memory)由深度神经长期记忆模块构成,因为它依赖于上下文。我们使用神经长期记忆模块的前向传递,以分块后的输入序列作为输入,从长期记忆中检索记忆标记(memory tokens)。由于即使在测试阶段神经记忆也在不断更新,当我们处理长序列的一个分块时,神经记忆已经更新了同一序列先前分块的信息。检索到的记忆标记会在持久记忆标记之后添加到输入序列中。

核心组件

核心组件将所有信息整合在一起,使用一个注意力块,该注意力块的输入是扩展后的序列,其中包含来自持久记忆、上下文记忆和输入本身的信息。通过这种方式,模型可以利用多种类型的记忆。注意力块的输出用于更新神经记忆。注意力机制有助于根据给定的输入确定是否使用长期记忆。此外,注意力机制有助于长期记忆仅存储当前上下文中有用的信息。最终输出基于注意力块的输出和神经记忆的输出确定。

4.2 Titans 架构 2—— 记忆作为门控(MAG)

Titans 的下一个架构版本称为记忆作为门控(MAG: Memory as a Gate),我们可以通过论文中的下图来了解它。

在这里插入图片描述
Titans Memory as a Gate Architecture

在这个版本中,我们同样有代表持久记忆、核心和上下文记忆的 3 个分支。与前一个版本不同的是,这里的序列没有分块,输入序列是完整的输入序列。这是通过在注意力块中使用滑动窗口注意力实现的。持久记忆的可学习权重同样添加到序列开头。但与之前不同的是,神经记忆不会为注意力块的上下文提供数据。相反,神经记忆根据输入序列进行更新,其输出通过门控机制与核心分支相结合。

4.3 Titans 架构 3—— 记忆作为层(MAL)

Titans 架构的第三个变体称为记忆作为层(MAL)。我们可以通过论文中的下图来了解它。

在这里插入图片描述
Titans Memory as a Layer Architecture

与前一个版本类似,这里的序列也没有分块,并且我们使用滑动窗口注意力。

在这个版本中,我们将神经记忆用作模型的一层,输入序列与可学习权重首先经过神经记忆,然后再经过注意力块。这种设计允许堆叠多个神经记忆模块和注意力块,就像通常堆叠 Transformer 层一样。然而,这种顺序设计使得模型的能力受到每一层能力的限制。这与 Hymba 论文中的观察结果类似,出于同样的原因,Hymba 论文中的不同组件采用并行而非顺序放置。

4.4 Titans 架构 4——LMM

Titans 的最后一个变体称为 LMM,它与前一个版本相同,但没有注意力块,仅依赖于记忆模块。

在这里插入图片描述
Comparison of Titans with baselines on language tasks

在上表中,我们可以看到 Titans 模型与基线模型在语言建模和常识推理任务上的对比。混合模型(同时利用循环和注意力机制)的最佳结果标为蓝色,非混合模型的最佳结果标为黄色。

与其他非混合模型相比,Titan LMM 取得了最佳结果,展示了神经长期记忆模块的强大能力。在混合模型中,MAC Titan 总体表现最佳,MAG Titan 的表现略逊于它。

五、大海捞针任务

在这里插入图片描述
Needle in a Haystack Comparison

另一个有趣的对比是 “大海捞针” 任务。我们可以从论文的上表中看到结果。在这个任务中,模型需要从非常长的文本中检索一条信息,从而衡量模型实际有效的上下文长度。

标题中的数字表示评估序列的长度。在所有三个基准测试中,随着序列长度的增加,Titans 明显优于基线模型。

六、BABILong 基准测试

在这里插入图片描述
Comparison on the BABILong benchmark of Titans MAC with top models

在上面的图中可以看到另一个有趣的结果,该图展示了 Titans 与顶尖模型在 BABILong 基准测试上的对比。这是一个针对长序列的更具挑战性的基准测试,在这个测试中,模型需要对分布在极长文档中的事实进行推理。

在 x 轴上,我们看到的是序列长度,y 轴衡量的是每个模型的准确率。MAC Titan 的结果用红线表示,在处理极长序列时,它的表现明显优于其他模型!

参考

  1. [1706.03762] Attention Is All You Need
  2. [2501.00663] Titans: Learning to Memorize at Test Time
  3. [2411.13676] Hymba: A Hybrid-head Architecture for Small Language Models
  4. AI Papers Academy: Titans by Google: The Era of AI After Transformers?

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

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

相关文章

新春贺岁,共赴AGI之旅

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 往期精彩文章推荐 季姮教授独家文字版干货 | 面向知识渊博的大语言模型 关于AI TIME AI TIME源起于2019年,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法和场景应用的本质问题…

Baklib推动数字化内容管理解决方案助力企业数字化转型

内容概要 在当今信息爆炸的时代,数字化内容管理成为企业提升效率和竞争力的关键。企业在面对大量数据时,如何高效地存储、分类与检索信息,直接关系到其经营的成败。数字化内容管理不仅限于简单的文档存储,更是整合了文档、图像、…

【memgpt】letta 课程4:基于latta框架构建MemGpt代理并与之交互

Lab 3: Building Agents with memory 基于latta框架构建MemGpt代理并与之交互理解代理状态,例如作为系统提示符、工具和agent的内存查看和编辑代理存档内存MemGPT 代理是有状态的 agents的设计思路 每个步骤都要定义代理行为 Letta agents persist information over time and…

测试方案和测试计划相同点和不同点

在软件测试领域,测试方案与测试计划皆为举足轻重的关键文档,尽管它们有着紧密的关联,但在目的与内容层面存在着显著的差异。相同点: 1.共同目标:测试方案和测试计划的核心目标高度一致,均致力于保障软件的…

详细介绍:网站背景更换功能

目录 1. HTML 部分 2. JavaScript 部分 3. 完整流程 4. 总结 5. 适用场景 本文将介绍如何通过文件上传实现网站背景图片的更换。通过使用 JavaScript 和 Axios,我们可以允许用户上传图片文件并将其作为网站的背景图片。上传的图片 URL 会保存在浏览器的 localSt…

嵌入原则:数据特征如何 融入 模型的 损失地形

嵌入原则:数据特征如何 融入 模型的 损失地形 第一节:嵌入原则的基本概念与公式解释 机器学习中的嵌入原则,就像 “雕刻师” 将 “石块的纹理” 逐渐融入到 “雕塑的造型” 中。数据特征不再是独立的输入,而是被模型 “吸收” 和…

FPGA|例化生成的PLL功能IP核

1、例化上一篇文章中调用的IP核,新建文件PLL_test.v 2、代码如图 timescale 1ns / 1ps module PLL_test(input clk,input rst_n,output clkout0,output clkout1,output clkout2,output clkout3,output clkout4);wire locked;PLL pll_inst(.inclk0(clk),.c0(clkout0)…

【C++】P5734 【深基6.例6】文字处理软件

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述💯题目描述输入格式输出格式示例输入与输出输入:输出: 💯我的做法操作1:在文档末尾插入字符串操作2&…

后盾人JS -- 原型

没有原型的对象 也有没有原型的对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

洛谷 P1130 红牌 C语言

题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌。获得红牌的过程是相当复杂&#xff0c;一共包括 N 个步骤。每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件。为了加快进程&#xff0c;每一步政府都派了 M 个工作人员来检查材料。不幸的是&…

【线程】基于环形队列的生产者消费者模型

1 环形队列 环形队列采用数组来模拟&#xff0c;用取模运算来模拟环状特性。 1.如何判断环形队列为空或者为满? 当环形队列为空时&#xff0c;头和尾都指向同一个位置。当环形队列为满时&#xff0c;头和尾也都指向同一个位置。 因此&#xff0c; 可以通过加计数器或者标记…

二分/双指针/单调栈队列专题

1.4924. 矩阵 - AcWing题库 一开始打表找规律以为是右上角向左下角递增,但当n很大的时候就不对了,因此我们得去观察 i * i 100000 * (i - j) j * j i * j 这个式子,我们关心的是这个式子的单调性因此我们可以分别将i和j看作常数来对式子进行求导,可以得到 f(i) 2 * i 10…

Shell $0

个人博客地址&#xff1a;Shell $0 | 一张假钞的真实世界 我们已经知道在Shell中$0表示Shell脚本的文件名&#xff0c;但在有脚本调用的情形中&#xff0c;子脚本中的$0会是什么值呢&#xff1f;我们通过下面的实例来看。 已测试系统列表&#xff1a; Mac OS X EI Capitan 1…

商品列表及商品详情展示

前言 本文将展示一段结合 HTML、CSS 和 JavaScript 的代码&#xff0c;实现了一个简单的商品展示页面及商品详情&#xff0c;涵盖数据获取、渲染、搜索及排序等功能。 效果展示 点击不同的商品会展示对应的商品详情。 代码部分 代码总体实现 <!DOCTYPE html> <htm…

[ VS Code 插件开发 ] 使用 Task ( 任务 ) 代替 createTerminal (终端) 来执行命令

VSCode 官方自己的插件就是这样执行命令的. 使用体验 比 默认的终端 好太多了. 重用终端, Shell 集成 , 按任意键关闭, 任务是否成功, 左侧命令操作 (菜单中功能很多) 等 import * as vscode from vscode; // 执行的命令 let command_str "npm run dev" // 工作目…

大模型综述一镜到底(全文八万字) ——《Large Language Models: A Survey》

论文链接&#xff1a;https://arxiv.org/abs/2402.06196 摘要&#xff1a;自2022年11月ChatGPT发布以来&#xff0c;大语言模型&#xff08;LLMs&#xff09;因其在广泛的自然语言任务上的强大性能而备受关注。正如缩放定律所预测的那样&#xff0c;大语言模型通过在大量文本数…

Python处理数据库:MySQL与SQLite详解

Python处理数据库&#xff1a;MySQL与SQLite详解 在数据处理和存储方面&#xff0c;数据库扮演着至关重要的角色。Python提供了多种与数据库交互的方式&#xff0c;其中pymysql库用于连接和操作MySQL数据库&#xff0c;而SQLite则是一种轻量级的嵌入式数据库&#xff0c;Pytho…

【C++】B2124 判断字符串是否为回文

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述输入格式&#xff1a;输出格式&#xff1a;样例&#xff1a; &#x1f4af;方法一&#xff1a;我的第一种做法思路代码实现解析 &#x1f4af;方法二&#xff1a;我…

ubuntuCUDA安装

系列文章目录 移动硬盘制作Ubuntu系统盘 前言 根据前篇“移动硬盘制作Ubuntu系统盘”安装系统后&#xff0c;还不能够使用显卡。 如果需要使用显卡&#xff0c;还需要进行相关驱动的安装&#xff08;如使用的为Nvidia显卡&#xff0c;就需要安装相关的Nvidia显卡驱动&#xff…

Selenium 使用指南:从入门到精通

Selenium 使用指南&#xff1a;从入门到精通 Selenium 是一个用于自动化 Web 浏览器操作的强大工具&#xff0c;广泛应用于自动化测试和 Web 数据爬取中。本文将带你从入门到精通地掌握 Selenium&#xff0c;涵盖其基本操作、常用用法以及一个完整的图片爬取示例。 1. 环境配…