Author: C3P00

  • 向量数据库:为 AI 插上知识的翅膀

    近年来,AI 应用如雨后春笋般涌现,推动着相关技术的蓬勃发展,其中向量数据库尤为引人注目。作为 AI 应用技术栈中的关键一环,向量数据库为 AI 应用,特别是大型语言模型 (LLM) 应用,提供了强大的知识存储和检索能力。本文将深入浅出地探讨向量数据库的原理和实现,涵盖其基本概念、相似性搜索算法、相似性测量算法、过滤算法以及选型等方面,并结合实际应用案例,展现向量数据库如何为 AI 插上知识的翅膀。

    GPT 的瓶颈:有限的上下文窗口

    GPT-3.5/4 的问世,无疑是 AI 发展史上的里程碑事件,其强大的文本生成能力令人惊叹。然而,GPT 模型并非完美无缺,其有限的上下文窗口大小成为制约其性能的一大瓶颈。以 GPT-3.5-turbo 为例,其最大上下文窗口大小仅为 4K tokens(约 3000 字),这意味着模型最多只能处理 3000 字以内的文本信息。

    虽然 ChatGPT 等应用提供了对话记忆功能,但这并非 GPT 模型本身具备记忆能力,而是开发者通过外部存储机制实现的。当用户输入超过上下文窗口限制的内容时,GPT 模型将无法记住之前的对话内容,从而影响其对后续问题的理解和回答。

    尽管 GPT-4 将上下文窗口大小提升至 32K tokens,Claude 模型更是高达 100K tokens,但处理如此庞大的文本信息需要消耗大量的计算资源和时间,成本也随之水涨船高。

    向量数据库:突破 GPT 上下文限制的利器

    面对 GPT 模型的上下文窗口限制,开发者们积极探索解决方案,而向量数据库应运而生。其核心思想是将文本信息转化为向量,并存储在数据库中,当用户输入问题时,系统将问题转化为向量,并在数据库中搜索最相似的向量及其对应的文本信息,最终将相关内容返回给用户。

    以客服培训资料为例,我们可以将其转化为向量并存储在向量数据库中。当用户提出相关问题时,系统将问题转化为向量,并在数据库中快速检索最相似的向量及其对应的文本片段,最终将这些片段返回给 GPT 模型进行处理,从而绕过 GPT 模型的上下文窗口限制,提高响应速度并降低成本。

    从特征到向量:理解相似性搜索的基石

    在现实生活中,我们通过识别不同事物之间的特征来区分它们。例如,我们可以根据体型大小、毛发长度、鼻子长短等特征来区分不同品种的狗。如果将这些特征量化,并映射到多维坐标系中,每个事物都可以用一个多维坐标点来表示。

    向量是具有大小和方向的数学结构,可以用来表示事物的多维特征。通过计算向量之间的距离,可以判断它们在特征空间中的相似程度,这就是相似性搜索的基本原理。

    高效的相似性搜索算法:兼顾速度与质量

    在海量数据中进行相似性搜索,如果采用暴力搜索的方式,计算量巨大,效率低下。为此,向量数据库采用了一系列高效的相似性搜索算法,其主要思想是通过降维、聚类、构建树或图等方式,减少向量大小或缩小搜索范围,从而提高搜索效率。

    1. 聚类搜索:K-Means 与 Faiss

    聚类算法将数据点分组到不同的簇中,使同一簇内的点彼此相似,不同簇之间的点彼此不同。K-Means 算法是一种常用的聚类算法,它将数据分成 k 个类别,其中 k 是预先指定的。

    Faiss 算法是 Facebook AI Research 推出的一种高效的相似性搜索库,它采用了一种基于 Voronoi 图的聚类方法,将向量空间划分为多个单元格,每个单元格由一个质心代表。在搜索时,首先找到查询向量所属的单元格,然后只在该单元格内进行搜索,从而大大缩小了搜索范围。

    2. 量化压缩:Product Quantization (PQ)

    为了降低内存占用,向量数据库通常采用量化压缩技术。Product Quantization (PQ) 是一种常用的向量量化方法,它将高维向量分解成多个低维子向量,并对每个子向量独立进行量化。

    3. 图搜索:Hierarchical Navigable Small Worlds (HNSW)

    HNSW 算法是一种基于图的相似性搜索算法,它将向量空间表示为一个多层图,每层都是一个小世界,图中的节点表示向量,边表示向量之间的相似性。

    4. 局部敏感哈希:Locality Sensitive Hashing (LSH)

    LSH 算法将相似的向量映射到相同的哈希桶中,从而在搜索时只需比较同一哈希桶内的向量,提高了搜索效率。

    相似性测量:欧几里德距离、余弦相似度与点积相似度

    在相似性搜索中,需要计算向量之间的距离来衡量它们的相似度。常用的向量相似度算法包括:

    • 欧几里德距离:计算两个向量在空间中的直线距离。
    • 余弦相似度:计算两个向量夹角的余弦值,值越大表示越相似。
    • 点积相似度:计算两个向量的点积,值越大表示越相似。

    过滤:缩小搜索范围,提高查询效率

    在实际应用中,我们通常需要根据业务需求对搜索结果进行过滤。例如,在电商搜索中,用户可能希望根据价格、品牌等条件筛选商品。

    向量数据库通常支持元数据过滤功能,用户可以根据预定义的元数据字段对搜索结果进行筛选,从而缩小搜索范围,提高查询效率。

    向量数据库选型:综合考虑性能、功能、成本等因素

    在选择向量数据库时,需要综合考虑以下因素:

    • 性能: 查询速度、吞吐量、内存占用、存储容量等。
    • 功能: 相似性搜索算法、相似性测量算法、过滤功能、分布式部署、高可用性、容错性、访问控制、数据备份等。
    • 易用性: API & SDK 设计、文档、社区活跃度等。
    • 成本: 部署成本、维护成本、使用成本等。

    目前,市面上比较流行的向量数据库包括:

    • Chroma
    • Milvus
    • Pinecone
    • Qdrant
    • Typesense
    • Weaviate

    此外,一些传统的数据库也提供了向量搜索扩展功能,例如:

    • Redis: RediSearch 模块
    • PostgreSQL: pgvector 扩展

    总结:向量数据库,释放 AI 知识的力量

    向量数据库作为 AI 应用技术栈中的关键一环,为 AI 应用,特别是大型语言模型 (LLM) 应用,提供了强大的知识存储和检索能力。其高效的相似性搜索算法、灵活的相似性测量算法、强大的过滤功能以及不断完善的生态系统,使其成为构建知识型 AI 应用的理想选择。

    随着 AI 技术的不断发展,向量数据库将在更多领域发挥重要作用,为 AI 应用插上知识的翅膀,释放 AI 知识的力量。

    参考文献:

    [1] 向量数据库: https://zhuanlan.zhihu.com/p/628859137

    [2] Claude 模型: https://www.anthropic.com/index/100k-context-windows

    [3] LangChainJs: https://js.langchain.com/docs/modules/indexes/vector_stores/integrations/qdrant

    [4] VectorHub: https://github.com/vectorhub-io/vectorhub

    [5] ChatFiles: https://github.com/mckaywrigley/chatbot-ui

    [6] 视频: https://www.youtube.com/watch?v=PqbB07PgZ0Y

    [7] Faiss 算法: https://faiss.ai/

    [8] 视频: https://www.youtube.com/watch?v=7zN8jI6YTEY

    [9] 博客: https://towardsdatascience.com/understanding-locality-sensitive-hashing-497c1f9701c9

    [10] 博客: https://www.pinecone.io/learn/locality-sensitive-hashing/

    [11] RediSearch: https://redis.io/modules/redisearch/

    [12] pgvector: https://github.com/pgvector/pgvector

  • AI 产品的交互,非对话不可吗?

    最近 ChatGPT 火爆出圈,引发了人们对 AI 产品交互方式的热烈讨论。不少人认为,对话和聊天是 AI 产品交互的必然趋势。然而,作为一名资深科技专栏作家,我对此持保留意见。我认为,Chatbot 并非 AI 交互的终极形态,甚至可以说,它是一个糟糕的开端。

    对话没有预设用途,用户无从下手

    好的工具应该“自带说明书”。就像一双手套,它以手的形式展现出来,所以我们会把它戴在手上。材料的特点也会告诉我们更多信息,金属网格的手套会保护我们防止物理伤害,橡胶手套是防止化学伤害,皮革手套很适合骑摩托的时候戴。

    然而,面对 ChatGPT 这样的聊天界面,我们得到的唯一提示就是在一个文本框中输入字符。它没有清晰地告诉我们它能做什么,我们该如何提问,更没有告诉我们不应该如何使用它。用户只能像摸象的盲人一样,通过一次次试探来了解它。

    提示工程门槛高,将用户拒之门外

    诚然,用户可以通过学习和练习来掌握 Prompt 的技巧,但了解哪些 Prompt 有效的代价,仍然由每个用户承担。而这些内容原本可以直接融入界面中,降低使用门槛。

    以 AI 写作助手为例,为了更好地定制个性化回复,我们可以为用户添加一些控件,让他们指定使用情境:需要的写作类型?目标读者是谁?整体风格应该是什么感觉?……将这些信息嵌入到界面中,而不是让用户绞尽脑汁地将其破解到他们提问的每个问题中。

    信息展示方式单一,阅读体验不佳

    自然语言对于概括的方向很好用,比如“把我送到正确的街区”这种。但一旦 ChatGPT 做出了回应,我该如何让它把我带到正确的房子前面去?

    目前的 Chatbot 界面只能以聊天的形式线性展示信息,用户被迫在回复之间来回滚动,逐行阅读,难以进行有效的对比和分析。

    创作过程缺乏连贯性,打断用户思路

    画家在创作时,会有两个动作:近距离在画板画布上绘画;拉开距离欣赏成果,进行评估和下一步规划。这样的流程——实践和评估的循环,适用于任何“手艺”,比如编程和写作。

    然而,使用 Chatbot 时,我被迫频繁地在“提问-等待-阅读”三种模式之间切换,这让我失去了创作的 flow 状态。

    过度依赖 AI 生成,削弱用户思考能力

    内容消费趋势是:更短、更有冲击感。人们习惯于被动接受信息,而 Chatbot 类产品强化了这种趋势。当 AI 可以写篇文章、编写代码时,我们为什么要自己动手?

    我希望看到更多的工具,而不是操作的机器。 我们应该拥抱我们的人性,而不是盲目地提高效率。我们应该让人们更灵巧地使用 AI 工具,而不是成为 AI 生成内容的审查员。

    未来 AI 交互形态的畅想

    我认为,未来 AI 产品的交互形态应该是更加多元化、智能化和人性化的。

    • 多模态交互: 结合语音、图像、视频等多种形式,提供更加自然、直观的交互体验。
    • 智能辅助: AI 不再是简单的信息输出者,而是能够理解用户意图,提供个性化建议和解决方案的智能助手。
    • 人机协同: AI 与人类的关系不再是替代,而是协同。AI 负责处理重复性、机械性的任务,而人类则专注于创造性、决策性的工作。

    我相信,真正改变游戏规则的产品,与简单的内容生成关系不大。我们应该构建一些真正能够提供建议来帮助我们清晰思考的工具。比如通过操纵潜在空间中的几何来塑造文学作品,通过幕后链接模型让我们更容易地在视频而非像素中操纵视觉内容。

    我迫不及待地想看到这个领域变得更加成熟,并开始创造能够包含我们人类能力的 AI 工具。

    参考文献:

  • AI Agent 的千亿美金问题:如何重构 10 亿知识工作职业,掀起软件生产革命?

    引言:Agent 浪潮与软件生产的未来

    2023 年,AI Agent 成为科技领域最炙手可热的话题之一。AutoGPT 的横空出世,以惊人的速度登顶 Github 热榜,预示着软件生产方式即将迎来革命性变革。

    LLM(大型语言模型)作为 AI Agent 的“大脑”,其推理能力日益强大。Agent 框架则为 LLM 提供了结构化的思考方法,使软件生产进入“3D 打印”时代:根据用户需求,个性化定制软件,打造每个知识工作者信赖的 AI 伙伴。

    一、AI Agent:机遇与挑战

    1. AI Agent 的定义与意义

    AI Agent 是指能够主动思考和行动的智能体。与被动响应指令的 LLM 不同,Agent 可以根据目标,自主感知环境、制定计划并执行任务,甚至与其他 Agent 协作。

    AI Agent 的出现,意味着软件行业将迎来“3D 打印”时代:

    • 降低成本: 自动化软件生产,使边际成本趋近于零。
    • 提高定制化: 灵活满足用户长尾需求,实现软件的个性化定制。

    2. AI Agent 的核心要素

    理想的 Agent 框架应该具备以下核心要素:

    • 记忆: 包括短期记忆和长期记忆,用于存储和检索信息,模拟人类的学习和记忆过程。
    • 行动: 拥有完整的行动策略集,例如工具使用、职责扮演、记忆检索、推理、学习和编程等。
    • 决策: 能够根据目标,对不同的行动方案进行评估,选择最优方案执行。

    3. AI Agent 面临的挑战

    目前,AI Agent 的发展仍面临诸多挑战:

    • 可靠性: 完全自主的 Agent 缺乏可控性,难以满足实际工作需求。
    • 复杂推理能力: 现有的 LLM 在多步推理任务上表现不佳,限制了 Agent 的能力。
    • 延迟: LLM 的响应速度仍然较慢,影响了工作效率。
    • 成本: Agent 框架中,AI 之间的沟通和协作会产生大量文本,带来高昂的成本。

    二、AI Agent 的发展方向

    1. Agent Framework:打造 AI 合作伙伴

    Agent Framework 旨在提供实用的框架和工具,降低 Agent 开发的复杂度,并支持 Agent 间的协作。

    • 模块化设计: 将 Agent 系统分解为独立可解耦的模块,方便开发者灵活组合。
    • APIs 和 SDKs: 设计通用的接口和协议,实现不同 Agent 之间的兼容和配合。
    • 合作机制设计: 建立 Agent 之间的合作分工和层级机制,保障数据安全和隐私。

    2. Vertical Agent:深耕垂直领域

    Vertical Agent 专注于特定领域,例如编程、个人助理、写作和数据分析等,利用领域知识和工作流,打造更实用的 AI 工具。

    三、AI Agent 的未来展望

    1. OpenAI 的角色

    OpenAI 作为 LLM 领域的领头羊,预计将在 11 月的 DevDay 上发布定义 AI Agent 的 API 和开发框架,推动行业标准化。

    2. 强化学习的启示

    RL-based Agent 在探索和试错方面具有优势,可以为 LLM-based Agent 提供借鉴。

    3. LLM 的优化

    AI Agent 应用的成熟,离不开 LLM 在复杂推理能力和延迟方面的优化。

    4. 成本控制与激励机制

    Multi-agent 协作带来的高成本问题,需要通过模型优化、成本控制和激励机制设计来解决。

    结语:AI Agent 的未来充满希望

    AI Agent 的发展,将重构 10 亿知识工作者的职业,掀起软件生产的革命。尽管挑战重重,但随着技术的进步和应用的探索,AI Agent 必将为我们带来更加智能、高效和个性化的工作方式。

    参考文献

    1. Theodore Sumers, Shunyu Yao, Karthik Narasimhan, Thomas L. Griffiths. Cognitive Architectures for Language Agents.
    2. https://e2b.dev/blog/the-state-of-ai-agents-reliability-sdks-benchmarking-and-market-trends
  • 解读 ChatGPT 背后的技术密码:RLHF、IFT、CoT 如何协同打造智能对话体验?

    引言:

    近期,ChatGPT 横空出世,以其出色的对话能力和知识储备,迅速成为人工智能领域的焦点。其背后究竟隐藏着哪些技术奥秘?本文将深入浅出地解读 ChatGPT 的核心技术,包括 RLHF、IFT、CoT 等,并探讨这些技术如何协同工作,打造出令人惊艳的智能对话体验。

    一、 群雄逐鹿:AI 对话代理的现状

    ChatGPT 并非横空出世,早在其之前,Meta、Google、DeepMind、Anthropic 等机构就已经推出了各自的语言模型对话代理,例如 BlenderBot、LaMDA、Sparrow、Assistant 等。这些对话代理都致力于实现“指令依从”,即根据用户指令完成任务。

    然而,ChatGPT 的成功并非偶然,它在技术路线上有着独特之处。下表对目前主流的 AI 聊天机器人进行了比较:

    LaMDABlenderBot 3SparrowChatGPT / InstructGPTAssistant
    组织GoogleMetaDeepMindOpenAIAnthropic
    能否公开访问能否有限
    大小137B175B70B175B52B
    预训练基础模型未知OPTChinchillaGPT-3.5未知

    二、 从预测文本到遵循指令:指令微调 (IFT) 技术

    传统的语言模型擅长预测文本,但要让其理解并执行用户指令,则需要进行“指令微调 (Instruction Fine-Tuning,IFT)”。IFT 的核心是向模型示范各种书面指令及其预期输出,例如:

    指令:写一首关于微调的诗。
    输出:... (ChatGPT 生成的诗歌)

    IFT 的训练数据通常包括人工编写的指令和模型自举生成的实例。其中,自举指的是使用少样本技术,先输入少量样本引导模型,然后让模型自行生成新的指令、输入和输出,不断迭代优化。

    三、 安全护航:有监督微调 (SFT) 与安全规则

    经过 IFT 的模型虽然能够理解指令,但生成的回复不一定安全无害。为了解决这个问题,开发者会使用“有监督微调 (Supervised Fine-tuning, SFT)”,利用高质量的人工标注数据,进一步提升模型回复的安全性。

    例如,谷歌的 LaMDA 就根据一系列预先定义的安全规则进行微调,这些规则涵盖了伤害、歧视、错误信息等方面,确保模型的回复符合道德和安全规范。

    四、 更胜一筹:人类反馈强化学习 (RLHF)

    为了进一步提升模型的性能,OpenAI 的 InstructGPT、DeepMind 的 Sparrow 和 Anthropic 的 Constitutional AI 都引入了“人类反馈强化学习 (Reinforcement Learning From Human Feedback,RLHF)”技术。

    RLHF 的核心是根据人类的偏好对模型的回复进行排序,然后用这些带标注的数据训练偏好模型,最终通过强化学习优化对话代理。关于 RLHF 的更多细节,可以参考我们之前的文章:ChatGPT 背后的“功臣”——RLHF 技术详解。

    五、 逻辑推理:思维链 (CoT) 提示

    “思维链 (Chain-of-thought,CoT) 提示”是 IFT 的一种特殊形式,它通过引导模型进行逐步推理来生成最终答案。例如:

    指令:小明有 5 个苹果,小红给了他 3 个,小明现在有多少个苹果?
    CoT 推理:小明最初有 5 个苹果,加上小红给的 3 个,总数是 5 + 3 = 8 个。
    输出:小明现在有 8 个苹果。

    使用 CoT 微调的模型在需要逻辑推理的任务上表现更出色,例如常识推理、算术计算、符号推理等。

    六、 展望未来:对话代理的进一步发展

    尽管现有的技术已经取得了显著成果,但对话代理领域仍有许多问题亟待解决,例如:

    • RL 在人类反馈学习中的重要性?
    • 如何系统评估红蓝对抗的效果?
    • 如何选择最佳的基础模型?

    相信随着技术的不断进步,对话代理将在未来展现出更加强大的能力,为人类带来更加智能、便捷的交互体验。

    参考文献:

    • Rajani et al.,”What Makes a Dialog Agent Useful?”, Hugging Face Blog, 2023.
  • 当 Transformer 遇上状态空间模型:结构化状态空间对偶性的启示

    近年来,深度学习在自然语言处理领域取得了巨大成功,这主要归功于 Transformer 架构。然而,状态空间模型(SSM),例如 Mamba,最近被证明在中小型规模上可以与 Transformer 媲美甚至超越。本文将深入探讨这两种模型之间的密切关系,并通过对结构化半可分矩阵的不同分解,建立 SSM 和注意力变体之间丰富的理论联系框架。我们的状态空间对偶性(SSD)框架将引领我们设计一种新的架构(Mamba-2),其核心层是对 Mamba 选择性 SSM 的改进,速度提高了 2-8 倍,同时在语言建模方面继续与 Transformer 保持竞争力。

    Transformer 的效率瓶颈与状态空间模型的崛起

    Transformer,特别是仅解码器模型(例如 GPT 和 Llama),以因果方式处理输入序列,是现代深度学习成功的关键驱动力之一。然而,其核心注意力层存在效率问题,例如在训练期间按序列长度呈二次方增长,以及在自回归生成期间需要大小与序列长度呈线性关系的缓存。为了解决这些问题,许多方法试图近似核心注意力层(Tay et al. 2022),但效果有限。

    与此同时,一类替代序列模型——结构化状态空间模型(SSM)——应运而生。它们在训练期间按序列长度呈线性增长,在生成期间具有恒定的状态大小。SSM 在长程任务上表现出色(例如 S4),并且最近在中小型规模的语言建模上与 Transformer 媲美甚至超越(例如 Mamba)。然而,SSM 的发展似乎与社区为改进 Transformer 所做的集体努力脱节,例如从理论上理解它们以及在现代硬件上优化它们。因此,与 Transformer 相比,理解和试验 SSM 更加困难,并且从算法和系统角度来看,高效地训练 SSM 仍然具有挑战性。

    结构化状态空间对偶性:连接 SSM 和注意力的桥梁

    本文的主要目标是建立结构化 SSM 和注意力变体之间丰富的理论联系。这将使我们能够将最初为 Transformer 开发的算法和系统优化转移到 SSM,从而构建性能优于 Transformer 且序列长度扩展效率更高的基础模型。线性注意力(LA)框架(Katharopoulos et al. 2020)是朝着这个方向迈出的里程碑式的一步,它通过证明二次核化注意力的“对偶形式”与特定线性递归之间的等价性,推导了自回归注意力和线性 RNN 之间的联系。这种对偶性带来了新的能力,例如能够同时进行高效的可并行化训练和高效的自回归推理。

    本文秉承同样的精神,提供了多个视角,将线性复杂度的 SSM 与二次复杂度的形式联系起来,以结合 SSM 和注意力的优势。我们的框架将结构化 SSM 和注意力变体联系起来,我们称之为结构化状态空间对偶性(SSD),它是通过结构化矩阵的抽象实现的:具有次二次参数和乘法复杂度的矩阵。我们开发了两个广泛的框架来表示序列模型,一个作为矩阵变换,一个作为张量收缩,每个框架都揭示了对偶性的不同视角。

    状态空间模型与半可分矩阵的等价性

    本文的核心是状态空间模型和一类称为半可分矩阵的结构化矩阵之间的等价性(第 3 节)。这种联系揭示了 SSM 的新特性和算法。本文的一个中心思想是,计算状态空间模型的不同方法可以重新表述为结构化矩阵上的各种矩阵乘法算法。

    半可分矩阵是一种基本的矩阵结构。我们首先定义这些矩阵及其性质。

    定义 3.1:如果包含在下三角部分(即对角线或下方)的每个子矩阵的秩最多为 N,则(下三角)矩阵 M 为 N-半可分矩阵。我们称 N 为半可分矩阵的阶数或秩。

    半可分矩阵具有许多结构化表示,包括分层半可分 (HSS)、顺序半可分 (SSS) 和 Bruhat 形式。我们将主要使用 SSS 形式。

    定义 3.2:如果下三角矩阵 M ∈ R(T,T) 可以写成以下形式,则它具有 N-顺序半可分 (SSS) 表示:

    $$
    M_{ji} = C_j^\top A_j \cdots A_{i+1} B_i
    $$

    其中向量 $B_0, …, B_{T-1}, C_0, …, C_{T-1} ∈ R^N$ 且矩阵 $A_0, …, A_{T-1} ∈ R^{(N,N)}$。

    半可分矩阵的一个基本结果是它们与具有 SSS 表示的矩阵完全等价。一个方向可以通过简单的构造性证明来推断。

    引理 3.3:具有表示 (4) 的 N-SSS 矩阵 M 是 N-半可分矩阵。

    命题 3.4:每个 N-半可分矩阵都有一个 N-SSS 表示。

    状态空间模型和顺序半可分矩阵之间的联系如下:

    定理 3.5:状态大小为 N 的状态空间模型变换 𝑦 = SSM(𝐴, 𝐵, 𝐶)(𝑥) 与通过 N-SS 矩阵(以顺序半可分表示)进行矩阵乘法 𝑦 = SSS(𝐴, 𝐵, 𝐶) · 𝑥 相同。

    换句话说,序列变换算子 SSM 与矩阵构造算子 SSS 重合,我们可以互换使用它们。

    通过结构化矩阵算法计算状态空间模型

    定理 3.5 的重要性在于它使我们能够将高效计算 SSM(和其他序列模型)的问题简化为结构化矩阵乘法的有效算法。

    命题 3.6 (Pernet, Signargout, and Villard (2023)):大小为 T 的 N-SS 矩阵可以用 𝑂 (NT) 个参数表示,并且矩阵向量乘法的时间和空间复杂度为 𝑂 (NT)。

    定理 3.7:任何状态大小为 N、序列长度为 T 的状态空间模型(定义 2.2)都可以在 𝑂 (TN) 时间内计算(不考虑潜在的预处理)。

    结构化掩码注意力:用结构化矩阵推广线性注意力

    在本节中,我们将从第一性原理重新审视线性注意力框架。本节的主要结果是基于张量收缩的线性注意力简单证明(命题 4.1),以及我们在定义 4.2 中对结构化掩码注意力的概括抽象。

    线性注意力和其他许多高效注意力变体通常是通过改变核心注意力计算 (𝑄𝐾 ⊤)𝑉 = 𝑄 (𝐾 ⊤𝑉 ) 中矩阵结合性的顺序来实现的。但是,当添加掩码时,推导就有点不那么直接了。

    命题 4.1 ((Katharopoulos et al. 2020)):自回归核注意力(即具有因果掩码的掩码核注意力)可以通过每次迭代花费恒定时间的递归在 𝑂 (𝑇 ) 时间内计算。

    通过使用张量收缩的视角,我们可以立即看到原始线性注意力的关键在于因果掩码的矩阵向量乘法等价于累积和运算符。

    然而,我们观察到注意力掩码不必都是 1。线性注意力快速计算所必需的只是 𝐿 是一个结构化矩阵,根据定义,结构化矩阵具有快速的矩阵乘法(第 2.3 节)。特别是,我们可以使用任何具有次二次(理想情况下是线性)矩阵向量乘法的掩码矩阵 𝐿,通过加速瓶颈方程 (15b),它将具有与标准线性注意力相同的复杂度。

    定义 4.2:结构化掩码注意力 (SMA)(或简称结构化注意力)定义为查询/键/值 𝑄、𝐾、𝑉 以及任何结构化矩阵 𝐿(即具有次二次矩阵乘法)上的函数,通过 4 路张量收缩:

    $$
    𝑌 = \text{contract}(TN, SN, SP, TS → TP)(𝑄, 𝐾, 𝑉 , 𝐿).
    $$

    SMA 二次模式算法是由 (13) 定义的成对收缩序列,它对应于标准(掩码)注意力计算。

    SMA 线性模式算法是由 (15) 定义的成对收缩序列,其中步骤 (15b) 通过次二次结构化矩阵乘法进行了优化。

    状态空间对偶性

    在第 3 节和第 4 节中,我们定义了结构化状态空间模型和结构化注意力,讨论了它们的性质,并表明它们都具有二次算法和线性算法。本节将它们联系在一起。我们的主要结果是表明结构化状态空间模型的一个特例与结构化注意力的一个特例重合,并且线性时间 SSM 算法和二次时间核注意力算法是彼此的对偶形式。

    为了总结我们的结果:

    • 结构化状态空间模型(第 3 节)通常通过线性时间递归来定义。然而,通过扩展表征其线性序列到序列变换的矩阵公式,可以推导出二次形式。
    • 注意力变体(第 4 节)是通过二次时间成对交互定义的模型。然而,通过将其视为四路张量收缩并以不同的顺序进行约简,可以推导出线性形式。
    • 每个模型的一个自然特例——更准确地说,在 𝐴 矩阵上具有标量恒等结构的状态空间模型,以及在其 𝐿 掩码上具有 1-半可分结构的结构化掩码注意力——是彼此的对偶,具有完全相同的线性和二次形式。

    图 4 总结了这两种表示之间的对偶性。

    SSD 模型的硬件高效算法

    开发 SSM、注意力和结构化矩阵之间的理论 SSD 框架的好处在于利用这些联系来改进模型和算法。在本节中,我们将展示如何从计算结构化矩阵乘法的各种算法中推导出高效计算 SSD 模型的各种算法。

    我们的主要计算结果是一种结合了线性(递归)模式和二次(注意力)模式的 SSD 模型计算算法。该算法的计算效率与 SSM(序列长度的线性缩放)一样高,并且与注意力(主要使用矩阵乘法)一样对硬件友好。

    定理 6.1:考虑一个状态扩展因子为 N、头部维度为 P = N 的 SSD 模型。存在一种算法可以在任何输入 𝑋 ∈ R(T,P) 上计算模型,该算法只需要 𝑂 (TN2) 个训练 FLOP、𝑂 (TN) 个推理 FLOP、𝑂 (N2) 个推理内存,并且其工作主要由矩阵乘法主导。

    定理 6.1 背后的主要思想是再次将计算状态空间模型的问题视为半可分矩阵乘法,但以一种新的方式利用其结构。我们没有以递归或注意力模式计算整个矩阵,而是对矩阵进行块分解。对角块可以使用对偶注意力模式计算,这可以通过矩阵乘法有效地完成,而非对角块可以通过半可分矩阵的秩结构进行分解,并简化为更小的递归。

    Mamba-2 架构

    通过连接 SSM 和注意力,SSD 框架使我们能够为两者开发共享的词汇表和技术库。在本节中,我们将讨论使用最初为 Transformer 开发的思想来理解和修改 SSD 层的一些示例。我们将讨论几个设计选择,从而形成 Mamba-2 架构。

    块设计

    我们首先讨论与内部序列混合层无关的神经网络块的修改(即核心 SSD 层之外)。

    并行参数投影:Mamba-1 的动机是以 SSM 为中心的观点,其中选择性 SSM 层被视为从 𝑋 ↦→ 𝑌 的映射。SSM 参数 𝐴、𝐵、𝐶 被视为辅助参数,并且是 SSM 输入 𝑋 的函数。因此,定义 (𝐴, 𝐵, 𝐶) 的线性投影发生在创建 𝑋 的初始线性投影之后。

    在 Mamba-2 中,SSD 层被视为从 𝐴、𝑋、𝐵、𝐶 ↦→ 𝑌 的映射。因此,在块的开头使用单个投影并行生成 𝐴、𝑋、𝐵、𝐶 是有意义的。请注意与标准注意力架构的类比,其中 𝑋、𝐵、𝐶 对应于并行创建的 𝑄、𝐾、𝑉 投影。

    额外的归一化:在初步实验中,我们发现大型模型容易出现不稳定性。我们能够通过在最终输出投影之前的块中添加一个额外的归一化层(例如 LayerNorm、GroupNorm 或 RMSNorm)来缓解这种情况。

    序列变换的多头模式

    回想一下,SSM 被定义为序列变换(定义 2.1),其中:

    • 𝐴、𝐵、𝐶 参数具有状态维度 N。
    • 它们定义了一个序列变换 RT → RT,例如可以表示为矩阵 𝑀 ∈ R(T,T)。
    • 此变换在输入序列 𝑋 ∈ R(T,P) 上运行,在 P 轴上独立运行。

    可以将其视为定义序列变换的一个头。

    定义 7.1(多头模式):多头序列变换由 H 个独立的头组成,总模型维度为 D = d_model。参数可以在头部之间绑定,从而形成头部模式。

    状态大小 N 和头部维度 P 分别类似于注意力的 𝑄𝐾 头部维度和 𝑉 头部维度。就像在现代 Transformer 架构中一样,在 Mamba-2 中,我们通常选择这些常量在 64 或 128 左右;当模型维度 D 增加时,我们增加头的数量,同时保持头部维度 N 和 P 固定。为了描述如何做到这一点,我们可以转移和概括多头注意力的思想,为 SSM 或任何一般序列变换定义类似的模式。

    多头 SSM (MHS) / 多头注意力 (MHA) 模式:经典的 MHA 模式假设头部维度 P 可以整除模型维度 D。头的数量定义为 H = D/P。然后,通过创建每个参数的 H 个独立副本,创建核心序列变换的 H 个副本。

    多收缩 SSM (MCS) / 多查询注意力 (MQA) 模式:多查询注意力 (Shazeer 2019) 是一种巧妙的注意力优化方法,可以显着提高自回归推理的速度,这依赖于缓存 𝐾 和 𝑉 张量。这种技术只是避免给 𝐾 和 𝑉 额外的头部维度,或者换句话说,在 𝑄 的所有头部广播 (𝐾, 𝑉) 的单个头部。

    使用状态空间对偶性,我们可以将 MQA 的等效 SSM 版本定义为方程 (18)。在这里,𝑋 和 𝐵(注意力的 𝑉 和 𝐾 的 SSM 类比)在 H 个头部之间共享。我们也称其为多收缩 SSM (MCS) 头部模式,因为控制 SSM 状态收缩的 𝐶 参数每个头部都有独立的副本。

    我们也可以类似地定义多键注意力 (MKA) 或多扩展 SSM (MES) 头部模式,其中 𝐵(控制 SSM 扩展)每个头部都是独立的,而 𝐶 和 𝑋 在头部之间共享。

    多输入 SSM (MIS) / 多值注意力 (MVA) 模式:虽然 MQA 对于注意力来说是有意义的,因为它有 KV 缓存,但它不是 SSM 的自然选择。相反,在 Mamba 中,𝑋 被视为 SSM 的主要输入,因此 𝐵 和 𝐶 是在输入通道之间共享的参数。我们在方程 (20) 中定义了一种新的多值注意力 (MVA) 或多输入 SSM (MIS) 模式,它可以再次应用于任何序列变换,例如 SSD。

    有了这个词汇表,我们可以更精确地描述原始的 Mamba 架构。

    命题 7.2:Mamba 架构的选择性 SSM (S6) 层可以被视为具有:

    • 头部维度 𝑃 = 1:每个通道都有独立的 SSM 动态 𝐴。
    • 多输入 SSM (MIS) 或多值注意力 (MVA) 头部结构:𝐵、𝐶 矩阵(对应于注意力中的 𝐾、𝑄)在输入 𝑋 的所有通道(对应于注意力中的 𝑉)之间共享。

    从线性注意力中获得的其他 SSD 扩展

    我们在这里描述一个对 SSD 的架构修改示例,其动机来自线性注意力。

    核注意力近似于 Softmax 注意力:许多线性注意力或核注意力变体都是通过将注意力分数 softmax(𝑄𝐾 ⊤) 视为由以下两部分组成来实现的:

    1. 指数核 𝑍 = exp(𝑄𝐾 ⊤),可以通过 𝑍 = 𝜓 (𝑄)𝜓 (𝐾)⊤ 来近似,其中 𝜓 为核特征映射。
    2. 通过 𝑀 = 𝐺/𝐺11⊤ 对核进行归一化,使行总和为 1,其中除法按元素进行,1 为全 1 向量。

    在 Mamba-2 中,我们合并了一个灵活的核特征映射,并将其应用于 𝐵 和 𝐶 分支(对应于注意力中的 𝐾 和 𝑉 分支)。为了简单和对称,也可以选择将特征映射应用于 𝑋 (𝑉) 分支。这在图 6 中由任意非线性表示。默认情况下,我们简单地选择 𝜓 为元素级 Swish / SiLU 函数。

    合并归一化(分母)项:为了找到分母项,我们只需要计算 𝑀1。但回想一下,模型的最终输出只是 𝑌 = 𝑀𝑋(方程 (16))。因此,可以通过用一个额外的列 1 扩充 𝑋 来找到归一化项,从而得到一个形状为 (T, P + 1) 的张量。

    请注意,在这种情况下,核特征映射 𝜓 必须为正,以便总和为正。

    SSM 的系统优化

    我们描述了 SSM(尤其是 Mamba-2 架构)的几种系统优化,用于大规模高效训练和推理。特别是,我们专注于用于大规模训练的张量并行和序列并行,以及用于高效微调和推理的可变长度序列。

    张量并行

    张量并行 (TP) (Shoeybi et al. 2019) 是一种模型并行技术,它将每一层(例如,注意力、MLP)拆分到多个加速器(例如 GPU)上运行。这种技术被广泛用于在 GPU 集群上训练大多数大型模型,其中每个节点通常有 4-8 个具有快速网络(例如 NVLink)的 GPU。TP 最初是为 Transformer 架构开发的,将其应用于其他架构并不合适。

    序列并行

    对于非常长的序列,我们可能需要沿着序列长度维度将输入和激活拆分到不同的 GPU。主要有两种技术:

    1. 用于残差和归一化操作的序列并行 (SP):该技术首先由 Korthikanti 等人 (2023) 提出,它将 TP 中的全约简分解为约简分散和全收集。注意到残差和归一化操作在同一 TP 组中的所有 GPU 上对相同的输入重复执行,SP 通过执行以下操作沿序列长度维度拆分激活:约简分散、残差和归一化,然后全收集。

    由于 Mamba-2 架构使用相同的残差和归一化结构,因此 SP 无需修改即可应用。

    1. 用于标记混合操作(注意力或 SSM)的序列并行,也称为“上下文并行”(CP)。已经为注意力层开发了几种技术(例如,环形注意力 (Liu, Yan, et al. 2024; Liu, Zaharia, and Abbeel 2023)),以及复杂的负载均衡技术 (Brandon et al. 2023)。注意力中序列并行的难点在于我们可以将查询和键拆分为块,但每个查询块都需要与键块交互,从而导致通信带宽与工作器数量呈二次方关系。

    对于 SSM,我们可以以一种简单的方式拆分序列:每个工作器获取一个初始状态,根据其输入计算 SSM,返回最终状态,并将该最终状态传递给下一个工作器。通信带宽与工作器数量呈线性关系。这种分解与 SSD 算法(图 5)中用于拆分为块/块的块分解完全相同。我们在图 7(右)中说明了这种上下文并行。

    可变长度

    虽然预训练通常对批次使用相同的序列长度,但在微调或推理期间,模型可能需要处理不同长度的不同输入序列。处理这种情况的一种简单方法是将批次中的所有序列右填充到最大长度,但如果序列长度差异很大,这可能会很低效。对于 Transformer,已经开发出复杂的技术来避免填充并在 GPU 之间进行负载均衡 (Zeng et al. 2022; Y. Zhai et al. 2023),或者将多个序列打包到同一个批次中并调整注意力掩码 (Ding et al. 2024; Pouransari et al. 2024)。对于 SSM,特别是 Mamba,我们可以通过简单地将整个批次视为一个长序列来处理可变序列长度,并避免在各个序列之间传递状态。这相当于简单地将一个序列末尾的标记 𝑡 的 𝐴𝑡 设置为 0,以防止它将信息传递给属于不同序列的标记 𝑡 + 1。

    实验验证

    我们通过实验评估了 Mamba-2 在对递归模型具有挑战性的合成召回任务(第 9.1 节)和标准语言建模预训练和下游评估(第 9.2 节)上的性能。我们验证了我们的 SSD 算法比 Mamba-1(第 9.3 节)效率更高,并且在中等序列长度下可与优化的注意力相媲美。最后,我们对 Mamba-2 架构中的各种设计选择进行了消融研究(第 9.4 节)。

    合成:关联召回

    合成关联召回任务一直很受欢迎,用于测试语言模型在其上下文中查找信息的能力。广义上讲,它们涉及向自回归模型馈送键值关联对,然后在模型看到先前看到的键时提示模型生成正确的完成。多查询关联召回 (MQAR) 任务是此任务的一种特定形式,它要求模型记住多个关联 (Arora, Eyuboglu, Timalsina, et al. 2024)。最初的 Mamba 论文报告了相关合成任务的结果,特别是选择性复制 (Gu and Dao 2023) 和归纳头 (Olsson et al. 2022),它们可以被视为更容易的关联召回任务。MQAR 任务也与“电话簿查找”任务密切相关,该任务已被证明对 SSM 等递归模型具有挑战性,因为它们的状态容量有限 (De et al. 2024; Jelassi et al. 2024)。

    我们在 (Arora, Eyuboglu, Zhang, et al. 2024) 中提出的具有挑战性的 MQAR 设置版本上进行了比较,使用了更难的任务、更长的序列和更小的模型。我们的基线包括标准的多头 Softmax 注意力以及结合了卷积、局部注意力和线性注意力变体的 Based 架构。

    结果如图 8 所示。虽然 Mamba-1 在此任务上表现不佳,但 Mamba-2 在所有设置下都表现良好。令人惊讶的是,即使在控制状态大小 (N = 16) 的情况下,它也明显优于 Mamba-1。(我们不确定架构的哪个方面是主要因素,这仍然是未来工作中需要探索的问题。)此外,此任务验证了状态大小的重要性:从 N = 16 增加到 N = 64 和 N = 256 始终可以提高 MQAR 的性能,因为更大的状态允许记住更多信息(键值对)。

    语言建模

    按照 LLM 中的标准协议,我们在标准自回归语言建模上训练和评估 Mamba-2 架构,并与其他架构进行比较。我们比较了预训练指标(困惑度)和零样本评估。模型大小(深度和宽度)遵循 GPT3 规范,从 125m 到 2.7B。我们使用 Pile 数据集 (L. Gao, Biderman, et al. 2020),并遵循 Brown 等人 (2020) 中描述的训练方法。这与 Mamba (Gu and Dao 2023) 中报告的设置相同;训练细节见附录 D。

    缩放定律

    对于基线,我们与 Mamba 及其 Transformer++ 方法 (Gu and Dao 2023) 进行了比较,后者基于 PaLM 和 LLaMa 架构(例如旋转嵌入、SwiGLU MLP、RMSNorm 而不是 LayerNorm、没有线性偏差和更高的学习率)。由于 Mamba 已经证明它优于标准 Transformer 架构(GPT3 架构)以及最近的次二次架构(H3 (Dao, D. Y. Fu, et al. 2023)、Hyena (Poli et al. 2023)、RWKV-4 (B. Peng, Alcaide, et al. 2023)、RetNet (Y. Sun et al. 2023)),为了清晰起见,我们在图中省略了这些架构(有关比较,请参见 Gu and Dao (2023))。

    图 9 显示了在标准 Chinchilla (Hoffmann et al. 2022) 协议下,从 ≈ 125𝑀 到 ≈ 1.3𝐵 参数的模型的缩放定律。

    下游评估

    表 1 显示了 Mamba-2 在一系列流行的下游零样本评估任务上的性能,并与这些规模下最著名的开源模型进行了比较,最重要的是 Pythia (Biderman et al. 2023),后者使用与我们的模型相同的标记器、数据集和训练长度(300B 标记)进行训练。

    混合模型:将 SSD 层与 MLP 和注意力相结合

    最近和同时进行的研究 (Dao, D. Y. Fu, et al. 2023; De et al. 2024; Glorioso et al. 2024; Lieber et al. 2024) 表明,同时具有 SSM 层和注意力层的混合架构可以提高模型质量,使其优于 Transformer 或纯 SSM(例如,Mamba)模型,尤其是在上下文学习方面。我们探索了将 SSD 层与注意力和 MLP 相结合的不同方式,以了解每种方式的好处。根据经验,我们发现大约 10% 的层是注意力层时性能最佳。将 SSD 层、注意力层和 MLP 相结合也比纯 Transformer++ 或 Mamba-2 效果更好。

    SSD 和注意力:我们发现 SSD 和注意力层是互补的:它们本身(例如,在 Mamba-2 架构与 Transformer++ 中)的性能(以困惑度衡量)几乎相同,但 SSD 和注意力层的混合优于纯 Mamba-2 或 Transformer++ 架构。我们在表 2 中展示了一些结果,这些结果是使用 GPT-2 标记器在 Pile 上训练到 7B 标记的 350M 模型(48 层)(参数数量相同、超参数相同、训练和验证集相同)。仅添加几个注意力层就已经产生了显着的改进,并在质量和效率之间取得了最佳平衡。我们假设 SSM 层可以很好地用作一般的序列到序列映射,而注意力层充当检索机制,可以快速引用序列中的先前标记,而不是强迫模型将其所有上下文压缩到其内存(SSM 状态)中。

    具有 SSD、MLP 和注意力的混合模型:我们比较了将 SSD 与(门控)MLP 和注意力层相结合的不同方式,并在 Pile 上训练到 300B 标记的 2.7B 规模(64 层)上进行了评估(参数数量相同、超参数相同、训练和验证集相同、数据顺序相同):

    1. Transformer++:32 个注意力层和 32 个门控 MLP,交错。
    2. Mamba-2:64 个 SSD 层。
    3. Mamba-2-MLP:32 个 SSD 和 32 个门控 MLP 层,交错。
    4. Mamba-2-Attention:58 个 SSD 层和 6 个注意力层(位于索引 9、18、27、36、45、56)。
    5. Mamba-2-MLP-Attention:28 个 SSD 层和 4 个注意力层,与 32 个门控 MLP 层交错。

    我们在表 3 中报告了 Pile 上的验证困惑度以及零样本评估。总的来说,Transformer++ 和 Mamba-2 模型的质量大致相同。我们看到仅添加 6 个注意力层就显着改善了纯 Mamba-2 模型(以及 Transformer++)。添加 MLP 层会降低模型质量,但可以 (i) 由于 MLP 层的简单性和硬件效率而加快训练和推理速度;(ii) 通过用专家混合替换 MLP 层,更容易升级到 MoE 模型。

    速度基准

    我们将 SSD 算法的速度与 Mamba 的扫描实现和 FlashAttention-2 进行了基准测试(图 10)。SSD 由于其重新制定以使用矩阵乘法作为子例程,因此可以利用 GPU 上的专用矩阵乘法 (matmul) 单元,也称为张量核。因此,它比 Mamba 的融合关联扫描快 2-8 倍,后者不利用 matmul 单元。由于其序列长度的线性缩放,SSD 从序列长度 2𝐾 开始就比 FlashAttention-2 快。

    但是,我们注意到,在短序列长度(例如 2𝐾)下,整个 Mamba-2 模型的训练效率可能不如 Transformer,因为具有 𝐿 层的 Transformer 将具有 𝐿/2 个注意力层和 𝐿/2 个 MLP 层,而 Mamba-2 模型在参数数量相同的情况下将具有 𝐿 个 SSD 层。通常,MLP 层的硬件效率非常高,因为它们由简单的矩阵乘法和逐点线性组成。如第 9.2.3 节所示,也可以将 𝐿/2 个 SSD 层和 𝐿/2 个 MLP 层组合起来,以加快短序列长度下的训练速度。

    架构消融研究

    块设计

    第 7.1 节介绍了 Mamba-2 块,它对 Mamba-1 块进行了一些小的修改,部分原因是为了与注意力联系起来,也是为了提高 Mamba-2 的可扩展性。表 4 对块的这些架构更改进行了消融研究,这些更改发生在核心 SSM 层之外。

    消融研究验证了并行投影创建 (𝐴, 𝐵, 𝐶, 𝑋) 可以节省参数,并且性能略好于 Mamba 的顺序投影。更重要的是,这种修改适用于大型模型的张量并行(第 8 节)。此外,额外的归一化层也略微提高了性能。更重要的是,在更大规模的初步实验中观察到它还有助于训练稳定性。

    头部结构

    第 7.2 节描述了如何将 𝐵、𝐶、𝑋 投影的维度视为类似于多头注意力和多查询注意力概念的超参数。我们还展示了原始的 Mamba 架构如何类似于多值注意力(命题 7.2),这是从状态空间模型的角度自然发展而来的选择,之前没有进行过消融研究。

    表 5 对 Mamba-2 架构的多头结构选择进行了消融研究。引人注目的是,我们发现多值和多查询或多键头部模式之间存在很大差异,尽管它们看起来非常相似。请注意,这不能用总状态大小来解释,所有这些模式的总状态大小都相同(等于 HPN 或头部数量、头部维度和状态维度的乘积)。

    我们还比较了 𝐶、𝐵、𝑋(类似于 𝑄、𝐾、𝑉)头部的数量相等的多头模式。我们与标准的多头模式以及一种积极共享的模式进行了比较,在积极共享的模式中,它们都只有一个头部。请注意,在后一种情况下,模型仍然有 H 个不同的序列混合器 𝑀,因为每个头部仍然有不同的 𝐴。当参数匹配时,这些多头模式的性能彼此相似,介于 MVA 和 MQA/MKA 模式之间。

    注意力核近似

    第 7.3 节指出 SSD 如何与线性注意力文献中的思想相结合,例如各种形式的核近似。我们在表 6 中对先前工作建议的几种变体进行了消融研究。这些变体包括 cosFormer (Qin, Weixuan Sun, et al. 2022)、随机特征注意力 H. Peng et al. 2021 和正随机特征 (Performer) (Choromanski et al. 2021)。

    我们还对添加归一化项进行了消融研究,类似于标准注意力中 Softmax 函数的分母。我们发现这会给大多数变体带来不稳定性,但会略微提高 ReLU 激活函数 𝜓 的性能。

    表 7 还测试了最近提出的改进线性注意力的建议,这些建议涉及扩展特征维度(Based (Arora, Eyuboglu, Zhang, et al. 2024) 和 ReBased (Aksenov et al. 2024))。这些线性注意力扩展旨在使用二次近似来逼近 exp 核。ReBased 还建议用层归一化替换 QK 激活函数;从以 SSM 为中心的观点来看,我们在应用 SSM 函数之前对 (𝐵, 𝐶) 应用归一化。

    我们注意到,这种技术已被独立地提出作为 Softmax 注意力的“QK-Norm”(Team 2024)和 Mamba 的“内部归一化”(Lieber et al. 2024)。

    总的来说,表 6 和表 7 发现,我们尝试的核近似方法似乎并没有比简单的逐点非线性激活函数 𝜓 有所改进。因此,我们对 Mamba-2 的默认设置使用 𝜓 (𝑥) = Swish(𝑥) 来遵循 Mamba-1,但我们建议完全删除此激活可能是一个更简单的选择,我们没有对其进行广泛测试。

    我们强调,SSD 和普通线性注意力在包含 1-半可分掩码 𝐿 方面有所不同,而文献中的各种线性注意力方法都是为了在没有此项的情况下近似 Softmax 注意力而推导出来的;因此,我们的负面结果可能并不意外。

    相关工作和讨论

    状态空间对偶性框架将 SSM、结构化矩阵和注意力之间的联系联系起来。我们将更深入地讨论 SSD 与这些概念之间更广泛的关系。利用每个观点的思想,我们还提出了一些未来工作中可以扩展 SSD 框架的方向。

    状态空间模型

    结构化状态空间模型可以沿着以下轴进行表征:

    (i) 它是否是时不变的或时变的。
    (ii) 系统的维数。
    (iii) 递归转换 𝐴 上的结构。

    SSD 可以描述为具有 SISO 维度和标量恒等结构的选择性 SSM。

    时变性(选择性):最初的结构化 SSM (S4) 是线性时不变 (LTI) 系统 (Gu 2023; Gu, Goel, and Ré 2022),其动机是连续时间在线记忆 (Gu, Dao, et al. 2020; Gu, Johnson, Goel, et al. 2021; Gu, Johnson, Timalsina, et al. 2023)。已经提出了许多结构化 SSM 的变体 (Dao, D. Y. Fu, et al. 2023; Gu, Gupta, et al. 2022; Gupta, Gu, and Berant 2022; Ma et al. 2023; J. T. Smith, Warrington, and Linderman 2023),包括几种放弃递归并专注于 LTI SSM 的卷积表示的变体 (D. Y. Fu et al. 2023; Y. Li et al. 2023; Poli et al. 2023; Qin, Han, Weixuan Sun, B. He, et al. 2023)。

    SSD 是一种时变结构化 SSM,也称为 Mamba (Gu and Dao 2023) 中引入的选择性 SSM。选择性 SSM 与 RNN 的门控机制密切相关,包括经典的 RNN,例如 LSTM (Hochreiter and Schmidhuber 1997) 和 GRU (J. Chung et al. 2014),以及更现代的变体,例如 QRNN (Bradbury et al. 2016)、SRU (Lei 2021; Lei et al. 2017)、RWKV (B. Peng, Alcaide, et al. 2023)、HGRN (Qin, Yang, and Zhong 2023) 和 Griffin (Botev et al. 2024; De et al. 2024)。这些 RNN 在参数化方面有所不同,最重要的是缺乏状态扩展。

    维数和状态扩展: SSD 的一个重要特征是它是一个单输入单输出 (SISO) 系统,其中输入通道独立处理,这与之前其谱系中的 SSM(S4、H3、Mamba)相同。这导致更大的有效状态大小 ND,其中 N 是 SSM 状态大小(也称为状态扩展因子),D 是标准模型维度。传统的 RNN 要么具有 N = 1,要么是具有密集 𝐵、𝐶 矩阵的多输入多输出 (MIMO),这两者都会导致状态更小。虽然 MIMO SSM 已被证明在某些领域中效果良好 (Lu et al. 2023; Orvieto et al. 2023; J. T. Smith, Warrington, and Linderman 2023),但 Mamba 表明状态扩展对于信息密集型领域(例如语言)至关重要。SSD 的主要优势之一是允许更大的状态扩展因子,而不会降低模型速度。此后,许多后续工作都采用了状态扩展(第 10.4 节)。

    结构:与之前的结构化 SSM 相比,SSD 的主要限制在于状态转换 𝐴𝑡 的表达能力。我们注意到,更通用的 SSM(例如对角线 𝐴𝑡 的情况)具有与 SSD 相同的理论效率,但对硬件不太友好。这是因为对偶二次形式失去了类似注意力的解释,并且变得更难计算。因此,与 Mamba 相比,SSD 仅在对角线 𝐴𝑡 的限制性稍强的形式上有所不同,并以这种表达能力换取了更高的硬件效率(以及易于实现)。

    我们假设可以改进我们的结构化矩阵算法,以改进到通用对角线 SSM 的情况。

    结构化矩阵

    状态空间对偶性的第一个观点是将这些模型视为矩阵序列变换或“矩阵混合器”:可以表示为沿序列维度 T 进行矩阵乘法(通过 T × T 矩阵)的序列变换(定义 2.1)。

    之前已经提出了几种这样的矩阵混合器,其中主要的变化轴是矩阵的表示。这些包括 MLP-Mixer (Tolstikhin et al. 2021)(非结构化矩阵)、FNet (Lee-Thorp et al. 2021)(傅里叶变换矩阵)、M2 (Dao, B. Chen, et al. 2022; Dao, Gu, et al. 2019; Dao, Sohoni, et al. 2020; D. Fu et al. 2024)(蝴蝶/帝王蝶矩阵)、Toeplitz 矩阵 (Poli et al. 2023; Qin, Han, Weixuan Sun, B. He, et al. 2023),甚至更奇特的结构 (De Sa et al. 2018; Thomas et al. 2018)。

    一个重要的特征是,高效(次二次)矩阵序列变换正是那些具有结构化矩阵混合器的变换。SSD 框架的核心结果是将 SSM 视为具有特定结构的矩阵混合器——半可分矩阵(第 3 节)。然后,线性与二次对偶性采用结构化矩阵乘法与朴素矩阵乘法的形式。

    结构矩阵表示通过特定半可分矩阵的块分解导致了我们高效的 SSD 算法(第 6 节)。我们注意到,半可分矩阵在科学计算文献中得到了很好的研究,结合这些思想可能是进一步改进状态空间模型的一个有希望的途径。我们还建议,关注矩阵混合器观点可以为序列模型带来更多富有成效的方向,例如设计有原则的非因果 Mamba 变体,或者找到通过分析其矩阵变换结构来表征和弥合 Softmax 注意力和次二次模型之间差距的方法。

    (线性)注意力

    与标准(因果)注意力相比,SSD 只有两个主要区别。

    首先,SSD 不使用标准注意力的 Softmax 激活 (Bahdanau, Cho, and Bengio 2015; Vaswani et al. 2017),这是注意力具有二次复杂性的原因。当删除 Softmax 时,可以通过线性注意力框架以线性缩放计算序列 (Katharopoulos et al. 2020)。

    其次,SSD 将 logits 矩阵乘以一个输入相关的 1-半可分掩码。因此,可以将此掩码视为替换标准注意力中的 Softmax。

    此半可分掩码也可以视为提供位置信息。元素 𝑎𝑡 充当 RNN 意义上的“门”,或“选择”机制(参见 Mamba 论文中的讨论),它们的累积乘积 𝑎 𝑗:𝑖 控制位置 𝑖 和 𝑗 之间允许的交互量。位置嵌入(例如正弦 (Vaswani et al. 2017)、AliBi (Press, N. Smith, and Lewis 2022) 和 RoPE (Su et al. 2021))是 Transformer 的重要组成部分,通常被视为启发式方法,SSD 的 1-SS 掩码可以被视为一种更有原则的相对位置嵌入形式。我们注意到 GateLoop (Katsch 2023) 也同时提出了这种观点。

    状态空间对偶性的第二个观点是我们更通用的结构化掩码注意力 (SMA) 框架的特例,其中对偶性表现为对简单的 4 路张量收缩的不同收缩顺序。SMA 是线性注意力的强泛化,它也比 SSD 通用得多;其他形式的结构化掩码可能会导致更多具有不同于 SSD 属性的高效注意力变体。

    除了导致新模型之外,这些与注意力的联系还可以为理解 SSM 提供其他方向。例如,我们很好奇注意力汇聚现象 (Darcet et al. 2024; Xiao et al. 2024) 是否存在于 Mamba 模型中,以及更广泛地说,可解释性技术是否可以转移到 SSM (Ali, Zimerman, and Wolf 2024)。

    最后,已经提出了许多其他线性注意力变体 (Arora, Eyuboglu, Timalsina, et al. 2024; Arora, Eyuboglu, Zhang, et al. 2024; Choromanski et al. 2021; H. Peng et al. 2021; Qin, Han, Weixuan Sun, Dongxu Li, et al. 2022; Qin, Weixuan Sun, et al. 2022; Schlag, Irie, and Schmidhuber 2021; Zhang et al. 2024; Zheng, C. Wang, and Kong 2022)(有关其中几种变体的描述,请参见第 4.1.3 节),我们预计许多技术可以转移到 SSM(例如第 7.3 节)。

    我们强调,SSD 不会泛化标准 Softmax 注意力,或对注意力核矩阵的任何其他没有有限特征映射 𝜓 的变换。与通用注意力相比,SSD 的优势在于具有可控的状态扩展因子 N,可以压缩历史记录,而二次注意力的缓存则包含整个历史记录,其大小与序列长度 T ≫ N 成正比。同时进行的研究已经开始研究这些表示的权衡,例如在复制和上下文学习任务上 (Akyürek et al. 2024; Grazzi et al. 2024; Jelassi et al. 2024; Park et al. 2024)。我们注意到,Mamba-2 在其中一些能力上显着改进了 Mamba(例如,如第 9.1 节中 MQAR 结果所示),但还有更多需要了解的地方。

    相关模型

    最后,我们重点介绍了越来越多的最近和同时进行的工作,这些工作开发了与 Mamba 和 Mamba-2 非常相似的序列模型。

    • RetNet (Y. Sun et al. 2023) 和 TransNormerLLM (Qin, Dong Li, et al. 2023) 使用衰减项而不是累积和来泛化线性注意力,并提出了对偶并行/递归算法以及混合“分块”模式。这些算法可以看作是 𝐴𝑡 时不变(对于所有 𝑡 都是常数)的 SSD 实例;在 SMA 解释中,掩码矩阵 𝐿 将是一个衰减矩阵 𝐿𝑖,𝑗 = 𝛾𝑖 − 𝑗。这些模型在架构上也有各种不同。例如,由于它们是从以注意力为中心的视角推导出来的,因此它们保留了多头注意力 (MHA) 模式;由于 Mamba-2 是从以 SSM 为中心的模式推导出来的,因此它保留了多值注意力 (MVA) 或多扩展 SSM (MES) 模式,我们证明这种模式更好(第 9.4 节)。
    • GateLoop (Katsch 2023) 同时提出了使用输入相关的衰减因子 𝐴𝑡,并开发了与 SSD 中相同的对偶二次形式,他们称之为“代理注意力”形式。
    • 门控线性注意力 (GLA) (Yang et al. 2024) 提出了一种具有数据相关门的线性注意力变体,以及用于计算分块模式和硬件感知实现的高效算法。
    • HGRN (Qin, Yang, and Zhong 2023) 引入了一种具有输入相关门的 RNN,在 HGRN2 (Qin, Yang, Weixuan Sun, et al. 2024) 中通过结合状态扩展对其进行了改进。
    • Griffin (De et al. 2024) 和 RecurrentGemma (Botev et al. 2024) 表明,具有输入相关门控的 RNN 与局部注意力相结合,可以与强大的现代 Transformer 非常有竞争力。Jamba 还表明,将 Mamba 与几层注意力相结合在语言建模方面表现出色 (Lieber et al. 2024)。
    • xLSTM (Beck et al. 2024) 通过采用状态扩展的思想以及其他门控、归一化和稳定技术来改进 xLSTM。
    • RWKV(-4) (B. Peng, Alcaide, et al. 2023) 是一种基于不同线性注意力近似(无注意力 Transformer (S. Zhai et al. 2021))的 RNN。最近,通过采用选择性和状态扩展的思想,将其改进为 RWKV-5/6(Eagle 和 Finch)架构 (B. Peng, Goldstein, et al. 2024)。

    结论

    我们提出了一个基于结构化矩阵的理论框架,该框架弥合了 SSM 和注意力变体之间的概念差距。该框架为最近的 SSM(例如 Mamba)如何在语言建模方面与 Transformer 表现一样好提供了见解。此外,我们的理论工具通过连接两方面的算法和系统进步,为改进 SSM(以及潜在的 Transformer)提供了新思路。作为演示,该框架指导我们设计了一种新的架构 (Mamba-2),该架构位于 SSM 和结构化注意力的交汇处。

    致谢

    我们感谢 Angela Wu 就如何以数值稳定的方式有效计算 Δ 的梯度提出的建议。我们感谢 Sukjun Hwang 和 Aakash Lahoti 在 MQAR 实验中提供的帮助。

    参考文献

    https://arxiv.org/pdf/2405.21060

  • 思维链增强蒸馏技术的神秘面纱:探究其背后的奥秘

    摘要: 近年来,大型语言模型(LLM)在问答等推理任务中表现出色,而“思维链”(CoT)推理的引入更是锦上添花。CoT推理指的是生成能够传达“推理”过程的标记序列,其本质是将解决问题的步骤分解,并用自然语言描述出来。最近的研究表明,这种CoT推理机制可以用于模型蒸馏:在微调小型学生模型时,除了目标标签外,加入从大型“教师”模型中提取的CoT序列可以显著提高模型性能。

    本文将深入探讨CoT增强蒸馏技术背后的奥秘,并试图解答以下问题:

    • 为什么以及如何利用额外的训练信号来帮助模型蒸馏?
    • CoT推理在模型蒸馏中扮演着什么样的角色?

    通过一系列精心设计的实验,我们揭示了一些令人惊讶的结果,并对CoT增强蒸馏技术提出了新的见解。

    一、 CoT增强蒸馏技术:简介

    思维链(CoT)推理能够显著提高模型在推理任务中的表现,例如问答 (Wei et al., 2023)。在模型蒸馏领域 (Hinton et al., 2015),研究人员尝试从大型语言模型(如GPT-4)中提取CoT推理链,并用其增强训练数据,以微调体积更小、针对性更强的学生模型。

    CoT增强蒸馏技术的流程如下:

    1. 提取CoT推理链: 使用大型“教师”模型(如GPT-4),为训练数据中的每个样本生成CoT推理链。
    2. 增强训练数据: 将CoT推理链作为额外的训练信号添加到目标标签中,构成增强后的训练数据。
    3. 微调学生模型: 使用增强后的训练数据微调小型“学生”模型,使其学习生成推理过程和目标标签。

    这种简单的CoT增强蒸馏策略能够持续且显著地提高学生模型的性能 (Ho et al., 2023)。例如,Li et al. (2023a) 使用GPT-3 (175B) 生成的CoT推理链来训练一个相对较小的学生模型 (OPT-1.5B),使其能够在推理时生成类似的“推理”标记序列,最终在三个常识推理数据集上实现了平均12.4%的准确率提升。

    二、 CoT推理链的位置之谜:前置还是后置?

    传统上,从大型模型中提取的CoT推理链通常作为前缀,引导模型生成最终的目标标签。然而,我们的研究发现,在模型蒸馏过程中,将CoT推理链放置在目标标签之后,反而能够获得更好的性能提升。

    实验设计:

    为了探究CoT推理链的位置对模型性能的影响,我们设计了以下实验:

    1. 基线模型: 使用标准的监督微调方法,训练学生模型,不使用任何CoT推理链。
    2. 前置CoT模型: 在微调学生模型时,将CoT推理链放置在目标标签之前。
    3. 后置CoT模型: 在微调学生模型时,将CoT推理链放置在目标标签之后。

    实验结果:

    实验结果表明,后置CoT模型的性能始终优于前置CoT模型。这意味着学生模型在推理时不需要生成“推理”过程,因为目标标签已经在推理链之前生成。

    原因分析:

    我们推测,将CoT推理链放置在目标标签之后,可以为学生模型提供更丰富的上下文信息,使其能够更好地理解目标标签与输入之间的关系。

    三、 CoT推理链的本质:逻辑连贯性并非必要条件

    为了进一步探究CoT推理链的本质,我们尝试打乱CoT推理链中标记的顺序,观察其对模型性能的影响。

    实验设计:

    我们对CoT推理链进行了以下操作:

    1. 打乱标记顺序: 在实例级别上,随机打乱CoT推理链中标记的顺序。

    实验结果:

    实验结果表明,将打乱顺序后的CoT推理链放置在目标标签之后,对模型性能几乎没有影响。

    原因分析:

    我们认为,CoT推理链中包含了一些关键的上下文信息,这些信息有助于学生模型更好地理解目标标签与输入之间的关系。即使打乱标记的顺序,这些关键信息仍然存在,因此模型性能不会受到太大影响。

    四、 CoT推理链的关键:识别并利用关键标记

    既然CoT推理链的逻辑连贯性并非必要条件,那么是否存在一些关键标记,能够在模型蒸馏过程中起到至关重要的作用?

    实验设计:

    为了识别CoT推理链中的关键标记,我们采用了以下方法:

    1. 梯度归因: 使用梯度归因方法,计算CoT推理链中每个标记对最终目标标签的贡献程度,并保留贡献最大的前15个标记。

    实验结果:

    实验结果表明,使用梯度归因方法识别出的关键标记,能够在模型蒸馏过程中取得与完整CoT推理链相当的性能提升。

    原因分析:

    我们认为,梯度归因方法能够有效地识别出CoT推理链中对目标标签预测贡献最大的关键标记,这些标记包含了理解目标标签与输入之间关系的最重要信息。

    五、 结论

    本文深入研究了CoT增强蒸馏技术,并通过一系列精心设计的实验,揭示了其背后的奥秘。我们的研究结果表明:

    1. CoT推理链的位置: 将CoT推理链放置在目标标签之后,能够获得更好的性能提升。
    2. CoT推理链的本质: CoT推理链的逻辑连贯性并非必要条件,关键在于其包含的关键标记。
    3. CoT推理链的关键: 梯度归因方法能够有效地识别出CoT推理链中的关键标记。

    我们的研究结果为CoT增强蒸馏技术提供了新的见解,并为未来开发更有效、更高效的模型蒸馏方法奠定了基础。

    六、参考文献

    • Belrose et al. (2023). Eliciting latent predictions from transformers with the tuned lens.
    • Chen et al. (2024). Post-semantic-thinking: A robust strategy to distill reasoning capacity from large language models.
    • Deng et al. (2023). Implicit chain of thought reasoning via knowledge distillation.
    • Fu et al. (2023). Specializing smaller language models towards multi-step reasoning. ArXiv, abs/2301.12726.
    • Goyal et al. (2024). Think before you speak: Training language models with pause tokens.
    • Han et al. (2023). Dialcot meets ppo: Decomposing and exploring reasoning paths in smaller language models.
    • Hase and Bansal (2022). When can models learn from explanations? a formal framework for understanding the roles of explanation data.
    • Hinton et al. (2015). Distilling the knowledge in a neural network.
    • Ho et al. (2023). Large language models are reasoning teachers.
    • Hsieh et al. (2023). Distilling step-by-step! outperforming larger language models with less training data and smaller model sizes. ArXiv, abs/2305.02301.
    • Jiang et al. (2023). Mistral 7b.
    • Li et al. (2023a). Symbolic chain-of-thought distillation: Small models can also “think” step-by-step.
    • Li et al. (2023b). Textbooks are all you need ii: phi-1.5 technical report.
    • Magister et al. (2023). Teaching small language models to reason.
    • Mihaylov et al. (2018). Can a suit of armor conduct electricity? a new dataset for open book question answering.
    • Mikolov et al. (2013). Distributed representations of words and phrases and their compositionality.
    • nostalgebraist (2020). interpreting gpt: the logit lens.
    • Pal et al. (2023). Future lens: Anticipating subsequent tokens from a single hidden state.
    • Radford et al. (2019). Language models are unsupervised multitask learners.
    • Shridhar et al. (2023). Distilling reasoning capabilities into smaller language models.
    • Sundararajan et al. (2017). Axiomatic attribution for deep networks.
    • Tafjord et al. (2018). Quarel: A dataset and models for answering questions about qualitative relationships.
    • Talmor et al. (2019). CommonsenseQA: A question answering challenge targeting commonsense knowledge.
    • Team et al. (2024). Gemma: Open models based on gemini research and technology.
    • Wadhwa et al. (2023). Revisiting relation extraction in the era of large language models.
    • Wang et al. (2023). SCOTT: Self-consistent chain-of-thought distillation.
    • Wei et al. (2023). Chain-of-thought prompting elicits reasoning in large language models.
    • West et al. (2022). Symbolic knowledge distillation: from general language models to commonsense models.
    • Wiegreffe et al. (2022). Reframing human-AI collaboration for generating free-text explanations.
    • Wolf et al. (2020). Transformers: State-of-the-art natural language processing.
    • Xu et al. (2024). Preemptive answer “attacks” on chain-of-thought reasoning.

    Q: 这篇论文试图解决什么问题?

    A: 这篇论文探讨了在模型蒸馏过程中使用“思维链”(Chain of Thought, CoT)增强的方法来提升学生模型(small student model)性能的原因和机制。具体来说,论文试图解答以下几个问题:

    1. CoT增强蒸馏中理性序列的位置是否影响效果:即是将CoT序列放在目标标签之前还是之后,哪个能更好地提升学生模型的性能?
    2. CoT序列的连贯性和语法结构是否必要:即使CoT序列的令牌顺序被打乱,是否仍然能够观察到性能提升?
    3. 是否只需要CoT序列中的一小部分关键令牌:是否可以通过仅使用CoT序列中的一部分关键令牌来实现与完整CoT序列相同的性能提升?

    论文通过一系列实验和消融研究来探索这些问题,并得出了一些可能令人惊讶的结果。

    Q: 有哪些相关研究?

    A: 论文中提到了以下几项相关研究:

    1. Hinton et al., 2015: 提出了模型蒸馏的概念,即通过大型模型(teacher model)的知识来训练小型模型(student model)。
    2. Wei et al., 2023: 探讨了在推理任务中使用CoT推理来提升模型性能。
    3. Li et al., 2023a: 使用GPT-3生成的CoT来训练一个小型学生语言模型(LM),在常识推理数据集上取得了显著的性能提升。
    4. Shridhar et al., 2023: 类似地,使用CoT方法在小学数学数据集上对GPT-2进行了微调,取得了性能提升。
    5. Wadhwa et al., 2023: 利用CoT推理在关系提取任务上取得了最先进的结果。
    6. Chen et al., 2024: 与本文同时进行的研究,提出了“后语义思考”(Post-semantic-thinking, PST)的概念,以减少推理对最终输出标签的影响。
    7. Xu et al., 2024: 发现在CoT推理中提前生成目标标签对恶意攻击非常敏感。
    8. Goyal et al., 2024: 观察到在训练和推理时增加“虚拟”令牌可以提升LLM的性能。
    9. Deng et al., 2023: 探索了使用模型隐藏状态进行隐式推理的方法,而不是逐个生成推理令牌。
    10. Ho et al., 2023: 展示了如何使用大型语言模型作为推理教师来提升小型模型的推理能力。
    11. Wang et al., 2023: 研究了如何通过自洽链式推理蒸馏(SCOTT)来提升学生模型的性能。

    这些研究为本文提供了理论基础和实验方法,同时也与本文的研究结果相互印证和补充。

    Q: 论文如何解决这个问题?

    A: 论文通过以下步骤来解决提出的问题:

    1. 实验设计:首先,论文定义了一个实验框架,使用大型教师模型(例如Mistral-7B-Instruct)生成CoT推理,并将这些推理作为额外的训练信号来微调小型学生模型。
    2. 消融研究:通过改变CoT序列相对于目标标签的位置(前或后),研究其对学生模型性能的影响。
    3. 令牌顺序的鲁棒性测试:通过打乱CoT序列中的令牌顺序,来测试学生模型对CoT连贯性的敏感度。
    4. 关键令牌的识别:使用梯度归因方法(如集成梯度)和人类标注来识别CoT中的“重要”令牌,并测试这些令牌是否足以实现与完整CoT序列相同的性能提升。
    5. 与基线的比较:将经过不同处理的CoT序列微调后的学生模型的性能与基线模型(未经过CoT增强的模型)进行比较。
    6. 模型信心分析:使用LogitLens、TunedLens和FutureLens等工具来分析不同模型在预测时的信心水平,以了解CoT增强是否有助于模型更早地获得高置信度的预测。
    7. 计算量的影响:通过在目标标签前添加不同数量的令牌来测试额外计算步骤是否能够提供与CoT增强相同的性能提升。
    8. 实验结果分析:对实验结果进行详细分析,以确定CoT增强蒸馏中哪些因素对学生模型性能的提升起到了关键作用。

    通过这些方法,论文得出了关于CoT增强蒸馏的几个关键发现,包括CoT序列放置的位置、CoT序列的连贯性以及关键令牌的作用等方面的见解。

    Q: 论文做了哪些实验?

    A: 论文中进行了以下实验来探究CoT(Chain of Thought)增强蒸馏对模型性能的影响:

    1. 基础性能比较:比较了在没有CoT、标准CoT(标签前)和后缀CoT(标签后)情况下,学生模型在三个常识推理数据集上的性能。
    2. 理性序列位置的实验(RQ1):研究了CoT序列放置在目标标签之前或之后对学生模型性能的影响。
    3. 理性序列连贯性的实验(RQ2):通过打乱CoT序列中的令牌顺序,测试了学生模型对理性序列连贯性的需求。
    4. 关键令牌的识别和实验(RQ3):使用集成梯度方法和人类标注来识别CoT中的“重要”令牌,并测试这些令牌是否足以实现与完整CoT序列相同的性能提升。
    5. 模型信心分析:使用TunedLens工具分析了不同条件下训练的模型在预测时的信心水平。
    6. 计算量的影响实验:通过在目标标签前添加不同数量的令牌来测试额外计算步骤是否能够提供与CoT增强相同的性能提升。
    7. 与基线的比较:将经过不同处理的CoT序列微调后的学生模型的性能与基线模型进行比较。
    8. 使用相关词的实验:探索了使用与目标标签语义相似的词(通过Word2Vec方法选择)是否能够提供与CoT增强蒸馏相似的性能提升。
    9. 人类标注的比较:将通过集成梯度方法选择的令牌与人类标注者选择的“重要”令牌进行了比较,以评估哪种方法更能提高模型性能。

    这些实验的结果帮助论文得出了关于CoT增强蒸馏效果的一系列结论。

    Q: 有什么可以进一步探索的点?

    A: 尽管这篇论文提供了对CoT增强蒸馏的深入分析,但仍有一些潜在的研究方向可以进一步探索:

    1. 多语言数据集的测试:论文主要使用了英文数据集进行实验。未来的研究可以在其他语言的数据集上测试CoT增强蒸馏的效果,以验证方法的普适性。
    2. 不同任务类型的应用:论文集中在常识推理任务上。可以探索CoT增强蒸馏在其他类型的任务,如文本摘要、机器翻译或情感分析等任务中的效果。
    3. 更大规模模型的实验:研究中使用的是相对较小的学生模型。可以探索CoT增强蒸馏在更大规模或更复杂的模型上的效果。
    4. 改进CoT生成质量:研究中提到了使用教师模型生成CoT,但并未深入探讨如何改进生成的CoT质量。研究者可以探索如何通过迭代提示或反馈机制来提高CoT的准确性和连贯性。
    5. 理解CoT增强蒸馏的内在机制:尽管论文提供了一些见解,但对于CoT增强蒸馏如何提升模型性能的内在机制仍需更深入的理解。
    6. 对抗性攻击和鲁棒性:论文中提到了CoT的鲁棒性问题,未来的研究可以进一步探索CoT增强模型对抗性攻击的能力和鲁棒性。
    7. 实际应用场景的测试:将CoT增强蒸馏应用于实际应用场景,如医疗诊断、法律分析等,以评估其在现实世界问题中的有效性。
    8. 模型解释性与可解释性:研究CoT增强蒸馏对模型可解释性的影响,以及如何利用CoT提高模型的透明度和解释性。
    9. 跨领域知识迁移:探索CoT增强蒸馏在跨领域知识迁移中的潜力,例如,将一个领域学习到的知识迁移到另一个不同的领域。
    10. 优化和自动化CoT选择过程:研究如何自动化和优化选择CoT中关键令牌的过程,以减少人工干预并提高效率。

    这些方向可以帮助研究者更全面地理解CoT增强蒸馏,并探索其在更广泛场景中的应用潜力。

    Q: 总结一下论文的主要内容

    A: 这篇论文《Investigating Mysteries of CoT-Augmented Distillation》主要研究了在模型蒸馏过程中使用“思维链”(Chain of Thought, CoT)增强的方法来提升学生模型性能的机制。以下是论文的主要内容总结:

    1. 研究背景:CoT是一种能够显著提升大型语言模型(LLM)在问答等任务上性能的技术。最近的研究表明,CoT也可用于模型蒸馏,即通过在微调过程中加入从大型教师模型中提取的CoT序列,来提升小型学生模型的性能。
    2. 研究问题:论文探讨了为什么CoT增强蒸馏能够提升学生模型的性能,以及这种提升是如何实现的。
    3. 实验设计:通过从大型教师模型中提取CoT,并将其作为额外的训练信号加入到学生模型的训练目标中,研究者进行了一系列的消融实验。
    4. 关键发现
      • CoT序列放置在目标标签之后(后缀CoT)比放置之前(前缀CoT)能更有效地提升学生模型的性能。
      • 即使CoT序列的令牌顺序被打乱,只要它们被附加到目标标签之后,学生模型的性能仍然可以得到提升。
      • 通过集成梯度等方法识别出的CoT中的一小部分关键令牌,就足以实现与完整CoT序列相同的性能提升。
    5. 实验方法:使用了三个小型学生语言模型(GPT-2, Phi-1.5, 和 Gemma-2B)进行实验,并在三个常识推理数据集上进行了评估。
    6. 模型信心分析:通过分析模型在不同层次和时间步的信心水平,发现后缀CoT能够使学生模型更快地获得高置信度的预测。
    7. 计算量的影响:研究了额外计算步骤是否能够提供与CoT增强相同的性能提升,发现仅仅增加计算步骤并不能替代CoT中的有用信息。
    8. 理性序列连贯性:通过打乱CoT令牌的顺序,发现在目标标签之后的CoT序列不需要连贯也能提升性能。
    9. 关键令牌的作用:通过集成梯度和人类标注来识别关键令牌,并发现这些关键令牌足以实现性能提升。
    10. 结论:论文得出结论,CoT增强蒸馏的关键在于将CoT序列作为额外的训练信号,而不需要学生模型在推理时生成完整的CoT。
    11. 局限性和伦理声明:论文讨论了研究的局限性,包括使用的是公开可用的数据集和模型,以及可能存在的偏见和解释性问题。
    12. 相关工作:论文回顾了与CoT增强蒸馏相关的其他研究,并讨论了其与本文研究的联系。

    论文通过这些研究,为理解和改进使用CoT增强蒸馏的方法提供了深入的见解,并指出了未来研究的潜在方向。


  • 当抽象弊大于利时:我们在生产环境中使用 LangChain 的教训以及我们应该做的

    当抽象弊大于利时:我们在生产环境中使用 LangChain 的教训以及我们应该做的

    作为一名资深科技专栏作家,我最近关注到人工智能领域的一个有趣现象:越来越多的开发者开始质疑框架的必要性。Octomind 公司的深度学习工程师 Fabian Both 近期发表了一篇博文,分享了他们团队在构建 AI 代理时放弃 LangChain 框架的心路历程,这篇文章引发了我的思考。

    LangChain 的诱惑与困境

    Octomind 团队最初选择 LangChain 的原因很简单:它提供了一系列令人印象深刻的组件和工具,并且在当时非常流行。正如 LangChain 的承诺那样,它似乎可以让开发者“在一个下午的时间里,从一个想法变成可运行的代码”。然而,随着 Octomind 团队需求的不断提高,LangChain 的弊端也逐渐显现。

    Both 指出,LangChain 最初在满足简单需求方面表现出色,但其高层抽象很快使得代码变得难以理解和维护。他以一个简单的翻译任务为例,展示了 LangChain 如何增加了代码的复杂性,却没有带来明显的好处。

    以下是使用 OpenAI 包的 Python 代码示例:

    from openai import OpenAI
    
    client = OpenAI(api_key="<your_api_key>")
    text = "hello!"
    language = "Italian"
    
    messages = [
        {"role": "system", "content": "You are an expert translator"},
        {"role": "user", "content": f"Translate the following from English into {language}"},
        {"role": "user", "content": f"{text}"},
    ]
    
    response = client.chat.completions.create(model="gpt-4o", messages=messages)
    result = response.choices[0].message.content

    以下是使用 LangChain 的 Python 代码示例:

    from langchain_openai import ChatOpenAI
    from langchain_core.output_parsers import StrOutputParser
    from langchain_core.prompts import ChatPromptTemplate
    
    os.environ["OPENAI_API_KEY"] = "<your_api_key>"
    text = "hello!"
    language = "Italian"
    
    
    prompt_template = ChatPromptTemplate.from_messages(
        [("system", "You are an expert translator"),
            ("user", "Translate the following from English into {language}"),
            ("user", "{text}")]
    )
    
    parser = StrOutputParser()
    chain = prompt_template | model | parser
    result = chain.invoke({"language": language, "text": text})

    Both 认为,LangChain 在这个例子中引入的“提示模板”、“输出解析器”和“链”等抽象概念,实际上增加了代码的复杂性,却没有带来任何实际价值。

    抽象的代价:速度与灵活性

    Both 进一步指出,LangChain 的高层抽象限制了团队的迭代速度和灵活性。当他们试图构建更复杂的 AI 代理时,LangChain 框架成为了绊脚石。

    例如,当 Octomind 团队希望根据业务逻辑动态更改 AI 代理可以访问的工具时,他们发现 LangChain 无法满足这一需求。最终,他们不得不放弃 LangChain,转而采用更灵活的模块化构建块方法。

    模块化构建块:大道至简

    Both 认为,在大多数情况下,开发者并不需要像 LangChain 这样复杂的框架来构建 AI 应用。他建议采用模块化构建块的方法,只使用少量经过精心挑选的外部软件包,保持架构精简。

    他列举了构建 AI 应用所需的核心组件:

    • 用于 LLM 通信的客户端
    • 用于函数调用的函数/工具
    • 用于 RAG 的向量数据库
    • 用于跟踪和评估的可观测性平台

    通过将这些模块化的构建块组合在一起,开发者可以构建出灵活且易于维护的 AI 应用。

    结论:拥抱简单,回归本质

    Octomind 团队放弃 LangChain 的故事,为我们敲响了警钟:在 AI 领域,抽象并不总是有益的。过度的抽象可能会导致代码复杂、难以维护,并最终阻碍创新。

    正如 Both 所说:“在大多数情况下,你对 LLM 的使用将是简单而直接的。你主要是在编写顺序代码,迭代提示,并提高输出的质量和可预测性。大多数任务都可以通过简单的代码和相对较少的外部软件包来完成。”

    因此,在构建 AI 应用时,我们应该始终牢记“大道至简”的原则,避免过度依赖框架,而是专注于解决实际问题。

    参考文献

    • Both, F. (2024). Why we no longer use LangChain for building our AI agents. Octomind Blog. Retrieved from https://www.octomind.dev/blog/why-we-no-longer-use-langchain-for-building-our-ai-agents
  • 黄巢:暴君还是英雄?

    黄巢,一个在历史中充满争议的人物。他领导的起义,被认为是唐朝灭亡的导火索之一。然而,这场起义究竟是残暴的掠夺,还是对千年毒瘤的根除?本文将带您重新审视黄巢起义,探寻其背后的历史真相。

    门阀政治:古代中国的“种姓制度”?

    要理解黄巢起义,首先要了解当时中国社会的背景——门阀政治。自两汉时期开始,官员选拔就形成了“举孝廉”制度,这种看似公平的制度,却为门阀士族的壮大提供了温床。官员之间互相推荐,导致官位长期被少数家族垄断,底层百姓几乎没有上升通道。

    正如文中所说:“上品无寒门,下品无世族”。这种现象,与印度的种姓制度何其相似!

    以“弘农杨氏”为例,其始祖杨喜,仅仅因为在追杀项羽时抢到一条胳膊,就被封为侯爵,其家族也因此繁衍壮大,最终成为中原地区势力最大的家族之一。

    隋唐时期,门阀士族势力达到顶峰,甚至连皇权更迭,也成为他们权力博弈的工具。这些家族拥有大量土地,却不用纳税,过着奢靡的生活,而底层百姓却生活在水深火热之中,甚至沦为奴隶,永无翻身之日。

    黄巢起义:对门阀政治的致命一击

    黄巢出身底层,深受门阀制度之害。他多次参加科举,却屡屡碰壁,最终看透了这个“上品无寒门”的黑暗现实。正如他诗中所写:“待到秋来九月八,我花开后百花杀,冲天香阵透长安,满城尽带黄金甲”。他要用自己的方式,打破这个不公平的社会。

    公元880年,黄巢率领起义军攻入长安,将城内的门阀士族诛杀殆尽,就连李唐皇室也未能幸免。正如文中所描述的,当时的景象令权贵们震惊不已,因为在此之前,即使是安禄山这样的枭雄,也不敢对门阀士族轻举妄动。

    诗人韦庄目睹了这一切,写下了“内库烧为锦绣灰,天街踏尽公卿骨!”的诗句,生动地描绘了当时长安城的混乱景象。

    黄巢起义的影响:打破门阀,开启新时代

    黄巢起义虽然最终失败,但其影响却极其深远。这场起义沉重打击了延续数百年的门阀政治,为寒门子弟打开了上升通道,也为后世“取士不问家世,婚姻不问门第”的社会风气奠定了基础。

    正如文中所说:“从黄巢起义算起,中华大地上才真正开始实现‘取士不问家世,婚姻不问门第’”。

    结语:功过是非,留待后人评说

    黄巢的一生充满了传奇色彩,他的起义虽然伴随着暴力和杀戮,但也对中国社会产生了深远影响。他究竟是残暴的屠夫,还是时代的英雄?这个问题或许永远没有答案。但不可否认的是,黄巢起义,是古代中国社会发展进程中的一次重要转折点。

    参考文献

    • 历史超有料. (2024-06-21). 黄巢杀人百万,用人肉当军粮,为啥还有人纪念他?. 微信公众号.

    声明: 本文部分内容摘录自参考文献,并进行了一定的改写和补充。

  • 当 Transformer 遇上状态空间模型:结构化状态空间对偶性揭秘

    近年来,深度学习领域取得的巨大成功离不开 Transformer 架构的贡献,尤其是在语言建模方面。然而,随着模型规模的不断扩大,Transformer 的二次时间复杂度成为了其进一步发展的瓶颈。与此同时,状态空间模型(SSM),例如 Mamba,展现出与 Transformer 相媲美甚至更优的性能,并且在中小规模模型上具有线性时间复杂度优势。

    本文将深入探讨 Transformer 与 SSM 之间的联系,并提出一个全新的理论框架——结构化状态空间对偶性(SSD)。该框架揭示了 SSM 与各种注意力变体之间的密切关系,并通过对结构化半可分矩阵的不同分解方式建立了联系。基于 SSD 框架,我们设计了一种全新的架构——Mamba-2,其核心层是对 Mamba 选择性 SSM 的改进,速度提升了 2-8 倍,同时在语言建模方面仍然可以与 Transformer 竞争。

    Transformer 与 SSM 的前世今生

    Transformer:深度学习的明星架构

    Transformer,特别是仅解码器模型(例如 GPT、Llama),以其强大的序列建模能力成为了现代深度学习成功的关键驱动力之一。然而,其核心注意力层的二次时间复杂度问题一直是研究者们努力攻克的难题。

    状态空间模型:线性复杂度的挑战者

    结构化状态空间模型(SSM)作为一种新兴的序列模型,在长程任务(例如 S4)中表现出色,并且最近在中小型语言建模任务中与 Transformer 达到或超过了 Transformer 的性能(例如 Mamba)。SSM 具有线性时间复杂度,在训练和推理过程中效率更高。

    结构化状态空间对偶性:架起沟通的桥梁

    为了更好地理解和改进 SSM,我们提出了结构化状态空间对偶性(SSD)框架,该框架通过结构化矩阵的抽象概念将 SSM 与注意力变体联系起来。

    结构化矩阵:SSD 框架的核心

    结构化矩阵的定义和性质

    结构化矩阵是指具有以下两个特性的矩阵:

    1. 可以通过压缩表示以亚二次(理想情况下是线性)参数表示。
    2. 具有快速算法(最重要的是矩阵乘法),可以直接对其压缩表示进行操作。

    半可分矩阵:SSM 的矩阵表示

    半可分矩阵是一种重要的结构化矩阵,其定义为:矩阵下三角部分中的每个子矩阵的秩最多为 N,其中 N 称为半可分矩阵的阶数或秩。

    本文证明了 SSM 与半可分矩阵之间的等价性,并通过半可分矩阵的顺序半可分(SSS)表示形式建立了联系。

    定理 3.5:状态大小为 N 的状态空间模型变换 y = SSM(A, B, C)(x) 与通过 N 阶半可分矩阵(以 SSS 表示形式)进行矩阵乘法 y = SSS(A, B, C) · x 相同。

    基于结构化矩阵算法的 SSM 计算

    通过将 SSM 视为半可分矩阵,我们可以利用结构化矩阵乘法算法来高效地计算 SSM。

    线性(递归)模式:利用 SSM 的递归形式,可以以线性时间复杂度计算 SSM。

    二次(朴素)模式:直接计算 SSM 的矩阵表示,时间复杂度为二次,但对于短序列长度,由于计算模式的硬件友好性,这种方法可能比线性算法更有效。

    结构化掩码注意力:线性注意力的推广

    注意力框架

    注意力机制的核心是为序列中每对位置分配分数,从而使每个元素能够“关注”其他元素。最常见的注意力变体是 softmax 自注意力,其定义为:

    Y = softmax(QKᵀ) · V

    线性注意力

    线性注意力通过将 softmax 折叠到核特征映射中,并利用矩阵乘法的结合律来重写注意力计算,从而避免了 softmax 的计算。

    命题 4.1:自回归核注意力(即具有因果掩码的掩码核注意力)可以通过每次步骤花费恒定时间的递归以 O(T) 时间计算。

    结构化掩码注意力

    结构化掩码注意力(SMA)将线性注意力推广到使用任何结构化掩码 L 的情况,只要 L 具有亚二次矩阵乘法即可。

    定义 4.2:结构化掩码注意力(SMA)(或简称结构化注意力)定义为对查询/键/值 Q, K, V 以及任何结构化矩阵 L(即具有亚二次矩阵乘法)的函数,通过四路张量收缩:

    Y = contract(TN, SN, SP, TS → TP)(Q, K, V, L)

    状态空间对偶性:SSM 与 SMA 的交汇

    标量-单位结构化 SSM

    当 SSM 中的 A 矩阵是标量时,其朴素二次计算可以看作是核注意力的一种实例。

    1-半可分结构化掩码注意力

    当 SMA 中的掩码 L 是 1-半可分矩阵时,其线性计算形式是状态空间模型的一种特例。

    推论 5.1:1-SS SMA(具有 1-半可分结构化矩阵 L 的掩码注意力)(15)是对角 SSM(8)的一种特例,其中对角矩阵是单位矩阵的标量倍数。

    定理 5.2:对于任何作为有界阶自回归过程的结构化掩码注意力(定义 4.2)实例,结构化掩码 L 必须是半可分矩阵。

    结构化状态空间对偶性

    SSD 框架揭示了 SSM 与 SMA 之间的对偶关系,其中线性 SSM 算法和二次核注意力算法是彼此的对偶形式。

    SSD 模型的硬件高效算法

    块分解

    为了高效地计算 SSD 模型,我们采用了一种块分解方法。将矩阵 M 分解成大小为 Q × Q 的子矩阵的 T/Q × T/Q 网格,其中 Q 是块大小。对角块可以使用二次 SMA 模式高效计算,而离对角块可以利用半可分矩阵的秩结构分解为更小的递归。

    计算成本

    SSD 算法的计算成本与线性 SSM 相同,但其硬件友好性与注意力机制相当,主要使用矩阵乘法。

    定理 6.1:考虑状态扩展因子为 N 且头部维度为 P = N 的 SSD 模型。存在一种算法,可以在任何输入 X ∈ R(T,P) 上计算模型,该算法仅需要 O(TN²) 训练 FLOP、O(TN) 推理 FLOP、O(N²) 推理内存,并且其工作量主要由矩阵乘法决定。

    Mamba-2 架构

    块设计

    Mamba-2 架构对 Mamba-1 块进行了一些修改,这些修改部分是受注意力机制的启发,也是为了提高 Mamba-2 的可扩展性。

    并行参数投影:Mamba-2 在块的开头使用单个投影并行生成 A, X, B, C,这与标准注意力架构类似,其中 X, B, C 对应于并行创建的 Q, K, V 投影。

    额外的归一化:为了提高稳定性,在最终输出投影之前添加了一个额外的归一化层(例如 LayerNorm、GroupNorm 或 RMSNorm)。

    多头模式

    类似于多头注意力,Mamba-2 也采用了多头模式,其中状态大小 N 和头部维度 P 分别类似于注意力的 QK 头部维度和 V 头部维度。

    多输入 SSM (MIS) / 多值注意力 (MVA) 模式:Mamba-2 使用 MVA 模式,其中 BC 矩阵(对应于注意力中的 KQ)在输入 X 的所有通道(对应于注意力中的 V)之间共享。

    其他 SSD 扩展

    SSD 还可以结合线性注意力文献中的其他思想,例如各种形式的核近似。

    核注意力近似 softmax 注意力:Mamba-2 中包含一个灵活的核特征映射,并将其应用于 BC 分支(对应于注意力中的 KV 分支)。

    合并归一化(分母)项:可以通过在 X 中添加一个额外的列 1 来找到分母项,从而得到形状为 (T, P + 1) 的张量。

    实验验证

    关联回忆

    在多查询关联回忆(MQAR)任务中,Mamba-2 表现出色,并且随着状态大小的增加,性能持续提高。

    语言建模

    在标准语言建模任务中,Mamba-2 在困惑度和零样本评估方面与其他架构相比具有竞争力。

    速度基准

    SSD 算法比 Mamba 的扫描实现快 2-8 倍,并且在中等序列长度下与优化的注意力机制相当。

    相关工作和讨论

    状态空间模型

    SSD 可以描述为具有 SISO 维度和标量-单位结构的选择性 SSM。

    结构化矩阵

    SSD 框架将 SSM 视为具有特定结构的矩阵混合器——半可分矩阵。

    (线性)注意力

    SSD 与标准(因果)注意力的主要区别在于:

    1. SSD 不使用 softmax 激活函数。
    2. SSD 将 logits 矩阵乘以一个输入相关的 1-半可分掩码。

    相关模型

    最近出现了一些与 Mamba 和 Mamba-2 非常相似的序列模型,例如 RetNet、TransNormerLLM、GateLoop、Gated Linear Attention (GLA)、HGRN、Griffin、xLSTM 和 RWKV(-4)。

    结论

    SSD 框架为理解和改进 SSM 提供了一个新的视角,并为设计更高效、更强大的序列模型开辟了新的方向。

    参考文献

    • Dao, T., Gu, A., et al. (2019). M2: A high-performance monarch matrix multiplication library. In Proceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization (CGO) (pp. 174–185).
    • Gu, A., Goel, K., & Ré, C. (2022). Efficiently Modeling Long Sequences with Structured State Spaces. In International Conference on Learning Representations.
    • Gu, A., & Dao, T. (2023). Mamba: Linear-Complexity Attention with Selective State Spaces. arXiv preprint arXiv:2307.00855.
    • Katharopoulos, A., Vyas, A., Pappas, N., & Fleuret, F. (2020). Transformers are rnns: Fast autoregressive transformers with linear attention. In International Conference on Machine Learning (pp. 5156–5165). PMLR.
    • Pernet, C., & Storjohann, A. (2018). Time and space efficient generators for quasiseparable matrices. Journal of Symbolic Computation, 85, 224–246.
    • Sun, Y., Dehghani, M., et al. (2023). Retentive Network: A Successor to Transformer for Large Language Models. arXiv preprint arXiv:2307.08621.

  • 化解信息迷航:让AI轻松应对海量文本挑战

    近年来,人工智能(AI)发展日新月异,尤其是大型语言模型(LLM)的出现,例如ChatGPT,更是让人们看到了AI在理解和生成人类语言方面惊人的潜力。然而,即使强大的LLM也面临着一个巨大的挑战:如何高效地处理海量文本信息?

    想象一下,当你面对浩如烟海的文献资料,需要从中寻找特定问题的答案时,是不是常常感到力不从心?LLM也面临着同样的困境。传统的LLM受限于“内存”大小,只能处理有限长度的文本,面对过长的文本就会像迷失在信息海洋中一样,难以抓住重点,更不用说从中提取有效信息并进行推理了。

    为了解决这个问题,科学家们提出了各种各样的方法,例如优化LLM的内部结构,或是借助外部工具帮助LLM检索信息。然而,这些方法要么效果有限,要么成本高昂,难以满足实际应用的需求。

    最近,一种名为GraphReader的全新系统横空出世,为解决LLM的“阅读障碍”带来了新的希望。

    GraphReader的工作原理是什么?

    简单来说,GraphReader就像一位高效的“阅读助手”,它可以将海量文本信息转化为一张结构清晰的“知识地图”,并指导LLM在这张地图上精准地找到目标信息。

    具体来说,GraphReader的工作流程可以分为以下几个步骤:

    1. 绘制地图: 首先,GraphReader会将长篇文本分割成多个小的片段,并从中提取出关键信息,例如人物、事件、地点等等。然后,它会根据这些关键信息之间的关系,将它们连接起来,形成一张类似于“思维导图”的知识图谱。
    2. 制定计划: 当用户提出问题后,GraphReader会先分析问题的类型和关键信息,然后制定一个合理的“阅读计划”,明确需要重点关注哪些信息。
    3. 精准导航: GraphReader会根据“阅读计划”,引导LLM在这张“知识地图”上进行有目的的探索,避免LLM在海量信息中迷失方向。
    4. 信息整合: LLM在探索过程中,会将收集到的相关信息记录下来,并最终整合这些信息,生成最终的答案。

    GraphReader的优势是什么?

    • 高效处理海量文本: GraphReader能够将长文本转化为结构化的知识图谱,帮助LLM快速定位关键信息,从而突破传统LLM在文本长度上的限制。
    • 提升推理能力: GraphReader引导LLM进行有目的的探索,避免了无关信息的干扰,从而提高了LLM的推理效率和准确性。
    • 降低计算成本: 相比于其他方法,GraphReader的计算成本更低,更容易应用于实际场景。

    GraphReader的应用前景

    GraphReader的出现为LLM处理海量文本信息提供了一种全新的思路,未来有望应用于各种需要处理长文本的场景,例如:

    • 智能客服: 帮助客服机器人更准确地理解用户问题,并给出更详细的解答。
    • 文献检索: 帮助研究人员快速从海量文献中找到所需的信息。
    • 新闻摘要: 自动生成简洁准确的新闻摘要,帮助读者快速了解新闻内容。

    总而言之,GraphReader的出现是LLM发展历程上的一个重要里程碑,它将帮助LLM突破自身局限,更好地理解和应用人类的知识,为我们带来更加智能化的未来。