分类: AGI

  • MetaGPT:将人类工作流程融入多智能体协作框架的元编程

    近年来,基于大型语言模型(LLMs)的智能体社会在自动问题解决方面取得了显著进展。现有的LLM驱动的多智能体系统已经能够解决简单的对话任务,但对于更复杂的任务,由于LLMs链式联接导致的级联幻觉,逻辑不一致问题会变得更加复杂。

    本文介绍了MetaGPT,这是一种创新的元编程框架,它将高效的人类工作流程融入LLM驱动的多智能体协作中。MetaGPT将标准操作程序(SOPs)编码成提示序列,以实现更简化的工作流程,从而使具有类似人类领域专业知识的智能体能够验证中间结果并减少错误。MetaGPT利用流水线模式为不同的智能体分配不同的角色,将复杂的任务有效地分解成多个智能体协同完成的子任务。在协作软件工程基准测试中,MetaGPT生成的解决方案比之前的基于聊天的多智能体系统更加连贯。

    LLM驱动的多智能体系统的局限性

    现有的LLM驱动的多智能体系统(Park et al., 2023; Zhuge et al., 2023; Cai et al., 2023; Wang et al., 2023c; Li et al., 2023; Du et al., 2023; Liang et al., 2023; Hao et al., 2023)往往过于简化了现实世界的复杂性,难以实现有效、连贯和准确的问题解决过程,特别是在需要有意义的协作交互时(Zhang et al., 2023; Dong et al., 2023; Zhou et al., 2023; Qian et al., 2023)。

    MetaGPT:借鉴人类工作流程,提升多智能体协作效率

    人类在各种领域(Belbin, 2012; Manifesto, 2001; DeMarco & Lister, 2013)通过广泛的协作实践,发展出了广泛接受的标准操作程序(SOPs)。这些SOPs在支持任务分解和有效协调方面发挥着至关重要的作用。此外,SOPs还概述了每个团队成员的职责,并为中间输出建立了标准。定义明确的SOPs可以提高与定义的角色和质量标准相一致的任务的一致性和准确执行(Belbin, 2012; Manifesto, 2001; DeMarco & Lister, 2013; Wooldridge & Jennings, 1998)。例如,在软件公司中,产品经理使用标准化结构分析竞争和用户需求,以创建产品需求文档(PRDs),指导开发过程。

    MetaGPT借鉴了这种思路,设计了一个基于GPT的元编程框架,该框架从SOPs中受益匪浅。与其他工作(Li et al., 2023; Qian et al., 2023)不同,MetaGPT要求智能体生成结构化的输出,例如高质量的需求文档、设计工件、流程图和界面规范。使用中间结构化输出显著提高了目标代码生成的成功率。更形象地说,在MetaGPT模拟的公司中,所有员工都遵循严格而简化的工作流程,所有交接都必须符合既定的标准。这降低了LLMs之间闲聊导致的幻觉风险,特别是在角色扮演框架中,例如:“你好,你好,你吃午饭了吗?”——爱丽丝(产品经理);“很好!你吃午饭了吗?”——鲍勃(架构师)。

    MetaGPT的核心设计:角色专业化、工作流程和结构化通信

    MetaGPT通过以下几个关键设计,将人类工作流程融入LLM驱动的多智能体协作中:

    角色专业化:将复杂任务分解成子任务

    明确的角色专业化使复杂工作能够分解成更小、更具体的任务。解决复杂的任务或问题通常需要具有不同技能和专业知识的智能体协作,每个智能体都贡献针对特定问题的专门输出。

    在软件公司中,产品经理通常进行面向业务的分析并得出见解,而软件工程师则负责编程。MetaGPT在软件公司中定义了五个角色:产品经理、架构师、项目经理、工程师和QA工程师,如图1所示。在MetaGPT中,我们指定了智能体的配置文件,其中包括每个角色的名称、配置文件、目标和约束。我们还为每个角色初始化了特定的上下文和技能。例如,产品经理可以使用网络搜索工具,而工程师可以执行代码,如图2所示。所有智能体都遵循Yao et al. (2022)中描述的React风格行为。

    每个智能体都监控环境(即MetaGPT中的消息池),以发现重要的观察结果(例如,来自其他智能体的信息)。这些信息可以直接触发操作,也可以帮助完成工作。

    工作流程:明确的任务分配和执行顺序

    通过定义智能体的角色和操作技能,我们可以建立基本的工作流程。在MetaGPT中,我们遵循软件开发中的SOP,使所有智能体能够以顺序方式工作。

    如图1所示,在获得用户需求后,产品经理进行彻底的分析,制定详细的PRD,包括用户故事和需求池。这作为初步的功能分解。结构化的PRD随后传递给架构师,架构师将需求转换为系统设计组件,例如文件列表、数据结构和界面定义。一旦被捕获到系统设计中,这些信息就会被传递给项目经理,用于任务分配。工程师继续执行指定的类和函数,如所概述的(在图2中详细说明)。在接下来的阶段,QA工程师制定测试用例以执行严格的代码质量。在最后一步,MetaGPT生成精心制作的软件解决方案。我们在图3中提供了一个详细的示意图,并在附录B中提供了一个MetaGPT中SOP工作流程的具体实例。

    结构化通信:提高信息传递效率

    大多数当前的LLM驱动的多智能体框架(Li et al., 2023; Zhuge et al., 2023; Zhang et al., 2023; Park et al., 2023)使用无约束的自然语言作为通信接口。

    然而,尽管自然语言用途广泛,但一个问题出现了:纯粹的自然语言通信是否足以解决复杂的任务?例如,在传话游戏(或传声筒)中,经过几轮通信后,原始信息可能会被严重扭曲。受人类社会结构的启发,我们建议使用结构化通信来制定智能体的通信。我们为每个角色建立了一个模式和格式,并要求个人根据其特定角色和上下文提供必要的输出。

    如图3所示,架构师智能体生成两个输出:系统界面设计和序列流程图。这些包含系统模块设计和交互序列,作为工程师的重要交付成果。与ChatDev(Zhao et al., 2023)不同,MetaGPT中的智能体通过文档和图表(结构化输出)而不是对话进行通信。这些文档包含所有必要的信息,防止出现无关或缺失的内容。

    发布-订阅机制:高效的信息共享

    在协作中,共享信息至关重要。例如,架构师和工程师经常需要参考PRDs。然而,在Li et al. (2023); Zhao et al. (2023); Zhang et al. (2023)等先前工作中,每次都以一对一的方式传递这些信息,可能会使通信拓扑变得复杂,导致效率低下。

    为了解决这一挑战,一种可行的方法是将信息存储在全局消息池中。如图2(左)所示,我们引入了一个共享消息池,允许所有智能体直接交换信息。这些智能体不仅在池中发布其结构化信息,还可以透明地访问来自其他实体的信息。任何智能体都可以直接从共享池中检索所需信息,无需询问其他智能体并等待其响应。这提高了通信效率。

    与每个智能体共享所有信息会导致信息过载。在任务执行过程中,智能体通常希望只接收与任务相关的信息,并避免通过无关细节造成干扰。有效管理和传播这些信息至关重要。我们提供了一个简单而有效的解决方案——订阅机制(如图2(左)所示)。智能体利用特定角色的兴趣来提取相关信息,而不是依赖对话。他们可以根据自己的角色配置文件选择要关注的信息。在实际实现中,智能体只有在收到所有先决条件后才会激活其操作。如图3所示,架构师主要关注产品经理提供的PRDs,而来自QA工程师等角色的文档可能不太重要。

    MetaGPT的创新:可执行反馈机制

    在日常编程任务中,调试和优化过程发挥着重要作用。然而,现有的方法通常缺乏自纠正机制,导致代码生成失败。先前的工作引入了不可执行的代码审查和自我反省(Zhao et al., 2023; Yao et al., 2022; Shinn et al., 2023; Dong et al., 2023)。然而,它们在确保代码可执行性和运行时正确性方面仍然面临挑战。

    MetaGPT的最初实现忽略了审查过程中的某些错误,这是由于LLMs的幻觉(Manakul et al., 2023)。为了克服这个问题,在初始代码生成后,我们引入了一个可执行反馈机制,以迭代地改进代码。更具体地说,如图2所示,工程师被要求根据原始产品需求和设计编写代码。

    这使工程师能够使用自己的历史执行和调试内存来不断改进代码。为了获得更多信息,工程师编写并执行相应的单元测试用例,然后接收测试结果。如果令人满意,则启动额外的开发任务。否则,工程师在恢复编程之前调试代码。这个迭代测试过程会持续进行,直到测试通过或达到最大3次重试。

    MetaGPT的实验验证:超越现有方法的性能

    本文通过一系列实验验证了MetaGPT的有效性,包括在HumanEval(Chen et al., 2021a)和MBPP(Austin et al., 2021)等基准测试上的性能评估,以及在自建的SoftwareDev数据集上的性能评估。

    基准测试结果:超越现有方法的性能

    在HumanEval和MBPP基准测试中,MetaGPT的性能超越了所有先前的方法,并在HumanEval基准测试中与GPT-4协作,显著提高了Pass@k。在SoftwareDev数据集上,MetaGPT在几乎所有指标上都优于ChatDev,例如,在可执行性方面,MetaGPT的得分接近4(完美无缺)。此外,MetaGPT的运行时间更短(503秒),明显少于ChatDev。在代码统计和人工修改成本方面,MetaGPT也显著优于ChatDev。尽管MetaGPT需要更多标记(24,613或31,255,而ChatDev为19,292),但它只需要126.5/124.3个标记来生成一行代码,而ChatDev使用248.9个标记。这些结果突出了SOPs在多个智能体之间协作中的优势。此外,我们通过可视化样本(图5)展示了MetaGPT的自主软件生成能力。有关其他实验和分析,请参见附录C。

    消融研究:验证MetaGPT设计的有效性

    为了了解不同角色对最终结果的影响,我们执行了两个涉及生成有效代码和计算平均统计数据的任务。当我们排除某些角色时,会生成不可用的代码。如表3所示,除了工程师之外,添加其他角色始终能提高修改和可执行性。虽然更多角色会略微增加成本,但整体性能明显提高,证明了各种角色的有效性。

    可执行反馈机制的有效性:如图4所示,在MetaGPT中添加可执行反馈,导致HumanEval和MBPP的Pass@1分别显著提高了4.2%和5.4%。此外,表1显示,反馈机制提高了可行性(3.67至3.75)并降低了人工修改成本(2.25至0.83)。这些结果说明了我们设计的反馈机制如何能够生成更高质量的代码。MetaGPT和没有可执行反馈的MetaGPT的额外定量结果如表4和表6所示。

    MetaGPT的未来展望:更智能、更自主的多智能体系统

    本文提出的MetaGPT为构建更智能、更自主的多智能体系统开辟了新的可能性,例如:

    • 自改进机制: MetaGPT可以从每个软件项目的经验中学习,不断改进自身的能力,例如,通过分析每个项目的反馈信息,不断优化每个智能体的约束提示,使它们能够从过去的项目经验中不断学习,并通过改进每个公司成员来增强整个多智能体系统。
    • 多智能体经济: MetaGPT可以构建一个类似于真实世界软件公司的多智能体经济,每个智能体提供不同的服务,并根据其贡献获得相应的奖励,从而实现更加灵活和自组织的协作。

    MetaGPT的出现,标志着LLM驱动的多智能体系统发展的新阶段,它将人类工作流程融入多智能体协作框架,为解决现实世界中的复杂问题提供了新的思路和方法。

    参考文献

    • Park, Joon Sung, Joseph C O’Brien, Carrie J Cai, Meredith Ringel Morris, Percy Liang, and Michael S Bernstein. “Generative Agents: Interactive Simulacra of Human Behavior.” arXiv preprint arXiv:2304.03442, 2023.
    • Zhuge, Mingchen, Haozhe Liu, Francesco Faccio, Dylan R Ashley, R´obert Csord´as, Anand Gopalakrishnan, Abdullah Hamdi, Hasan Abed Al Kader Hammoud, Vincent Herrmann, Kazuki Irie, et al. “Mindstorms in Natural Language-Based Societies of Mind.” arXiv preprint arXiv:2305.17066, 2023.
    • Cai, Tianle, Xuezhi Wang, Tengyu Ma, Xinyun Chen, and Denny Zhou. “Large Language Models as Tool Makers.” arXiv preprint arXiv:2303.17823, 2023.
    • Wang, Guanzhi, Yuqi Xie, Yunfan Jiang, Ajay Mandlekar, Chaowei Xiao, Yuke Zhu, Linxi Fan, and Anima Anandkumar. “Voyager: An Open-Ended Embodied Agent with Large Language Models.” arXiv preprint arXiv:2303.02079, 2023a.
    • Wang, Zhenhailong, Shaoguang Mao, Wenshan Wu, Tao Ge, Furu Wei, and Heng Ji. “Unleashing Cognitive Synergy in Large Language Models: A Task-Solving Agent Through Multi-Persona Self-Collaboration.” arXiv preprint arXiv:2303.03740, 2023c.
    • Li, Guohao, Hasan Abed Al Kader Hammoud, Hani Itani, Dmitrii Khizbullin, and Bernard Ghanem. “Camel: Communicative Agents for” Mind” Exploration of Large Scale Language Model Society.” arXiv preprint arXiv:2303.01885, 2023.
    • Du, Yilun, Shuang Li, Antonio Torralba, Joshua B. Tenenbaum, and Igor Mordatch. “Improving Factuality and Reasoning in Language Models Through Multiagent Debate.” arXiv preprint arXiv:2210.11211, 2023.
    • Liang, Tian, Zhiwei He, Wenxiang Jiao, Xing Wang, Yan Wang, Rui Wang, Yujiu Yang, Zhaopeng Tu, and Shuming Shi. “Encouraging Divergent Thinking in Large Language Models Through Multi-Agent Debate.” arXiv preprint arXiv:2303.02292, 2023.
    • Hao, Rui, Linmei Hu, Weijian Qi, Qingliu Wu, Yirui Zhang, and Liqiang Nie. “ChatLLM Network: More Brains, More Intelligence.” arXiv preprint arXiv:2302.08580, 2023.
    • Zhang, Hongxin, Weihua Du, Jiaming Shan, Qinhong Zhou, Yilun Du, Joshua B Tenenbaum, Tianmin Shu, and Chuang Gan. “Building Cooperative Embodied Agents Modularly with Large Language Models.” arXiv preprint arXiv:2302.03648, 2023.
    • Dong, Yihong, Xue Jiang, Zhi Jin, and Ge Li. “Self-Collaboration Code Generation via ChatGPT.” arXiv preprint arXiv:2302.01600, 2023.
    • Zhou, Shuyan, Frank F Xu, Hao Zhu, Xuhui Zhou, Robert Lo, Abishek Sridhar, Xianyi Cheng, Yonatan Bisk, Daniel Fried, Uri Alon, et al. “WebArena: A Realistic Web Environment for Building Autonomous Agents.” arXiv preprint arXiv:2301.07752, 2023.
    • Qian, Chen, Xin Cong, Cheng Yang, Weize Chen, Yusheng Su, Juyuan Xu, Zhiyuan Liu, and Maosong Sun. “Communicative Agents for Software Development.” arXiv preprint arXiv:2211.11231, 2023.
    • Belbin, R.M. Team Roles at Work. Routledge, 2012.
    • Manifesto, Agile. “Manifesto for Agile Software Development.” Snowbird, UT, 2001.
    • DeMarco, T. and Lister, T.R. Peopleware: Productive Projects and Teams. Addison-Wesley, 2013.
    • Wooldridge, Michael, and Nicholas R. Jennings. “Pitfalls of Agent-Oriented Development.” In Proceedings of the Second International Conference on Autonomous Agents, 1998.
    • Yao, Shunyu, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, and Yuan Cao. “REACT: Synergizing Reasoning and Acting in Language Models.” arXiv preprint arXiv:2110.02400, 2022.

  • 重温被Mamba带火的SSM:线性系统和HiPPO矩阵

    近年来,深度学习领域涌现出许多新的模型架构,其中状态空间模型(SSM,State Space Model)因其优雅的数学性质和强大的表达能力,逐渐成为Transformer的强劲对手。而Mamba,作为SSM最新的变体,更是凭借其在长序列建模上的优异表现,吸引了众多研究者的关注。

    本文将带您深入了解SSM的核心概念,并重温其重要奠基之作——HiPPO(High-order Polynomial Projection Operators)。通过HiPPO的推导,您可以理解线性系统在SSM中的重要性,以及它如何通过有限维的向量来储存无限维的函数信息。

    线性系统:简单而强大的表达能力

    SSM的核心思想是利用线性微分方程(ODE)系统来建模序列数据。一个典型的线性 ODE 系统可以表示为:

    $$
    \frac{dh}{dt} = Ah + Bu
    $$

    其中,$h$ 代表系统的状态,$u$ 代表输入,$A$ 和 $B$ 是模型参数。

    那么,为什么SSM会选择线性系统呢?答案是:线性系统既足够简单,也足够复杂。

    简单是指,线性化通常是复杂系统的一个最基本近似。而复杂是指,即使是如此简单的系统,也可以拟合异常复杂的函数。例如,一个简单的线性系统:

    $$
    \frac{dh}{dt} = h
    $$

    其解为 $h(t) = h(0)e^t$。这意味着,只要时间足够长,该线性系统就可以通过指数函数来拟合足够复杂的函数。

    HiPPO:从正交基逼近到线性系统

    HiPPO 为我们提供了一种更本质的理解:当我们试图用正交基去逼近一个动态更新的函数时,其结果就是如上的线性系统。

    假设我们要用一个有限维的向量来储存一段信号 $x(t)$ 的信息。如果我们假设 $x(t)$ 在某点 $t_0$ 阶可导,那么它对应的 $t_0$ 阶泰勒展开式往往是 $x(t)$ 的良好近似。我们可以只储存展开式的系数,从而将 $x(t)$ 压缩为一个有限维向量。

    然而,实际遇到的数据通常无法满足“阶可导”这种苛刻的条件。因此,我们更倾向于使用正交函数基展开,比如傅里叶级数。其系数计算公式为:

    $$
    c_k = \int_{-\infty}^{\infty} x(t)e^{-2\pi ikt} dt
    $$

    通过只保留有限个系数,我们可以将 $x(t)$ 压缩为一个有限维向量。

    接下来,问题难度升级。实际中,$x(t)$ 代表的是持续采集的信号,所以它是不断有新数据进入的。我们需要更新逼近结果来记忆整个信号的历史。

    为了解决这个问题,我们可以将 $x(t)$ 映射到一个有限区间 $[0, T]$,然后计算其在该区间上的傅里叶系数。

    $$
    c_k(T) = \int_{0}^{T} x(t)e^{-2\pi ikt} dt
    $$

    当新的数据进入时,我们可以重新计算系数,从而更新对 $x(t)$ 的逼近。

    通过对系数的导数进行推导,我们可以发现,系数的变化满足一个线性 ODE 系统。这意味着,当我们试图用傅里叶级数去记忆一个实时函数的最邻近窗口内的状态时,结果自然而言地导致了一个线性 ODE 系统。

    HiPPO 矩阵:勒让德多项式的应用

    HiPPO 的核心是选取多项式为基函数。其中,勒让德多项式因其在实数空间中的定义和简化推导过程的优势,成为了 HiPPO 的首选。

    勒让德多项式 $P_n(x)$ 是关于 $x$ 的 $n$ 次函数,定义域为 $[-1, 1]$,满足:

    $$
    \int_{-1}^{1} P_m(x)P_n(x) dx = \frac{2}{2n + 1}\delta_{mn}
    $$

    通过将勒让德多项式作为基函数,并利用其递归公式,我们可以推导出一个恒等式:

    $$
    \frac{d}{dT}P_n(2T/T – 1) = \frac{2n}{T}P_{n-1}(2T/T – 1)
    $$

    利用该恒等式,我们可以得到 HiPPO 矩阵,它描述了系数随时间的变化规律。

    HiPPO 的应用:SSM 的基石

    HiPPO 的结论被后来诸多 SSM 模型所使用,例如 S4 和 Mamba。HiPPO 为我们提供了一种理解 SSM 的全新视角,它揭示了线性系统在 SSM 中的本质意义,以及它如何通过有限维的向量来储存无限维的函数信息。

    总结

    本文以尽可能简单的方式重复了 HiPPO 的主要推导。HiPPO 通过适当的记忆假设,自下而上地导出了线性 ODE 系统,并针对勒让德多项式的情形求出了相应的解析解(HiPPO 矩阵)。其结果被后来诸多 SSM 模型使用,可谓是 SSM 的重要奠基之作。

    参考文献

    [1] https://papers.cool/arxiv/2312.00752
    [2] https://papers.cool/arxiv/2305.13048
    [3] https://papers.cool/arxiv/2307.08621
    [4] https://papers.cool/arxiv/2008.07669
    [5] https://dblp.org/pid/130/0612.html
    [6] https://en.wikipedia.org/wiki/Kronecker_delta
    [7] https://en.wikipedia.org/wiki/Legendre_polynomials
    [8] https://en.wikipedia.org/wiki/Gram–Schmidt_process
    [9] https://en.wikipedia.org/wiki/Chebyshev_polynomials
    [10] https://en.wikipedia.org/wiki/Laguerre_polynomials
    [11] https://proceedings.neurips.cc/paper/2019/file/952285b9b7e7a1be5aa7849f32ffff05-Paper.pdf

  • 重温被Mamba带火的SSM:线性系统和HiPPO矩阵

    作者:苏剑林
    单位:科学空间
    研究方向:NLP、神经网络

    前几天,笔者看了几篇介绍 SSM(State Space Model)的文章,才发现自己从未认真了解过 SSM,于是决定深入学习这一领域,并记录下学习所得。SSM 的概念由来已久,但这里我们特别指深度学习中的 SSM。可以说,2021年的 S4(Structured State Space for Sequence Modeling)是 SSM 的开篇之作,而最近最火的变体大概是去年的 Mamba。

    SSM 的基础与发展

    SSM 的概念并不新鲜,但其在深度学习领域的应用却是近几年的事。当我们谈到 SSM 时,通常指的是一切线性 RNN 模型,如 RWKV、RetNet 以及 Google 推出的 LRU 等。这些模型的目标之一是成为 Transformer 的竞争者,尽管完全替代 Transformer 的可能性不大,但 SSM 本身优雅的数学性质值得深入研究。

    HiPPO 的引入

    在 S4 之前,SSM 的奠基之作是《HiPPO: Recurrent Memory with Optimal Polynomial Projections》(简称 HiPPO)。HiPPO 提出了用正交基逼近动态更新的函数,其结果是一个线性系统。这不仅告诉我们线性系统可以逼近复杂的函数,还提供了具体的逼近方法和近似程度。

    SSM 的基本形式

    对于已经了解 SSM 的读者,SSM 建模所用的线性 ODE 系统公式如下:

    $$
    \dot{x}(t) = A x(t) + B u(t)
    $$

    其中,$x(t)$ 是系统状态,$A$ 和 $B$ 是矩阵,$u(t)$ 是输入信号。

    即使将其离散化,线性 RNN 模型的实质依然是线性系统。这引出了一个自然的问题:为什么选择线性系统?线性系统够用吗?

    答案是肯定的。线性系统既足够简单,也足够复杂。简单是指线性化常常是复杂系统的基本近似;复杂是指即便是简单的线性系统,也可以拟合复杂的函数。

    举个例子,考虑一个简单的线性系统:

    $$
    \dot{x}(t) = \lambda x(t)
    $$

    其解为 $x(t) = x(0) e^{\lambda t}$,这意味着通过组合指数函数和三角函数,线性系统可以拟合复杂的函数。

    有限压缩和函数逼近

    我们考虑区间 $[0, t]$ 内的输入信号 $u(\tau)$,HiPPO 的目标是将其压缩为一个有限维的向量。通过傅里叶级数展开,我们可以将 $u(\tau)$ 压缩为一个有限维向量,但这只适用于静态区间。

    而实际中,我们需要处理的是动态信号 $u(t)$,这就需要将傅里叶级数公式推广到动态情况。具体的方法是通过映射 $t$ 到 $[0, 1]$ 区间,然后计算正交基展开系数,并对其进行动态更新。

    线性系统的本质

    通过傅里叶级数和勒让德多项式等正交多项式展开,我们可以得出线性 ODE 系统的系数动力学。具体来说,当我们用正交基去逼近动态函数时,其结果自然导出一个线性 ODE 系统。

    以勒让德多项式为例,其递归公式和边界值满足条件,能够在实数空间中简化推导过程。通过对函数基的正交化处理,我们得到的系数动力学满足线性 ODE 系统。

    HiPPO 的一般框架

    HiPPO 是一个自下而上的框架,通过正交基逼近函数,导出线性 ODE 系统。它并没有假设系统必须是线性的,而是通过逼近的角度反推出线性系统的能力。

    HiPPO 的主要结论基于勒让德多项式,但也可以扩展到其他正交多项式,如切比雪夫多项式、拉盖尔多项式等。

    结论

    本文通过简单易懂的方式重温了 HiPPO 的主要推导。HiPPO 通过适当的记忆假设,自下而上地导出了线性 ODE 系统,并为 SSM 的发展奠定了基础。尽管 SSM 还在不断发展,其优雅的数学性质和强大的函数逼近能力使其成为深度学习中的重要工具。

    参考文献

    [1] Efficiently Modeling Long Sequences with Structured State Spaces
    [2] Recurrent Memory with Optimal Polynomial Projections
    [3] Legendre Polynomials
    [4] Gram-Schmidt Process
    [5] Kronecker Delta

  • HiPPO矩阵:打开序列模型记忆宝库的金钥匙

    在人工智能领域,如何让机器像人一样拥有记忆,一直是科学家们孜孜以求的目标。近年来,序列模型(SSM)的兴起为解决这一难题带来了新的曙光。而在众多SSM模型中,HiPPO矩阵犹如一把金钥匙,打开了序列模型记忆宝库的大门,为我们理解和应用SSM模型提供了全新的视角。

    在线函数逼近:序列模型的记忆挑战

    许多机器学习任务都需要处理不断涌现的序列数据,例如实时预测时间序列、让智能体在环境中学习和决策等等。这些任务的核心挑战在于如何有效地存储和利用历史信息,即序列模型的“记忆”问题。

    传统的机器学习模型往往受限于固定的上下文窗口或启发式机制,难以有效地捕捉长期依赖关系。例如,注意力机制的上下文窗口大小是固定的,而循环神经网络(RNN)则容易出现梯度消失问题,导致模型难以记住很久以前的信息。

    HiPPO框架:从数学角度解决记忆问题

    为了解决序列模型的记忆问题,HiPPO框架应运而生。HiPPO的全称是“高阶多项式投影算子(High-order Polynomial Projection Operators)”,它从数学角度出发,将序列模型的记忆问题转化为一个在线函数逼近问题。

    HiPPO框架的核心思想是:用一个有限维的向量来表示一个连续函数的历史信息。这听起来似乎是一个不可能完成的任务,因为连续函数包含无限多的信息。然而,HiPPO框架巧妙地利用了正交函数基展开的思想,将连续函数投影到一个有限维的子空间中,从而实现了信息的压缩和存储。

    具体来说,HiPPO框架选择勒让德多项式作为函数基,并根据不同的“记忆假设”,推导出了不同类型的HiPPO矩阵。这些矩阵可以看作是不同类型的“记忆过滤器”,它们决定了模型应该记住哪些历史信息,以及如何记住这些信息。

    两种典型的HiPPO矩阵:LegT和LegS

    HiPPO框架中最具代表性的两种HiPPO矩阵是LegT(Translated Legendre)和LegS(Scaled Legendre)。

    • LegT矩阵:LegT矩阵假设模型只关注最近一段时间内的历史信息,相当于一个滑动窗口。窗口的大小可以通过参数进行调节。
    • LegS矩阵:LegS矩阵理论上可以捕捉所有历史信息,但它存在一个分辨率问题。为了记住更长的历史信息,LegS矩阵需要牺牲信息的细节。

    HiPPO矩阵的意义和应用

    HiPPO矩阵的提出,为我们理解和应用SSM模型提供了以下重要意义:

    1. 揭示了线性系统的强大能力:HiPPO框架证明了线性系统足以拟合非常复杂的函数,为线性SSM模型的应用提供了理论依据。
    2. 阐明了SSM模型的记忆机制:HiPPO矩阵清晰地展示了SSM模型如何存储和利用历史信息,为我们设计和改进SSM模型提供了指导。
    3. 推动了SSM模型的发展:HiPPO矩阵被广泛应用于各种SSM模型中,例如Legendre Memory Unit(LMU)和Mamba等,极大地推动了SSM模型的发展。

    总结

    HiPPO矩阵是SSM模型发展历程中的一个重要里程碑。它不仅为我们提供了一种高效的记忆机制,更重要的是,它为我们理解和应用SSM模型打开了一扇全新的大门。相信随着研究的深入,HiPPO矩阵将在序列模型的未来发展中发挥更加重要的作用。


    参考文献

    1. Gu, A., Dao, T., Ermon, S., Rudra, A., & Ré, C. (2020). HiPPO: Recurrent memory with optimal polynomial projections. Advances in Neural Information Processing Systems, 33, 21964-21976.
    2. 苏剑林. (2024). 重温被Mamba带火的SSM:线性系统和HiPPO矩阵. CSDN博客. https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/139468631
  • 超越单一评分:RichHF-18K数据集和RAHF模型如何用“丰富反馈”提升AI图像生成?

    近年来,Stable Diffusion、Imagen等文生图(T2I)模型在生成高分辨率图像方面取得了显著进步,但生成的图像仍存在不少问题,如图像失真、与文本描述不符、美观度不足等。为了解决这些问题,谷歌和多所高校的研究人员共同创建了包含“丰富反馈”的RichHF-18K数据集,并提出了一种名为RAHF的多模态Transformer模型,旨在更全面、精准地评估和提升AI图像生成质量。

    RichHF-18K:不止于评分的“丰富反馈”

    现有的图像生成评估方法大多依赖单一评分或排序,缺乏细粒度的反馈信息。而RichHF-18K数据集则包含了更为丰富的反馈维度,具体包括:

    • 细粒度评分: 从图像逼真度、文本图像一致性、美观度和整体质量四个方面对图像进行评分。
    • 失真/不一致区域标注: 通过点标注的方式,标记出图像中存在失真/不合理或与文本描述不符的区域。
    • 不一致关键词标注: 标记出文本描述中哪些关键词在生成图像中未被体现或被错误地呈现。

    RAHF模型:学习“丰富反馈”,预测图像质量

    RAHF模型的架构基于ViT和T5X模型,并结合了自注意力机制,能够有效融合图像和文本信息。该模型可以预测图像的失真/不一致区域、不一致关键词以及四个细粒度评分,从而更全面地评估图像生成质量。

    RAHF模型的应用:提升AI图像生成质量

    RAHF模型预测的“丰富反馈”信息可以用于提升AI图像生成质量,例如:

    • 区域修复: 利用预测的失真/不一致区域热力图创建掩码,对问题区域进行修复,生成更逼真的图像。
    • 模型微调: 利用预测的评分筛选高质量训练数据,或将评分作为奖励信号,对图像生成模型进行微调,提升模型的生成效果。

    总结与展望:迈向更智能的AI图像生成

    RichHF-18K数据集和RAHF模型的提出,为AI图像生成领域带来了全新的思路和方法。通过引入“丰富反馈”机制,可以更有效地评估和提升AI图像生成质量,推动AI图像生成技术走向更高的智能化水平。

    当然,这项研究也存在一些局限性,例如:

    • 对不一致区域的标注存在一定的主观性,影响模型预测的准确性。
    • 数据集的规模还有待进一步扩大,以提高模型的泛化能力。

    未来,研究人员将继续探索如何利用“丰富反馈”机制,开发更先进的AI图像生成技术,为用户带来更优质的图像生成体验。

    参考文献:

    • Liang, Youwei, et al. “Rich Human Feedback for Text-to-Image Generation.” arXiv preprint arXiv:2312.10240 (2023).

    CVPR最佳论文解读:RAHF模型如何利用“丰富人类反馈”提升AI图像生成?

    这篇来自加州大学圣地亚哥分校、谷歌研究院等机构的CVPR最佳论文《Rich Human Feedback for Text-to-Image Generation》聚焦于如何利用更丰富的用户反馈来提升AI图像生成技术的质量。

    直击痛点:现有评估方法存在不足

    论文指出,现有的AI图像生成评估方法大多依赖单一评分或排序,缺乏细粒度的反馈信息,难以有效指导模型改进。例如,仅仅告诉模型一张图片“好”或“不好”,并不能让模型真正理解问题所在,更无法针对性地进行优化。

    RAHF模型:捕捉“丰富人类反馈”

    为了解决这一问题,研究团队提出了一种名为RAHF(Rich Automatic Human Feedback)的多模态Transformer模型。该模型能够捕捉更丰富的人类反馈信息,包括:

    • 细粒度评分: 不再局限于单一评分,而是从图像逼真度、文本图像一致性、美观度和整体质量四个方面对图像进行评分。
    • 失真/不一致区域标注: 用户可以通过点标注的方式,直观地告诉模型图像中哪些区域存在失真/不合理或与文本描述不符的问题。
    • 不一致关键词标注: 用户可以标记出文本描述中哪些关键词在生成图像中未被体现或被错误地呈现。

    实验结果:RAHF模型提升图像生成质量

    实验结果表明,RAHF模型能够有效预测用户的“丰富反馈”,并将其用于提升AI图像生成质量。例如:

    • 区域修复: 利用预测的失真/不一致区域热力图,可以对问题区域进行针对性的修复,生成更逼真的图像。
    • 模型微调: 利用预测的评分可以筛选高质量训练数据,或将评分作为奖励信号,对图像生成模型进行微调,提升模型的生成效果。

    总结:迈向更智能的AI图像生成

    RAHF模型的提出,为AI图像生成领域带来了全新的思路和方法。通过捕捉更丰富的用户反馈信息,可以更有效地评估和提升AI图像生成质量,推动AI图像生成技术走向更高的智能化水平。

    未来展望

    研究团队计划公开RichHF-18K数据集,以促进学术界和工业界对“丰富人类反馈”在AI图像生成领域应用的进一步研究。相信在未来,RAHF模型将会在更广泛的领域发挥重要作用,为用户带来更优质的图像生成体验。

  • 哄AI像哄小孩?一句“咒语”让GPT-3准确率暴涨61%!

    最近,机器学习界出现了一项令人震惊的研究成果:仅仅对GPT-3说一句“让我们一步一步地思考”,就能让它解开之前无法解答的难题,准确率瞬间提高61%!这感觉就像幼儿园阿姨哄小朋友一样神奇,难道哄AI也要像哄小孩?

    “一步一步思考”:神奇咒语背后的秘密

    这项由谷歌大脑和东京大学合作的研究发现,简单的提示词可以显著提高GPT-3在零样本学习场景下的推理能力。研究人员将这种方法称为“思维链路提示”(CoT),其核心是通过引导语言模型逐步思考,最终得出正确答案。例如,面对“16个球中有一半是高尔夫球,这些高尔夫球中有一半是蓝色的,一共有几个蓝色的高尔夫球?”这个问题,直接询问GPT-3会得到错误答案“8”。但如果在提问时加上“让我们一步一步地思考”,GPT-3就会先列出解题步骤,最终给出正确答案“4”。

    CoT并非万能药:效果受模型版本、问题类型影响

    研究人员对CoT的效果进行了广泛的测试,结果表明,CoT在大多数情况下都能显著提高GPT-3的准确率,尤其是在数学和常识推理方面。然而,CoT并非万能药,其效果会受到GPT-3版本、问题类型等因素的影响。例如,CoT对GPT-3最新版本Text-davinci-002的效果最佳,对旧版本的提升效果则相对有限。

    从“特征工程”到“提示工程”:AI研究的新方向?

    CoT的成功引发了人们对“提示工程”的关注。一些学者认为,“提示工程”正在取代传统的“特征工程”,成为AI研究的新方向。通过设计巧妙的提示词,可以引导AI更好地理解人类意图,从而提高其性能。未来,”提示词猎人”会不会成为NLP研究者的新头衔?

    结语:哄AI,更需理解AI

    尽管“哄AI像哄小孩”的说法很有趣,但我们不能忽视对AI本身的理解。CoT的成功表明,通过引导AI模拟人类的思维方式,可以有效提高其推理能力。未来,如何设计更有效的提示词,如何将CoT应用于更广泛的领域,将是AI研究的重要课题。

    参考文献:

    • Wei, Jason, et al. “Chain of thought prompting elicits reasoning in large language models.” arXiv preprint arXiv:2205.11916 (2022).
  • 基于 Agent 的大型语言模型:AI 智能体的新时代

    近年来,大型语言模型(LLM)取得了令人瞩目的进展,展现出强大的语言理解和生成能力,被誉为通用人工智能(AGI)的潜在火花。与此同时,AI Agent 的概念也逐渐兴起,成为实现 AGI 的关键步骤。AI Agent 是指能够感知环境、做出决策并采取行动的人工实体。将 LLM 与 Agent 结合,赋予 LLM 更广阔的感知空间和行动空间,将有望构建出更加智能、更加通用的 AI Agent。

    AI Agent 的起源与发展

    从哲学到 AI

    “Agent” 的概念起源于哲学,可以追溯到亚里士多德和休谟等思想家。它描述了拥有欲望、信念、意图和采取行动能力的实体。这个概念后来被引入计算机科学领域,用于描述能够感知环境、做出决策并采取行动的计算实体。

    AI Agent 研究的技术趋势

    AI Agent 的研究经历了多个阶段,从早期的符号 Agent,到反应型 Agent,再到基于强化学习的 Agent,以及具有迁移学习和元学习能力的 Agent。近年来,随着 LLM 的兴起,基于 LLM 的 Agent 逐渐成为研究热点。

    LLM 成为 Agent 大脑的优势

    LLM 非常适合作为 AI Agent 的大脑或控制器的主要组成部分,因为它具备以下关键属性:

    • 自主性:LLM 可以根据环境输入动态调整输出,展现出一定的自适应自主性。
    • 反应性:研究人员已经证明了使用多模态融合技术扩展 LLM 感知空间的潜力,使其能够快速处理来自环境的视觉和听觉信息。
    • 主动性:LLM 具有很强的广义推理和规划能力,可以主动采取行动以实现特定目标或适应环境变化。
    • 社交能力:LLM 强大的自然语言交互能力使其能够以可解释的方式与其他模型或人类进行交互,从而具备社交能力。

    基于 LLM 的 Agent 构建

    大脑:智能体的核心

    大脑是 AI Agent 的核心,主要由 LLM 组成,负责存储知识和记忆,并承担信息处理和决策等不可或缺的功能。它需要具备以下能力:

    • 自然语言交互:理解和生成自然语言,进行多轮对话,并理解隐含的含义。
    • 知识:获取、存储和利用语言知识、常识知识和专业领域知识。
    • 记忆:存储 Agent 过去的观察、想法和行动的序列,并能够有效地检索和利用这些记忆。
    • 推理与规划:进行逻辑推理和规划,将复杂任务分解成更易于管理的子任务。
    • 可迁移性和通用性:适应不熟悉的场景,并能够泛化到未见过的任务。

    感知:拓展感知空间

    感知模块的作用类似于人类的感觉器官,负责将 Agent 的感知空间从仅限文本扩展到多模态空间,包括文本、声音、视觉、触觉、嗅觉等多种感官模态。

    行动:与环境交互

    行动模块负责扩展 Agent 的动作空间,使其能够拥有文本输出,采取具身行动,并使用工具,以便更好地响应环境变化并提供反馈,甚至改变和塑造环境。

    基于 LLM 的 Agent 应用

    单 Agent 的一般能力

    • 面向任务的部署:协助用户解决日常任务,例如在基于文本的游戏场景中执行任务,在 Web 场景中进行 Web 导航,以及在生活场景中完成家务任务。
    • 创新型部署:在科学领域进行自主探索,例如在计算机科学、化学和材料科学等领域进行研究。
    • 面向生命周期的部署:在开放世界环境中持续探索、学习和利用新技能,例如在 Minecraft 等模拟生存环境中进行生存任务。

    多 Agent 的协调潜力

    • 合作交互:多个 Agent 通过合作来实现共同的目标,例如在软件开发任务中进行协作。
    • 对抗性交互:多个 Agent 通过竞争来提高各自的表现,例如在辩论任务中进行对抗。

    人类与 Agent 之间的交互参与

    • 指令者-执行者范式:人类提供指令或反馈,而 Agent 充当执行者,例如在教育、医疗保健等领域担任人类助手。
    • 平等伙伴关系范式:Agent 与人类平等参与互动,例如在游戏领域与人类进行合作或谈判。

    Agent 社会:从个性到社会性

    Agent 行为与人格

    • 社会行为:Agent 可以表现出各种社会行为,例如合作、竞争、模仿、旁观等。
    • 人格:Agent 可以发展出认知能力、情商和性格特征,从而塑造其行为反应。

    Agent 的社会环境

    • 基于文本的环境:Agent 在由自然语言描述的环境中进行操作。
    • 虚拟沙箱环境:Agent 在可视化和可扩展的模拟环境中进行操作。
    • 物理环境:Agent 在真实的物理环境中进行操作。

    社会模拟与 LLM 为基础的 Agent

    通过构建模拟社会,研究人员可以观察 Agent 社会中涌现的社会现象,例如合作、传播、伦理决策等,并从中获得对人类社会的洞察。

    讨论

    LLM 研究和 Agent 研究之间的互惠互利

    LLM 研究和 Agent 研究可以相互促进,LLM 为 Agent 研究提供了强大的基础模型,而 Agent 研究则为 LLM 研究提出了新的挑战和机遇。

    基于 LLM 的 Agent 评估

    评估基于 LLM 的 Agent 的效用、社交性、价值观和持续发展的能力,对于确保其安全、可信和有效至关重要。

    基于 LLM 的 Agent 的安全性、可信度及其他潜在风险

    需要解决基于 LLM 的 Agent 的对抗性鲁棒性、可信度、滥用、失业率和对人类福祉的威胁等潜在风险。

    扩大 Agent 的数量

    扩大 Agent 的数量可以提高任务效率,增强社会模拟的真实性和可信性,但也面临着计算负担、通信挑战和协调难度等挑战。

    开放问题

    • 基于 LLM 的 Agent 是否代表了通往 AGI 的潜在途径?
    • 如何将 Agent 从虚拟仿真环境迁移到物理环境?
    • 如何在 AI Agent 中实现集体智慧?
    • 如何将 Agent 作为服务提供?

    结论

    基于 LLM 的 Agent 是一个充满希望的研究方向,它将 LLM 的强大能力与 Agent 的行动能力相结合,有望构建出更加智能、更加通用的 AI 系统。然而,这个领域也面临着许多挑战和风险,需要研究人员和从业者共同努力,以确保其安全、可信和有效地发展。

    参考文献

    [1] Russell, S. J. Artificial intelligence a modern approach. Pearson Education, Inc., 2010.

    [2] Diderot, D. Diderot’s early philosophical works. 4. Open Court, 1911.

    [3] Turing, A. M. Computing machinery and intelligence. Springer, 2009.

    [4] Wooldridge, M. J., N. R. Jennings. Intelligent agents: theory and practice. Knowl. Eng. Rev.,10(2):115–152, 1995.

    [675] Sun, T., Y. Shao, H. Qian, et al. Black-box tuning for language-model-as-a-service. In K. Chaudhuri, S. Jegelka, L. Song, C. Szepesvári, G. Niu, S. Sabato, eds., International Conference on Machine Learning, ICML 2022, 17-23 July 2022, Baltimore, Maryland, USA, vol. 162 of Proceedings of Machine Learning Research, pages 20841–20855. PMLR, 2022.


  • 大型语言模型的“灾难性遗忘”:指令向量揭示真相,引导训练化解危机

    大型语言模型(LLM)在自然语言处理领域取得了巨大成功,但它们在微调过程中容易出现“灾难性遗忘”问题,即模型在学习新任务时会忘记之前学到的知识。这无疑限制了 LLM 的应用范围,也引发了人们对 LLM 可靠性和可解释性的担忧。本文将深入探讨 LLM 的遗忘机制,并提出一种基于指令向量(IV)的训练方法,有效缓解遗忘问题。

    遗忘的真相:指令理解能力的下降,而非知识遗失

    传统的遗忘研究主要关注模型在不同任务上的性能变化,但对于遗忘的内在机制却知之甚少。本文提出了一种新的视角,将 LLM 的能力分为两类:知识理解能力指令理解能力

    • 知识理解能力是指模型对世界知识的掌握,例如“日本的首都是东京”。这种能力主要体现在模型对文本的理解和生成能力,例如问答、摘要等任务。
    • 指令理解能力是指模型对特定指令的理解和执行能力,例如“从A、B、C、D中选择最佳答案”。这种能力体现在模型对用户意图的理解和执行能力,例如对话、代码生成等任务。

    通过对持续指令微调框架下的实验观察,我们发现:指令理解能力的下降是导致模型遗忘的主要原因,而非知识遗失。

    实验设计: 研究者使用持续指令微调框架,对 LLM 进行了一系列的指令学习任务。每个任务都对应一个特定的指令,例如“翻译成西班牙语”、“生成一段代码”。研究者观察了模型在学习新任务后,其在知识理解和指令理解方面的表现。

    实验结果: 实验结果表明,模型在学习新任务后,其指令理解能力普遍下降,而知识理解能力则相对稳定,甚至有所提升。这说明模型的遗忘主要体现在对新指令的适应能力下降,而非对已学知识的遗忘。

    指令向量:揭示遗忘背后的秘密,洞悉模型内部变化

    为了深入理解遗忘机制,我们提出了指令向量(IV)框架。IV 代表与特定指令相关的模型表征,它可以帮助我们理解模型内部的变化,从而揭示遗忘的内在原因。

    IV 假设: 研究者假设每个指令都对应一个潜在的指令向量 θc,它控制着模型对该指令的理解和执行能力。模型的输出 yc 可以通过一个包含 x、c 和 θc 的计算图来表示:fM(x, c, θc) → yc。

    IV 提取: 研究者使用因果中介分析识别出对模型输出有显著因果影响的注意力头,并将其表征聚合起来,得到相应的 IV。具体而言,研究者首先收集了模型在处理特定指令时,每个注意力头的激活状态。然后,他们通过因果中介分析,识别出对模型输出有显著因果影响的注意力头。最后,他们将这些注意力头的表征聚合起来,得到相应的 IV。

    IV 分析: 研究者通过分析 IV 在训练前后变化,发现了一些重要的现象:

    • IV 的一致性与任务性能相关: 模型在学习新任务时,其隐藏状态与 IV 的相似度越高,任务性能越好。这说明 IV 的激活状态与模型对特定指令的理解能力密切相关。
    • IV 的变化并非遗忘的主要原因: 即使 IV 保持稳定,模型仍然会发生遗忘。这说明模型的遗忘并非源于对 IV 的遗忘,而是源于其他因素。
    • 遗忘源于新学习的推理模式对旧技能的抑制: 微调过程会引入新的推理模式,这些模式可能会压制旧的技能,导致遗忘。研究者通过因果中介分析发现,模型在学习新任务后,其注意力头的激活模式发生了显著变化,这说明模型学习了新的推理模式,而这些新的模式可能会压制旧的技能,导致遗忘。

    指令向量引导训练:缓解遗忘的利器,维护模型原有能力

    基于 IV 分析,研究者提出了一种指令向量引导训练方法,旨在通过维护 IV 相关的计算图来缓解遗忘问题。

    方法:

    1. 渐进式 IV 干预训练: 在训练初期,将 IV 显式地引入模型,并随着训练的进行逐渐降低其影响。这可以帮助模型在学习新任务时,保持对旧指令的理解能力。
    2. IV 基于 KL 散度损失函数: 通过最小化 IV 干预模型与原始模型的输出分布之间的 KL 散度,确保模型的行为与原始计算结构保持一致。这可以帮助模型在学习新任务时,避免过度偏离原有的计算模式。

    实验结果:

    • 指令向量引导训练显著减少了模型对一般能力和推理能力的遗忘。这表明指令向量引导训练可以有效地维护模型的原有能力,防止模型在学习新任务时忘记之前学到的知识。
    • 指令向量引导训练没有损害模型学习新任务的能力。这表明指令向量引导训练可以帮助模型在学习新任务的同时,保持对旧任务的理解能力,不会影响模型的学习能力。
    • 任务复杂度越高,遗忘的可能性越大。这表明指令向量引导训练在处理复杂任务时,其效果更加显著。

    未来展望

    我们的研究为理解 LLM 遗忘机制提供了新的视角,并提出了一种有效的缓解遗忘问题的方法。未来,我们将进一步研究:

    • IV 的可适应性和泛化性: 如何使 IV 能够更好地适应新的知识和任务。
    • IV 的提取方法: 如何利用更先进的优化方法提取更准确和泛化的 IV。
    • 不同模型的遗忘现象: 在更多 LLM 上验证我们的遗忘假设。

    总结

    本文的研究揭示了 LLM 遗忘的内在机制,并提出了一种基于指令向量引导训练的方法,有效缓解遗忘问题。这项研究为理解 LLM 的行为提供了新的视角,也为 LLM 的应用提供了新的思路。

  • 大模型的可控生成:CoDI-Eval 基准测试

    近年来,大型语言模型(LLM)在理解和执行自然语言指令方面展现出惊人的能力,为自然语言处理领域带来了革命性的变革。然而,LLM 并不总是能准确地响应包含特定约束的指令。例如,要求 LLM 生成特定长度的文章摘要或带有特定情感的电子邮件,它们可能无法满足这些要求。因此,评估 LLM 对包含特定约束指令的响应能力至关重要。

    可控文本生成:传统方法的局限性

    可控文本生成(CTG)是指在生成文本时满足特定约束条件的过程。传统 CTG 研究主要集中在离散变量的控制条件上,例如控制文本长度或包含特定关键词。然而,这种方法并不适用于新的指令遵循范式,因为后者需要使用自然语言指令来表达约束条件。这种差异使得传统 CTG 的评估方法无法直接应用于 LLM 或相关应用。

    此外,在现实场景中,指令中的约束条件通常以自由形式的自然语言表达,例如“写一篇关于人工智能的简短文章”。因此,LLM 需要能够理解各种表达方式的约束条件,并生成符合要求的文本。简单地将传统 CTG 任务中的有限约束条件转换为固定模板的自然语言指令并不能满足这一需求。缺乏指令的多样性会阻碍评估 LLM 在泛化场景下的可控文本生成能力,以及与实际用户期望的匹配程度。

    CoDI-Eval:一个新的基准测试

    为了填补这一空白,并推动 LLM 与人类期望更好地对齐的研究,我们提出了 CoDI-Eval(Controllable Generation under Diversified Instructions),一个新的基准测试,用于系统地评估 LLM 的可控生成能力。CoDI-Eval 涵盖了各种 CTG 任务,并使用多样化的自然语言指令来表达约束条件,从而更准确地衡量 LLM 对包含特定约束指令的响应能力。

    CoDI-Eval 在覆盖范围和泛化能力方面都具有优势。在覆盖范围方面,我们选择了五个典型的 CTG 任务,涵盖了情感、主题、长度、关键词和避免毒性等方面。此外,我们还包含了一个多方面控制的任务,同时包含两个方面的约束条件,以测试 LLM 在更具挑战性的复杂场景下的表现。

    在泛化能力方面,我们通过两步流程最大限度地提高了指令的多样性。第一步是“扩展”,使用一个强大的 LLM 生成更多指令,从而构建指令池。第二步是“多样化”,通过对指令进行文本重写,以不同的方式表达相同的约束条件。我们使用 Bootstrap 方法重复第二步,直到达到预期的指令规模。这两个步骤都由 LLM 自动完成,无需人工干预。

    CoDI-Eval 的评估方法

    为了评估 CoDI-Eval,我们为每个 CTG 任务收集或构建了自动化、易于使用且可靠的评估方法。对于无法直接评估的任务,我们借助现有的开源专用模型或外部 API,并证明这些替代方法与人工评估结果一致。每个 CTG 任务的评估指标是准确率,我们使用所有 CTG 任务的平均准确率来衡量不同 LLM 的可控生成能力。

    实验结果

    我们对主流 LLM(例如 ChatGPT、LLaMA2-chat、Vicuna)进行了广泛的评估,结果表明,顶级商业 LLM 在所有 CTG 任务上都取得了最高得分,而我们测试的开源 LLM 在准确率上存在超过 10% 的差距。此外,经过微调的 LLM 表现优于基础语言模型,而那些在更大规模数据上进行微调的模型(例如 LLaMA2-chat、ChatGLM)也比仅经过指令微调的同参数量 LLM(例如 Vicuna、Alpaca)表现更好。

    在不同任务上的表现方面,LLM 在情感和主题控制任务上表现相对较好。然而,当这两个属性组合在一起时,任务难度会增加,所有 LLM 的准确率都未达到 80%。我们以 GPT-3.5-turbo 为例,分析了 LLM 在多方面可控生成任务上出现错误的原因。

    在避免毒性任务中,只有经过对齐微调的 LLM(例如 RLHF)才能在这项任务上表现良好,特别是经过更精细对齐训练的 GPT-4 和 GPT-3.5-turbo。

    在硬约束方面,LLM 在关键词任务上的准确率接近平均准确率。我们分析了 LLM 在复杂关键词 CTG 任务上出现错误的原因。然而,在看似简单的长度 CTG 任务中,即使是 GPT-3.5-turbo 的准确率也只有 55%,这表明大多数 LLM 对长度的感知能力不足。然而,GPT-4 在这项任务上表现出更强的能力。我们计算了 GPT-3.5-turbo 在长度控制生成每个子任务上的准确率,发现准确率与目标长度范围大致呈正相关。

    结论

    本文介绍了 CoDI-Eval,一个用于评估 LLM 可控文本生成能力的新基准测试。我们的基准测试包含一组评估指令,涉及多个 CTG 任务,并使用各种自然语言表达方式来表达约束条件。我们的结果表明,经过指令微调的 LLM 能够执行某些 CTG 任务,但生成文本的准确率还有待提高,特别是对于某些特定的约束条件。我们还观察到开源 LLM 与闭源商业 LLM 之间的性能差距,这为未来的研究指明了方向。

    参考文献

    • Chen, Yihan, et al. “Benchmarking Large Language Models on Controllable Generation under Diversified Instructions.” Proceedings of the AAAI Conference on Artificial Intelligence, vol. 38, no. 1, 2024, pp. 17808-17816.

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

    A: 这篇论文试图解决的问题是:大型语言模型(LLMs)在遵循自然语言指令方面表现出色,但目前尚不清楚它们是否能够以及在多大程度上能够响应指令中可能隐含的明确约束。为了更好地评估LLMs对具有特定约束的指令的响应,论文提出了一个新的基准测试(Benchmark),名为CoDI-Eval(Controllable Generation under Diversified Instructions),用于系统和全面地评估LLMs对具有各种约束的指令的响应。

    具体来说,论文的主要贡献包括:

    1. 提出了一个新的基准测试CoDI-Eval,它通过纳入自然语言格式的多样化指令来评估LLMs的可控文本生成(CTG)能力,超越了传统的评估方法。
    2. 伴随着基准测试,提供了自动化且易于使用的评估方法,以促进进一步的发展。
    3. 对一系列已创建的LLMs进行了零样本(zero-shot)和少样本(few-shot)评估,首次系统地验证并比较了它们在CTG任务上的性能。

    论文通过构建一个大型的、具有约束属性的指令集合作为测试套件,专注于泛化和覆盖范围,并通过指令多样化过程来合成不同形式的约束表达,同时仔细考虑了候选任务分类,以更细粒度的子类别进行划分。最后,论文自动化了整个评估过程,以促进未来的研究发展。

    Q: 有哪些相关研究?

    A: 论文中提到的相关研究主要包括以下几个方面:

    1. 大型语言模型(LLMs):研究者们开发了各种方法来增强或利用LLMs的能力,包括指令调整(instruction tuning)和上下文学习(in-context learning,ICL)。
    2. 数据生成:利用LLMs生成数据的趋势,例如Self-Instruct和Unnatural Instructions,这些方法依赖于LLMs提供指令和响应,以克服手动编写数据的局限性。
    3. 可控文本生成(Controllable Text Generation, CTG):当前的CTG任务主要集中在硬约束和软约束两类上。硬约束限制文本的词汇和语法,如控制文本长度和确保生成的文本包含某些关键词。软约束旨在限制文本的语义,如情感和主题。
    4. CTG的评估:之前没有统一的CTG领域基准,但一些研究尝试了不同的评估方法。例如,PPLM设计了几种短前缀作为CTG模型的输入,DExperts采用了与RealToxicPrompt类似的方法,通过构建多个提示来评估模型在不同输入提示下控制情感的能力。
    5. 指令遵循:研究者们也关注了LLMs遵循指令的能力,例如通过使用分类任务中的指令来评估LLMs是否能够遵守指令中的要求。
    6. 模型性能比较:论文中还提到了对不同LLMs在CoDI-Eval基准测试上的性能进行了比较,揭示了它们在遵循具有特定约束的指令方面的局限性。

    这些相关研究为论文提出的CoDI-Eval基准测试提供了理论和技术背景,并且展示了LLMs在可控文本生成方面的潜力和挑战。论文通过这些研究的对比,强调了其在指令多样化和评估自动化方面的创新点。

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

    A: 论文通过以下几个步骤解决大型语言模型(LLMs)在遵循带有特定约束的指令方面评估的问题:

    1. 提出CoDI-Eval基准测试:CoDI-Eval(Controllable Generation under Diversified Instructions)是一个新提出的基准测试,旨在系统和全面地评估LLMs对带有各种约束的指令的响应能力。
    2. 构建测试套件:作者构建了一个大型的、具有约束属性的指令集合作为测试套件,这些指令专注于泛化和覆盖范围,以确保能够全面评估LLMs的性能。
    3. 指令多样化:通过一个两步过程来最大化指令的多样性。首先,从一个小型的、人工策划的种子指令集开始,然后通过扩展过程增加指令数量,构建指令池。其次,从池中随机抽取指令,并通过文本重写的方式进一步多样化这些指令。
    4. 自动化评估过程:为了促进进一步的研究发展,作者自动化了整个评估过程,包括指令的生成、多样化以及评估方法的自动化。
    5. 评估方法:对于每个可控文本生成任务,作者收集或构建了自动化、易于使用且可靠的评估方法。对于不能直接评估的任务,作者使用了开源的、专门的模型或外部API,并证明了这些替代方法与人类评估具有合格的一致性。
    6. 实验验证:作者对一系列主流的LLMs(例如ChatGPT、LLaMA-13B-chat、Vicuna-13B等)进行了广泛的评估,以验证CoDI-Eval的性能,并揭示了LLMs在遵循具有特定约束的指令方面的局限性。
    7. 性能比较:通过比较不同LLMs在CoDI-Eval上的性能,作者揭示了开源LLMs与商业闭源LLMs之间的性能差距,并指出了未来研究的潜在方向。

    通过这些步骤,论文不仅提出了一个新的基准测试来评估LLMs的可控文本生成能力,而且还通过实验验证了该基准测试的有效性,并为未来的研究提供了一个有用的工具。

    Q: 论文做了哪些实验?

    A: 论文中进行了以下实验来验证CoDI-Eval基准测试的有效性和评估不同大型语言模型(LLMs)的性能:

    1. 模型性能评估:作者对一系列主流的LLMs进行了评估,包括商业模型(如GPT-4和ChatGPT)和开源模型(如LLaMA-13B-chat、Vicuna-13B等)。评估的目的是验证这些模型在遵循带有特定约束的指令方面的能力。
    2. 零样本(Zero-shot)和少样本(Few-shot)设置:作者使用了零样本和少样本的提示来测试LLMs对指令中约束的响应能力。零样本设置没有使用任何示例,而少样本设置则在提示中添加了5个指令-响应对作为示例。
    3. 不同任务的性能比较:作者比较了LLMs在不同可控文本生成(CTG)任务上的性能,包括情感、主题、多方面、长度、关键词和毒性避免任务。
    4. 错误分析:对于多方面可控生成任务和复杂关键词CTG任务,作者分析了GPT-3.5-turbo(ChatGPT)响应错误的原因。
    5. 长度可控文本生成任务的子任务分析:作者计算了GPT-3.5-turbo在长度可控文本生成任务的各个子任务上的准确率,并发现准确率与目标长度的范围大致正相关。
    6. 指令多样性分析:作者通过构建仅使用指令扩展步骤的指令集,并与CoDI-Eval中的最终指令集进行比较,来验证“指令多样化”步骤的有效性。
    7. 评估方法的质量验证:作者通过人工判断来验证自动化评估方法的可靠性,特别是对于情感、主题和多方面控制任务。
    8. 进一步讨论:作者讨论了LLMs在特定长度约束下生成文本的表现不佳的原因,并提出了可能的改进方向。

    这些实验不仅展示了CoDI-Eval基准测试的评估能力,而且还揭示了当前LLMs在可控文本生成方面的局限性,特别是在处理特定约束时。实验结果为未来的研究方向提供了有价值的见解。

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

    A: 根据论文内容,以下是一些可以进一步探索的点:

    1. 改进长度感知能力:LLMs在处理长度约束方面表现不佳,需要研究如何提高模型对文本长度的感知和控制能力。
    2. 增强指令理解:探索新的方法来提高LLMs对多样化指令的理解,特别是对于复杂或不常见的指令表达。
    3. 优化少样本学习:研究如何通过少样本学习更有效地提高LLMs的可控文本生成能力,考虑到当前的简单示例可能不足以捕捉指令的多样性。
    4. 指令多样化的自动化:尽管论文中提出了指令多样化的方法,但这个过程仍然可以进一步自动化和优化,以减少人工干预并提高效率。
    5. 跨语言评估:探索CoDI-Eval基准测试在不同语言上的适用性,以及如何调整评估方法以适应不同的语言特性。
    6. 模型架构改进:研究不同的模型架构和训练策略,以更好地处理带有约束的文本生成任务。
    7. 实时性能评估:开发实时评估工具,以便在模型生成文本时即时评估其性能,这可能有助于提高交互式应用的用户体验。
    8. 可解释性和透明度:提高LLMs在可控文本生成任务中的可解释性,帮助用户理解模型的决策过程。
    9. 伦理和公平性:确保LLMs在生成文本时遵循伦理准则,避免产生有害或偏见的内容。
    10. 多任务学习:研究LLMs在同时处理多个不同类型的可控文本生成任务时的性能,以及如何优化模型以提高多任务处理能力。
    11. 数据集和基准测试的扩展:扩充CoDI-Eval数据集,添加更多的指令和任务类型,以更全面地评估LLMs的能力。
    12. 用户研究:进行用户研究,以了解用户对LLMs生成的文本的满意度,以及他们对可控文本生成的具体需求。

    这些探索点可以帮助研究者们更好地理解和改进LLMs在可控文本生成方面的表现,同时也为LLMs的实际应用提供指导。

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

    A: 这篇论文的主要内容可以总结如下:

    1. 问题定义:论文探讨了大型语言模型(LLMs)在遵循带有特定约束的自然语言指令方面的能力,并指出了现有评估方法的不足。
    2. CoDI-Eval基准测试:提出了一个新的基准测试CoDI-Eval,用于系统和全面地评估LLMs对带有各种约束的指令的响应能力。
    3. 测试套件构建:构建了一个大型的、具有约束属性的指令集合作为测试套件,这些指令覆盖了情感、主题、长度、关键词和毒性避免等多个方面。
    4. 指令多样化:通过一个两步过程(扩展和多样化)来增加指令的多样性,使用LLMs自动生成指令并进行文本重写。
    5. 自动化评估:开发了自动化的评估方法,使用开源模型和API来评估LLMs在各个CTG任务上的性能。
    6. 实验验证:对多个主流LLMs进行了广泛的评估,包括商业模型和开源模型,揭示了它们在遵循特定约束指令方面的局限性。
    7. 性能比较:比较了不同LLMs在CoDI-Eval上的性能,发现商业闭源模型通常优于开源模型。
    8. 错误分析:对LLMs在多方面可控生成任务和复杂关键词CTG任务上的错误进行了分析。
    9. 进一步讨论:讨论了LLMs在长度可控文本生成任务中的挑战,并提出了可能的改进方向。
    10. 结论:论文得出结论,CoDI-Eval基准测试能够有效评估LLMs的可控文本生成能力,并指出了未来研究的潜在方向。

    整体而言,这篇论文通过提出新的基准测试和评估方法,为理解和改进LLMs在可控文本生成方面的能力提供了重要的工具和见解。

  • 为新闻推荐系统预训练词向量和实体向量

    新闻推荐系统近年来发展迅速,其中一个重要的技术突破是深度知识感知网络 (DKN) 的出现。DKN 能够利用知识图谱 (KG) 中的实体信息来增强新闻推荐的准确性。为了训练 DKN 模型,我们需要预先训练词向量和实体向量,本文将介绍如何使用 Word2Vec 和 TransE 模型来完成这一任务。

    用 Word2Vec 训练词向量

    Word2Vec 是一种常用的词向量训练模型,它能够将词语映射到一个高维向量空间中,并学习到词语之间的语义关系。在 DKN 中,我们需要将新闻标题和文本中的词语转换为向量表示,以便模型能够理解文本内容。

    我们可以使用 Gensim 库中的 Word2Vec 模型来训练词向量。Gensim 提供了简单易用的接口,可以方便地加载文本数据并训练模型。

    from gensim.test.utils import common_texts, get_tmpfile
    from gensim.models import Word2Vec
    import time
    from utils.general import *
    import numpy as np
    import pickle
    from utils.task_helper import *

    首先,我们定义一个类 MySentenceCollection 来读取新闻文本数据。该类实现了迭代器接口,可以逐行读取文本文件并将其转换为词语列表。

    class MySentenceCollection:
        def __init__(self, filename):
            self.filename = filename
            self.rd = None
    
        def __iter__(self):
            self.rd = open(self.filename, 'r', encoding='utf-8', newline='\\r\\n')
            return self
    
        def __next__(self):
            line = self.rd.readline()
            if line:
                return list(line.strip('\\r\\n').split(' '))
            else:
                self.rd.close()
                raise StopIteration

    接下来,我们定义一个函数 train_word2vec 来训练 Word2Vec 模型。该函数接受新闻文本文件路径和输出目录作为参数,并保存训练好的模型文件。

    def train_word2vec(Path_sentences, OutFile_dir):
        OutFile_word2vec = os.path.join(OutFile_dir, r'word2vec.model')
        OutFile_word2vec_txt = os.path.join(OutFile_dir, r'word2vec.txt')
        create_dir(OutFile_dir)
    
        print('start to train word embedding...', end=' ')
        my_sentences = MySentenceCollection(Path_sentences)
        model = Word2Vec(my_sentences, size=32, window=5, min_count=1, workers=8, iter=10) # user more epochs for better accuracy
    
        model.save(OutFile_word2vec)
        model.wv.save_word2vec_format(OutFile_word2vec_txt, binary=False)
        print('\\tdone . ')
    
    Path_sentences = os.path.join(InFile_dir, 'sentence.txt')
    
    t0 = time.time()
    train_word2vec(Path_sentences, OutFile_dir)
    t1 = time.time()
    print('time elapses: {0:.1f}s'.format(t1 - t0))

    用 TransE 训练实体向量

    知识图谱 (KG) 由实体和关系组成,可以用来表示世界上的各种知识。在 DKN 中,我们可以利用 KG 中的实体信息来增强新闻推荐的准确性。为了将 KG 中的实体信息融入到 DKN 模型中,我们需要将实体映射到向量空间中,即训练实体向量。

    TransE 是一种常用的知识图谱嵌入模型,它能够将实体和关系映射到同一个向量空间中,并学习到实体和关系之间的语义关系。我们可以使用开源的 Fast-TransX 库来训练 TransE 模型。

    !bash ./run_transE.sh

    构建上下文向量

    DKN 模型不仅需要考虑实体本身的向量表示,还需要考虑实体的上下文信息。例如,同一个实体在不同的新闻中可能具有不同的含义。为了捕捉这种上下文信息,我们需要构建上下文向量。

    我们可以利用 KG 中的实体关系来构建上下文向量。例如,对于一个实体,我们可以将所有与它相关的实体的向量加权平均,得到该实体的上下文向量。

    ##### build context embedding
    EMBEDDING_LENGTH = 32
    entity_file = os.path.join(OutFile_dir_KG, 'entity2vec.vec')
    context_file = os.path.join(OutFile_dir_KG, 'context2vec.vec')
    kg_file = os.path.join(OutFile_dir_KG, 'train2id.txt')
    gen_context_embedding(entity_file, context_file, kg_file, dim=EMBEDDING_LENGTH)

    加载预训练向量

    最后,我们需要将训练好的词向量和实体向量加载到 DKN 模型中。

    load_np_from_txt(
            os.path.join(OutFile_dir_KG, 'entity2vec.vec'),
            os.path.join(OutFile_dir_DKN, 'entity_embedding.npy'),
        )
    load_np_from_txt(
            os.path.join(OutFile_dir_KG, 'context2vec.vec'),
            os.path.join(OutFile_dir_DKN, 'context_embedding.npy'),
        )
    format_word_embeddings(
        os.path.join(OutFile_dir, 'word2vec.txt'),
        os.path.join(InFile_dir, 'word2idx.pkl'),
        os.path.join(OutFile_dir_DKN, 'word_embedding.npy')
    )

    参考文献

    1. Wang, Hongwei, et al. “DKN: Deep Knowledge-Aware Network for News Recommendation.” Proceedings of the 2018 World Wide Web Conference on World Wide Web. International World Wide Web Conferences Steering Committee, 2018.
    2. Knowledge Graph Embeddings including TransE, TransH, TransR and PTransE. https://github.com/thunlp/KB2E
    3. GloVe: Global Vectors for Word Representation. https://nlp.stanford.edu/projects/glove/
    4. Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, and Jeffrey Dean. 2013. Distributed representations of words and phrases and their compositionality. In Proceedings of the 26th International Conference on Neural Information Processing Systems – Volume 2 (NIPS’13). Curran Associates Inc., Red Hook, NY, USA, 3111–3119.
    5. Gensim Word2vec embeddings : https://radimrehurek.com/gensim/models/word2vec.html