分类: AGI

  • Ollama:让大型语言模型触手可及

    导语: 近年来,大型语言模型(LLM)发展迅猛,但对于普通用户而言,搭建和使用LLM仍有一定门槛。Ollama应运而生,它是一个轻量级、可扩展的框架,致力于让每个人都能轻松构建和运行本地LLM。

    一键安装,轻松上手

    Ollama 提供了简单易用的安装方式,无论你是 macOS、Windows 还是 Linux 用户,都能快速开始使用。

    macOS:

    下载

    Windows (预览版):

    下载

    Linux:

    curl -fsSL https://ollama.com/install.sh | sh

    您也可以参考手动安装指南进行安装。

    Docker:

    Ollama 也提供了官方 Docker 镜像 ollama/ollama,您可以在 Docker Hub 上找到它: https://hub.docker.com/r/ollama/ollama

    海量模型库,总有一款适合你

    Ollama 支持 ollama.com/library 上提供的众多模型,以下是一些示例:

    模型参数量大小下载
    Llama 38B4.7GBollama run llama3
    Llama 370B40GBollama run llama3:70b
    Phi 3 Mini3.8B2.3GBollama run phi3
    Phi 3 Medium14B7.9GBollama run phi3:medium
    Gemma 29B5.5GBollama run gemma2
    Gemma 227B16GBollama run gemma2:27b

    您可以根据自身需求选择合适的模型,例如,运行 Llama 3 模型,只需执行以下命令:

    ollama run llama3

    需要注意的是,运行大型模型需要足够的内存,建议至少 8GB 内存运行 7B 模型,16GB 内存运行 13B 模型,32GB 内存运行 33B 模型。

    个性化定制,打造专属模型

    Ollama 不仅提供了丰富的模型库,还支持用户自定义模型,您可以:

    1. 从 GGUF 文件导入模型:
    • 创建名为 Modelfile 的文件,并在其中使用 FROM 指令指定本地 GGUF 模型文件的路径。例如: FROM ./vicuna-33b.Q4_0.gguf
    • 使用 ollama create 命令创建模型: ollama create example -f Modelfile
    • 运行模型: ollama run example
    1. 从 PyTorch 或 Safetensors 导入模型:
    1. 自定义提示词:
    • 您可以通过 Modelfile 文件为模型设置自定义提示词。例如,以下 Modelfile 文件将 llama3 模型的角色设定为超级玛丽中的马里奥: FROM llama3 # 设置温度参数,值越高越有创造力,值越低越连贯 PARAMETER temperature 1 # 设置系统消息 SYSTEM """ 你将扮演超级玛丽中的马里奥,请以马里奥的身份回答问题。 """
    • 创建并运行模型: ollama create mario -f ./Modelfile ollama run mario >>> 你好 你好!我是你的朋友马里奥。 更多自定义提示词的示例,请参考 examples 目录。

    功能强大的命令行工具

    Ollama 提供了一套简洁易用的命令行工具,方便用户管理和使用模型。

    • ollama create: 从 Modelfile 创建模型。
    • ollama pull: 下载模型。
    • ollama rm: 删除模型。
    • ollama cp: 复制模型。
    • ollama show: 显示模型信息。
    • ollama list: 列出本地模型。
    • ollama serve: 启动 Ollama 服务。

    灵活的 REST API

    Ollama 还提供了 REST API,方便用户通过编程方式与模型交互。

    • 生成文本:
    curl http://localhost:11434/api/generate -d '{
      "model": "llama3",
      "prompt":"为什么天空是蓝色的?"
    }'
    • 与模型聊天:
    curl http://localhost:11434/api/chat -d '{
      "model": "llama3",
      "messages": [
        { "role": "user", "content": "为什么天空是蓝色的?" }
      ]
    }'

    更多 API 详情请参考 API 文档

    丰富的社区集成

    Ollama 拥有活跃的社区,开发者们贡献了众多集成工具,涵盖 Web、桌面、终端、数据库、移动端等多个平台,例如:

    • Web & 桌面: Open WebUI, Enchanted, Hollama, Lollms-Webui 等等。
    • 终端: oterm, Ellama Emacs client, gen.nvim 等等。
    • 数据库: MindsDB, chromem-go 等等。
    • 移动端: Enchanted, Maid 等等。

    总结

    Ollama 为用户提供了一个简单易用、功能强大的平台,让每个人都能轻松构建和运行本地大型语言模型。无论您是 LLM 爱好者、开发者还是研究人员,Ollama 都能为您提供强大的支持。

    参考文献

  • 新奇性算法,也称为新奇性搜索(Novelty Search)

    新奇性算法,也称为新奇性搜索(Novelty Search),是一种非传统的优化和搜索方法,它与传统的目标驱动型算法形成鲜明对比。该算法的核心思想不在于直接追求某个预设的目标或优化某个特定的目标函数,而是鼓励探索未知和新颖的解决方案。它基于自然进化的原理,即新奇的行为或特性往往能开启通往更多新奇发现的路径,从而促进创新和多样性。

    核心概念

    • 新奇性作为驱动力:新奇性算法通过评估解决方案的新颖程度来指导搜索过程,而不是直接的性能或目标达成度。
    • 探索未知:算法鼓励智能体或系统探索那些前所未有的行为或状态空间,即使这些行为在短期内不直接导向传统意义上的成功。
    • 踏脚石概念:新奇性行为可以作为进一步发现的起点,类似于自然进化中创新的积累,新奇性可以是达到更复杂目标的间接路径。
    • 应用领域:新奇性搜索在机器人学、人工智能、游戏AI、以及需要创新解决方案的任何领域都有应用,它能够帮助发现传统方法可能忽视的解决方案。

    实践案例

    • 迷宫实验:在迷宫实验中,新奇性探索算法的机器人通过尝试新路径,而非直接寻找出口,最终走出迷宫的次数多于目标驱动型算法,显示了其在探索未知方面的优势。
    • 图片孵化器:一个科学实验通过“图片孵化器”网站,展示了新奇性算法如何通过不断繁育图像,生成前所未有的图像,如从基础形状进化到复杂图像,如汽车,这体现了新奇性如何促进创新生成。

    思考与应用

    新奇性算法挑战了我们对目标设定的传统理解,提倡在某些情况下,无目标的探索可能比直接追求目标更能促进创新和长期的成功。在教育、创新项目管理、以及人工智能的开放式探索中,这种方法鼓励人们接受不确定性,拥抱探索过程中的偶然性,从而可能发现更为广阔的可能性空间。


    新奇性搜索在机器学习领域的应用广泛,它通过鼓励探索未知和新颖的解决方案,推动了多个方面的创新。以下是一些具体实例:

    1. 机器人学
      • 迷宫导航:机器人通过新奇性搜索,不直接寻找出口,而是探索新的路径,最终学会了高效穿越复杂环境。
      • 双足机器人行走:新奇性搜索帮助双足机器人通过不断尝试新奇的步态,而非直接设定行走目标,学会了更自然、更稳定的行走方式。
    2. 自动编程与软件工程
      • 通过新奇性搜索,可以发现新的编程模式或算法,帮助优化代码结构,甚至自动修复错误。例如,Heather Goldsby使用新奇性搜索来发现计算机程序中的错误,这表明该方法能有效识别和改进代码的创新性部分。
    3. 材料科学与药物发现
      • 在材料设计中,新奇性搜索可以引导研究人员探索具有新奇性质的化合物,这些化合物可能具有前所未有的物理或化学特性,对于开发新材料至关重要。
      • 在药物发现领域,算法可以探索化学空间,寻找具有新奇药理活性的分子,这在传统目标导向方法难以触及的领域尤为重要。
    4. 机器学习算法优化
      • 新奇性搜索可以用于优化神经网络架构或超参数,通过寻找新颖的配置而非直接最小化损失函数,可能发现更高效或更适应特定任务的模型结构。
    5. 游戏AI与创意生成
      • 在游戏AI中,新奇性搜索可以生成创新的策略和游戏行为,使AI角色的行为更加不可预测和有趣。
      • 在艺术和创意领域,如生成艺术作品,新奇性搜索可以探索新的视觉或音乐表达,创造独特的艺术作品。
    6. 多智能体系统
      • 在多智能体系统中,新奇性搜索可以促进智能体之间的非直接竞争或合作,通过探索新的交互模式,提高整个系统的适应性和复杂任务的解决能力。

    这些应用展示了新奇性搜索在促进创新、增加解决方案多样性以及在复杂、非线性问题上的潜力。通过鼓励探索未知,新奇性搜索为机器学习和人工智能领域带来了新的视角和方法。


    通过新奇性搜索解决复杂问题,主要依赖于以下几个步骤和原则:

    1. 放弃直接目标:首先,不同于传统方法直接设定最终目标,新奇性搜索鼓励探索未知领域,不设定具体目标或优化指标,而是寻找行为或解决方案的新颖性。
    2. 定义新奇性标准:新奇性是相对于已知解决方案的差异度。需要建立一个机制来评估解决方案的新颖性,这通常基于与历史解的比较,如通过行为的统计特征或解决方案的结构差异来衡量。18
    3. 初始探索:启动搜索过程,生成一系列初始解决方案或行为模式,并记录这些行为的特征,作为新奇性评估的基准。
    4. 迭代与评估
      • 在每次迭代中,算法生成新的解决方案或策略。
      • 评估这些新解的新奇性,保留那些与现有解相比具有显著差异的。
      • 这些新奇解成为下一步探索的起点,即使它们当前可能不直接指向问题的解决方案。
    5. 累积知识:新奇性搜索过程中,虽然不直接追求解决方案,但通过不断积累的新奇解,可能会无意中发现解决问题的关键特征或中间步骤。
    6. 适应性与多样性:鼓励多样性,即使某些尝试看似无效,也可能为后续的创新提供灵感。在复杂问题中,多样性是克服局部最优的关键。
    7. 分析与整合:随着时间的推移,通过分析新奇解的模式,可能揭示出解决复杂问题的新途径。这需要人类的介入,理解这些新奇解背后的潜在价值,并可能手动或通过其他算法整合这些发现。
    8. 反馈循环:虽然新奇性搜索不直接设定目标,但可以设置反馈机制,确保探索的方向与问题的某些关键方面保持相关性,避免完全无目的的探索。
    9. 跨领域应用:新奇性搜索的原理可以应用于多个领域,如机器人控制、算法设计、创意生成等,通过跨领域的灵感,可能发现意想不到的解决方案。

    通过上述步骤,新奇性搜索利用探索的广度而非直接的深度来解决复杂问题,这种方法特别适合于那些目标不明确或解决方案空间高度不确定的问题。它通过不断尝试和学习新奇事物,最终可能间接地达到或超越传统目标驱动方法的成果。


    评估新奇性搜索中解决方案的新奇性,通常涉及以下几个关键步骤和考虑因素:

    1. 定义行为空间:首先,需要明确解决方案或行为的表示空间,这可以是解决方案的参数空间、行为轨迹、或是任何可以量化其特性的多维空间。
    2. 构建行为特征:为每个解决方案提取特征,这些特征应该能够描述解决方案的关键方面,比如在机器人学中,可以是步态的节奏、步幅长度等。特征的选择对新奇性的准确评估至关重要。
    3. 历史行为数据库:维护一个历史解的数据库,记录已评估过的解决方案的特征。这个数据库用于比较新解与历史解的新颖性。
    4. 新奇性度量
      • 距离度量:使用如欧氏距离或余弦相似度等,计算新解特征与历史解特征集的平均距离。距离越大,新奇性越高。
      • 覆盖度:评估新解是否落在历史解的覆盖区域之外,如果新解在历史解的“行为地图”中开辟了新的区域,那么它就被认为是新奇的。
      • 聚类分析:通过聚类算法识别行为模式,新解如果与任何现有聚类显著不同,则认为具有新奇性。
    5. 非目标性评估:新奇性评估不考虑解决方案的性能或目标达成度,仅基于其与历史解的差异性。
    6. 阈值设定:设定一个新奇性阈值,低于此阈值的解决方案被视为不新奇,不会被保留或进一步探索。
    7. 时间或代际窗口:有时,新奇性评估会考虑最近几代或一段时间内的解,以确保新奇性评估反映最近的探索进展。
    8. 人工或专家审查:在某些情况下,新奇性评估可能需要人工审查,特别是在解决方案的复杂性或领域专业知识要求较高的情况下。
    9. 动态调整:随着搜索的进行,新奇性的定义和评估标准可能需要调整,以反映当前探索的深度和广度。

    通过上述方法,新奇性搜索能够系统地识别和保留那些在当前探索中具有独特性的解决方案,促进对未知领域的探索,即使这些新奇解在初期可能不直接带来性能上的提升。


    在新奇性搜索(Novelty Search, NS)的实现基础中,保存新颖项信息的核心在于设计一个能够有效记录和管理探索过程中遇到的新颖解决方案的数据结构。以下是实现这一过程的关键步骤和组件:

    1. 定义 NoveltyItem 类
      • 属性:每个 NoveltyItem 应包含至少两个关键属性:个体的特征向量(代表解决方案的特性)和该个体的新颖性得分。特征向量用于后续的比较和新奇性评估,而新颖性得分则是基于与历史解的比较得出的。
      • 方法:可能包括计算或更新新颖性得分的方法,以及用于存储和检索个体特征的接口。
    2. 新颖性列表(Novelty List)管理
      • 数据结构:使用列表、队列或更高级的数据结构(如平衡二叉搜索树、哈希表)来存储 NoveltyItem 对象。选择哪种数据结构取决于对查找效率、插入速度和内存使用的需求。
      • 插入机制:每当评估一个新个体的新颖性时,将其作为 NoveltyItem 对象插入到列表中,并根据需要更新新颖性得分。
      • 管理历史记录:为了保持数据结构的效率和实用性,可能需要定期或达到一定容量时移除最“不新奇”的个体,确保只保留最具代表性的或最近的解。
    3. 新颖性评估
      • 计算新奇性:对于每个新个体,计算其特征与新颖性列表中所有个体特征的相似度,可以使用距离度量(如欧氏距离)。
      • 得分更新:基于相似度计算新颖性得分,得分越低表示越新奇。这一步可能需要一个全局或局部的阈值来决定一个个体是否足够新奇以被保留。
    4. 更新与维护
      • 定期更新:随着搜索的进行,新颖性列表需要定期更新,移除不再新奇的个体,保持列表的动态性和有效性。
      • 多样性保持:确保列表中包含多样化的解决方案,避免过早收敛到特定的解决方案类型。

    通过这样的实现,NS 能够有效地跟踪和利用探索过程中的新颖性信息,促进对未知解决方案空间的探索,而不是直接追求性能优化。这种方法鼓励算法探索新的行为或解决方案,从而在复杂和多变的问题中找到创新的路径。


  • 策略梯度方法利用动作特征的挑战

    策略梯度方法,如A3C(Asynchronous Advantage Actor-Critic,Mnih等人,2016年提出的),确实面临在处理高维或连续动作空间时的挑战,但这并不意味着它们无法利用动作特征。实际上,策略梯度方法通过参数化策略,可以有效地利用动作空间的特征。在高维动作空间中,策略网络通常设计为接收状态信息,并输出动作的概率分布,或者直接输出动作的连续值,这背后就涉及到了对动作空间的特征表示。

    利用动作特征

    1. 特征工程:在设计策略网络时,通过精心设计的特征工程,可以将动作空间的复杂性转化为更容易处理的表示。这些特征可以是基于物理属性、历史行为或其他与环境交互相关的量。
    2. 神经网络的输入:在连续动作空间中,策略网络的输入层会直接接收状态特征,这些状态特征间接地包含了动作空间的有用信息。通过多层神经网络的非线性变换,模型能够学习到状态与动作之间的复杂关系,从而在输出层产生动作的参数,如均值和方差(在高斯策略中),或者直接输出动作值。
    3. 优势函数与值函数:A3C等方法通过使用优势函数或值函数来指导学习,这些函数的估计可以基于状态-动作对的特征,帮助算法更有效地学习哪些动作在特定状态下更有利,从而间接利用了动作特征。
    4. 策略优化:在更新策略参数时,通过梯度上升或下降,策略网络学习到如何根据当前状态调整动作,这一过程自然地考虑了动作空间的特性,尤其是当网络结构能够捕捉到这些特性时。

    面临的挑战

    尽管策略梯度方法能够利用动作特征,它们在高维动作空间中仍然面临挑战,如学习效率低下、收敛速度慢和方差大的问题。为了应对这些挑战,研究者们引入了如目标网络、策略正则化(如TRPO、PPO中的方法)、以及更复杂的策略表示方法,如使用更深层次的神经网络和更高级的优化技巧。

    因此,策略梯度方法在理论上和实践中都能够利用动作特征,但需要通过恰当的模型设计和算法改进来克服高维动作空间带来的困难。


    策略梯度方法在处理大动作空间时面临挑战,主要由于以下几个原因:

    高维动作空间的复杂性:在连续或高维离散动作空间中,动作的数量几乎是无限的,这使得找到最优或接近最优的策略变得极其困难。每个动作的细微变化都可能对最终的奖励产生影响,导致策略的梯度信号非常稀疏且噪声大。

    梯度估计的方差问题:策略梯度方法通过采样动作序列来估计策略的梯度,而在大动作空间中,这种采样过程的方差通常很高。这意味着即使多次尝试,梯度的估计也可能波动很大,这会减慢学习速度并可能导致学习过程不稳定。

    优化难度增加:在高维空间中,优化目标可能非常复杂且非凸,这使得找到全局最优解或接近最优解的难度大大增加。局部最优解的陷阱更为常见,策略可能在某些局部区域徘徊而无法跳出。

    动作空间的连续性处理:对于连续动作空间,策略需要输出动作的概率分布,这通常通过高斯分布或其他连续分布来近似。在这样的空间中,精确地调整动作以最大化奖励需要非常精细的梯度信号,而这种信号在大空间中很难获得。

    探索与利用的平衡:在大动作空间中,有效的探索变得至关重要,因为不常见的动作可能带来重要的信息。然而,策略梯度方法在初始阶段可能难以探索动作空间的广泛区域,导致学习进展缓慢。

    计算资源需求:处理大动作空间需要更多的计算资源,因为每个动作的评估和梯度计算都可能更复杂,尤其是在使用神经网络作为策略函数时,模型的训练和评估会更加耗时和资源密集。

    为了克服这些挑战,研究者们发展了多种策略,如引入基线减少方差、使用目标网络来稳定学习、正则化策略以避免过拟合、以及采用近端策略优化(PPO)、信任区域策略优化(TRPO)等算法来提高学习效率和稳定性。这些方法通过不同的机制来改善在大动作空间中的表现,比如通过优势函数来指导学习,或者通过策略的结构优化来更好地处理高维动作。


    策略梯度方法与基于值的方法在处理连续动作空间时存在显著差异,主要体现在目标函数、优化策略、以及对动作空间的处理方式上:

    策略梯度方法的特点:

    1. 直接优化策略:策略梯度方法直接学习一个参数化的策略函数,这个函数能够输出在给定状态下采取某个动作的概率。它通过计算策略梯度来更新参数,以最大化累积奖励的期望。
    2. 处理连续动作:策略梯度特别适合于连续动作空间,因为它可以输出动作的概率分布,如高斯分布,直接控制动作的输出,无需将动作空间离散化。
    3. 探索与利用:策略梯度通过随机抽样动作来实现探索,这自然地嵌入在策略中,不需要明确的探索机制如ε-greedy。
    4. 方差问题:在连续空间中,由于动作的连续性和策略梯度估计的随机性,梯度估计的方差可能很高,这可能导致学习过程不稳定。

    基于值的方法的特点:

    1. 间接学习策略:基于值的方法,如Q-learning或DQN,首先学习状态(或状态-动作)的价值函数,然后通过价值函数间接确定最优策略。在连续动作空间中,通常需要通过策略如ε-greedy或确定性策略来从价值函数中导出动作。
    2. 离散化处理:对于连续动作空间,基于值的方法通常需要将动作空间离散化,以便于应用,这可能导致信息损失和优化困难。
    3. 稳定但可能较慢:基于值的方法在更新时通常更稳定,因为它们基于价值的预测进行更新,但找到最优策略可能需要更多的迭代,尤其是在处理连续动作时。
    4. 目标函数:基于值的方法优化的目标是价值函数的误差最小化,而不是直接优化策略的性能,这在连续空间中可能需要额外的策略提取步骤。

    对比总结:

    • 直接与间接策略梯度直接优化策略,而基于值的方法通过价值函数间接找到最优策略。
    • 动作处理:策略梯度自然适应连续动作,而基于值的方法需要额外处理才能应用于连续空间。
    • 探索机制:策略梯度的探索内置于策略中,基于值的方法通常需要明确的探索策略。
    • 学习稳定性与效率:基于值的方法可能在学习初期更稳定,但策略梯度在处理复杂、连续空间时可能更直接有效,尽管需要更复杂的方差减少技术。

    在实际应用中,结合两种方法的混合策略,如Actor-Critic架构,可以结合两者的优点,既直接优化策略,又利用价值函数的稳定性来指导学习,成为处理连续动作空间的有力工具。


    基于梯度的策略优化方法是一类直接在策略参数上进行优化的强化学习算法,旨在通过梯度上升或下降来最大化累积奖励。以下是一些重要的基于梯度的策略优化算法:

    1. REINFORCE(Williams, 1992):这是策略梯度方法的早期代表,它通过估计策略性能指标的梯度来更新策略参数。REINFORCE通常使用回报的总和作为目标函数,并通过策略梯度定理来计算梯度。为了减少方差,可以引入一个基线(通常是状态价值函数的估计)。
    2. Actor-Critic:结合了值函数方法和策略梯度的优点,其中“Actor”负责学习策略,而“Critic”评估这个策略的好坏,通常通过TD误差来指导Actor的更新。有多种变体,如A2C(Advantage Actor Critic)和A3C(Asynchronous Advantage Actor Critic),后者通过异步多线程学习加速训练过程。
    3. TRPO (Trust Region Policy Optimization):由Schulman等人提出,它在策略更新时引入了一个信任区域,确保更新不会偏离当前策略太远,从而保证了学习的稳定性。
    4. PPO (Proximal Policy Optimization):也是由Schulman等人提出,简化了TRPO的实现,通过一个简单的clip函数来限制新旧策略之间的差异,保持了更新的稳定性,同时简化了超参数的调整。
    5. DDPG (Deep Deterministic Policy Gradient):适用于连续动作空间,结合了DQN的深度学习架构和策略梯度的思想,使用了目标网络和actor-critic架构,解决了连续动作空间中的探索问题。
    6. SAC (Soft Actor-Critic):引入了熵正则化来鼓励探索,同时优化了价值函数和策略,以及一个软性目标策略,以平衡探索与利用。
    7. TRPO和PPO的变体:这些算法的变体不断出现,旨在改善学习效率、稳定性或适应特定任务的需要,如V-trace(用于A3C的改进)和各种针对特定环境优化的策略。

    这些算法各有特点,适用于不同的学习环境和任务需求,但共同点在于它们都通过直接优化策略参数来学习最优行为策略。


    策略梯度方法在处理高方差问题时,通常采用以下几种策略来提高学习的稳定性和效率:

    1. 引入基线(Baseline):通过从累积回报中减去一个基线来减少方差,而这个基线通常是状态价值函数的估计或所有轨迹回报的平均值。在Actor-Critic架构中,基线可以是Critic估计的行动优势函数,这不仅减少了方差,还保持了估计的无偏性。
    2. 利用因果关系(Reward to Go):考虑到动作只能影响之后的奖励,不改变之前的奖励,因此可以只考虑从当前时刻到结束的累积奖励(即reward to go),这减少了方程中的求和项,从而降低方差。
    3. 目标函数的正则化:通过在目标函数中加入正则项,如熵正则化,可以鼓励策略的探索性,同时在一定程度上减少方差,因为这促使策略保持一定的随机性,避免过早收敛到局部最优。
    4. 信任区域方法(如TRPO):通过限制策略更新的步长,确保新策略不会偏离旧策略太远,从而控制方差并保持学习的稳定性。
    5. 近端策略优化(PPO):通过剪裁的优势函数来限制策略更新的幅度,确保更新不会偏离当前策略太多,这在实践中被证明能有效减少方差,同时保持学习的稳定性和效率。
    6. 多步回报(n-step returns):使用多步回报而不是单步回报,可以平衡近期和远期奖励的估计,减少方差。
    7. 经验重放:虽然主要用于基于值的方法,但在某些策略梯度方法中,通过存储和重放经验可以增加数据的利用,减少方差,尤其是在结合了Actor-Critic架构时。
    8. 批量更新:通过在更新策略时使用多个轨迹的平均回报,可以减少单个轨迹带来的噪声,从而降低方差。

    这些方法通过不同的机制来减少策略梯度估计的方差,提高学习的稳定性和效率,使得智能体在复杂和高维的环境中能够更有效地学习。


    REINFORCE 算法能有效处理采样梯度的期望问题,主要是因为它利用了策略梯度理论和蒙特卡洛方法的结合。以下是其有效性的几个关键点:

    1. 策略梯度理论:REINFORCE基于策略梯度方法,它直接在策略参数上进行优化,而不是通过值函数间接优化。这种方法允许直接计算策略性能的梯度,即策略参数如何影响期望回报的改变。
    2. 蒙特卡洛方法:REINFORCE通过实际执行策略并收集完整的轨迹(即从初始状态到终止状态的一系列状态-动作-奖励序列)来估计策略的性能。这种方法利用了大量随机样本(即多个轨迹)来估计期望回报的梯度,尽管每个样本的回报是随机的,但大量样本的平均可以提供一个无偏的估计。
    3. 期望回报的梯度估计:REINFORCE算法的关键在于能够计算策略参数的梯度,这通过观察到的回报和策略行为之间的关系来实现。具体来说,通过观察到的轨迹,REINFORCE算法计算每个动作的贡献,即动作的回报乘以其概率,然后通过调整这些概率来增加高回报动作的选取概率,减少低回报动作的选取概率。
    4. 方差减少策略:尽管原始的REINFORCE算法的梯度估计方差较高,但通过引入基线(通常是状态价值函数的估计),可以减少估计的方差而不影响梯度的期望值。基线的引入减少了回报的波动,从而使得梯度估计更加稳定。
    5. 无模型学习:REINFORCE不需要环境的动态模型,这使得它在复杂和未知的环境中特别有用,因为它直接从与环境的交互中学习。

    综上所述,REINFORCE算法通过直接在策略上进行优化,并利用蒙特卡洛采样来估计策略梯度,有效地解决了在复杂策略空间中寻找最优策略的采样期望问题。虽然存在方差大的挑战,但通过引入基线和其他方差减少技术,可以进一步提高其学习效率和稳定性。


    监督学习中的“数据”: 在监督学习中,我们处理的是带有标签的数据集。这意味着每一份数据(例如图像、文本或数值)都配有一个明确的正确答案或标签(例如分类标签、回归值)。学习过程旨在通过这些已知的输入-输出对来学习一个函数,这个函数能够对新的、未见过的数据做出准确的预测。监督学习的关键在于从这些配对的数据中提取模式,以泛化到未知数据。数据是学习过程的直接指导,它告诉模型“正确答案”是什么。

    强化学习中的“环境”: 强化学习的场景则大不相同。在这里,智能体(模型)与一个环境交互,这个环境可以是物理的(如机器人导航)或虚拟的(如游戏)。智能体通过采取行动来探索环境,并从环境中接收反馈,这种反馈通常以奖励(正向或负向)的形式出现,但不直接提供“正确答案”。智能体的目标是通过试错学习,找到能最大化累积奖励的行动策略。环境扮演了一个动态的、非直接指导的角色,它不直接告诉智能体应该做什么,而是通过奖励机制间接引导智能体学习。

    对比与联系

    • 目标导向:监督学习侧重于预测准确性,而强化学习侧重于决策过程和长期目标的实现
    • 学习过程:监督学习是通过已知结果的直接反馈进行学习,强化学习则通过探索未知,通过奖励和惩罚来调整行为。
    • 数据与互动:监督学习的数据是静态的、预先存在的,强化学习的数据是动态生成的,依赖于智能体与环境的互动。
    • 反馈机制:监督学习的反馈是即时且明确的,强化学习的反馈往往是延迟的,需要智能体理解其行为的长期后果。

    因此,”在监督学习中,我们拥有的是数据;而在强化学习中,我们拥有的是环境。”这句话强调了两种学习范式的核心差异:监督学习依赖于外部提供的明确知识,而强化学习则依赖于智能体与环境的动态交互来自我发现知识。


    在强化学习中,智能体通过试错探索提升动作质量是一个迭代和累积学习的过程,主要涉及以下几个关键环节:

    1. 环境交互:智能体开始时对环境知之甚少,它通过执行动作与环境进行交互,观察环境的响应,即接收到的奖励和新的状态。这是学习的基础,智能体通过这些交互来理解其行为的后果。
    2. 奖励信号:环境通过奖励来反馈智能体的动作效果。奖励可以是正的(鼓励行为)或负的(惩罚行为),智能体的目标是最大化累积奖励。奖励机制引导智能体学习哪些动作是“好”的,哪些是“坏”的。
    3. 策略更新:智能体根据接收到的奖励来调整其行为策略。在策略梯度方法中,如REINFORCE,智能体会根据动作的奖励调整执行该动作的概率,倾向于那些带来高奖励的动作。在价值函数方法中,如Q学习,智能体会更新动作的价值估计,从而影响未来的选择。
    4. 探索与利用:智能体在学习过程中需要平衡探索(exploration)和利用(exploitation)。探索是指尝试新的、未知的动作,以发现可能的高奖励路径;利用则是基于已知信息做出决策,倾向于已知的高奖励动作。ε-贪婪策略是实现这一平衡的常见方法,智能体以ε的概率随机选择动作进行探索,以1-ε的概率选择当前最优动作进行利用。
    5. 长期奖励的考虑:智能体不仅要考虑即时奖励,还要考虑长期奖励。这通常通过折扣因子来实现,确保智能体不仅追求短期利益,也考虑未来可能的奖励,从而学习到更复杂的策略。
    6. 策略优化:随着智能体的不断学习,它会通过算法(如策略梯度、价值迭代等)来优化其策略,使得在给定状态下采取的动作能够最大化预期的累积奖励。
    7. 适应与调整:智能体在遇到新情况或环境变化时,需要能够适应并调整其策略。这要求学习过程具有一定的泛化能力,能够从已学习的经验中抽象出一般性的行为规则。

    通过这个循环往复的过程,智能体逐渐提升其动作质量,从随机行为开始,逐步学习到在特定环境下获得最大奖励的策略。这个过程体现了强化学习的核心——通过不断的试错和反馈,智能体自我改进,最终达到或接近最优策略。


    在多智能体系统中,处理维度爆炸问题通常涉及减少状态和动作空间的复杂性,以及优化学习算法以适应大规模的交互环境。以下是一些解决策略:

    1. 状态空间优化
      • 特征工程:通过特征选择和降维技术,如PCA(主成分分析)和LDA(线性判别分析),来提取状态空间中的关键特征,减少不必要的维度。
      • 状态抽象:将复杂状态空间抽象成更粗粒度的表示,通过归纳或聚类减少状态的多样性。
    2. 联合动作空间优化
      • Mean Field MARL(平均场多智能体强化学习):通过考虑智能体间的平均交互而非所有个体交互,简化联合动作空间。算法将智能体间的交互近似为与邻居的交互,减少计算复杂度。
      • 动作编码:通过高效编码机制,尝试在有限的表示中包含更多信息,减少联合动作的优化问题的直接维度,但不减少其复杂性。
    3. 混合型训练机制
      • 集中式训练分布式执行(CTDE):在训练时,智能体共享全局信息,以集中方式学习策略,但在执行时,每个智能体基于局部信息行动,减少每个智能体需要考虑的全局状态信息量。
    4. 探索算法优化
      • 基于伪计数的探索:设计算法来评估动作的探索频率,即使在连续空间中也能有效探索,通过密度模型来近似动作的频率,从而提高探索效率。
    5. 分解MDPs(马尔可夫决策过程)
      • 利用因子化表达,将复杂问题分解为更小、更可管理的部分。例如,VDN(价值分解网络)和QMIX等算法通过假设值函数可分解为智能体的独立贡献,减少联合策略的复杂度。
    6. 协调图与动态贝叶斯网络
      • 使用协调图来表示智能体间的依赖关系,通过因式分解值函数,允许智能体在行动时协调,减少状态-动作空间的指数爆炸。
    7. 元学习与对手建模
      • 元学习帮助智能体快速适应不同环境,减少对特定环境的过度拟合,从而在多变的多智能体环境中减少探索的维度需求。
      • 对手建模通过预测其他智能体的行为来稳定学习过程,减少因其他智能体策略变化带来的环境非平稳性影响。

    通过这些方法,多智能体系统可以更有效地处理大规模状态和动作空间,提高学习效率和策略质量,从而克服维度爆炸带来的挑战。


  • Resemble Enhance:AI赋能的语音增强利器

    近年来,人工智能技术在语音处理领域的应用日益广泛,语音增强技术作为其中重要一环,其发展也日新月异。今天,就为大家介绍一款名为Resemble Enhance的AI语音增强工具,它能够有效降低噪音、提升语音质量,为用户带来更清晰、更纯净的音频体验。

    Resemble Enhance:双模块协同,打造高品质语音

    Resemble Enhance 的核心是由去噪器增强器这两个模块构成的。

    • 去噪器:顾名思义,它的主要功能是从嘈杂的音频中分离出人声,就像一位经验丰富的录音师,能够精准地将人声从背景噪音中剥离出来。
    • 增强器:在去噪的基础上,增强器进一步提升语音的感知质量。它不仅可以修复音频失真,还能扩展音频带宽,使得最终输出的语音更加清晰、饱满、富有层次感。

    值得一提的是,这两个模块的训练数据均为高品质的44.1kHz语音数据,这保证了Resemble Enhance 能够输出高保真的增强语音。

    Resemble Enhance:简单易用,功能强大

    Resemble Enhance 的一大优势在于其简单易用的特点。即使你不是技术专家,也能轻松上手。

    安装与使用

    你可以通过以下命令,轻松安装稳定版本的 Resemble Enhance:

    pip install resemble-enhance --upgrade

    如果你想尝试最新的预发布版本,可以使用以下命令:

    pip install resemble-enhance --upgrade --pre

    安装完成后,使用起来也非常简单。只需执行以下命令,即可对指定目录下的音频文件进行增强:

    resemble_enhance in_dir out_dir

    其中,in_dir 是输入音频文件所在的目录,out_dir 是输出增强后的音频文件所在的目录。

    如果你只想进行去噪处理,可以使用以下命令:

    resemble_enhance in_dir out_dir --denoise_only

    Web Demo 体验

    为了方便用户体验 Resemble Enhance 的强大功能,开发者还提供了一个基于 Gradio 构建的 Web 演示版本。你可以在 Hugging Face 上在线体验,也可以在本地运行:

    python app.py

    Resemble Enhance:定制化训练,满足个性化需求

    除了使用预训练模型,Resemble Enhance 还支持用户根据自身需求训练个性化模型。

    数据准备

    训练模型的第一步是准备数据。你需要准备三个数据集:

    1. 前景语音数据集:包含清晰人声的音频文件。
    2. 背景非语音数据集:包含各种噪音的音频文件。
    3. 房间冲激响应 (RIR) 数据集:用于模拟不同声学环境的.npy文件,示例可以参考 这里

    数据集的目录结构如下:

    data
    ├── fg
    │   ├── 00001.wav
    │   └── ...
    ├── bg
    │   ├── 00001.wav
    │   └── ...
    └── rir
        ├── 00001.npy
        └── ...

    模型训练

    Resemble Enhance 的训练过程分为三个阶段:

    1. 去噪器预热:尽管去噪器和增强器是一起训练的,但建议先对去噪器进行预热训练: python -m resemble_enhance.denoiser.train --yaml config/denoiser.yaml runs/denoiser
    2. 增强器第一阶段:训练自编码器和声码器: python -m resemble_enhance.enhancer.train --yaml config/enhancer_stage1.yaml runs/enhancer_stage1
    3. 增强器第二阶段:训练潜在条件流匹配 (CFM) 模型: python -m resemble_enhance.enhancer.train --yaml config/enhancer_stage2.yaml runs/enhancer_stage2

    总结

    Resemble Enhance 是一款功能强大、易于使用的 AI 语音增强工具,它可以有效降低噪音、提升语音质量,为用户带来更佳的音频体验。同时,它还支持用户自定义训练模型,以满足个性化需求。相信随着技术的不断发展,Resemble Enhance 将在语音增强领域发挥更大的作用。

    参考文献

    希望这篇文章能帮助你更好地了解 Resemble Enhance。

  • S3:一个简单高效的多模态对话系统

    近年来,人工智能 (AI) 领域见证了多模态系统的兴起。这些系统能够无缝整合文本、图像和音频等多种形式的数据,在模拟人类认知能力方面正变得越来越娴熟。然而,该领域的研究人员面临的主要挑战之一是需要大量数据和计算资源来训练最先进的模型。

    本文介绍了一种全新的范式,即只需少量数据和计算资源即可构建强大的多模态系统。我们提出了一个简单而有效的基线模型 S3,它挑战了大型数据集和过度计算能力是开发具有竞争力的多模态 AI 系统的先决条件的传统观念。通过使用包含不到 150,000 个多模态样本的精简语料库、预训练的冻结模态编码器、7B 语言模型,以及利用单个 A100-80GB GPU 的计算经济性,我们创建了一个架构简洁优雅、性能可与目前领域内更复杂系统相媲美的模型。我们方法的核心是一个模态投影器,它使用一个简单的多层感知器 (MLP) 将多模态特征映射到标记嵌入中。

    S3 的强大之处

    S3 的贡献可以概括如下:

    • 我们将一种用于训练多模态投影器的成熟管道应用于多种模态(图像、音频和文本),以训练多模态对话模型。
    • 我们引入了一种用于训练多模态对话模型的高质量有效数据混合。
    • 我们证明了将整个图像映射到 4 个文本标记足以完成多模态对话任务。
    • 我们公开了所获得的模型,该模型显示出与最先进模型相当的性能。

    深入 S3 的核心技术

    多模态数据预处理的艺术

    为了实现多模态对话的目标,我们以标准聊天布局格式化了每个数据集。这种格式将每条消息表示为一个 JSON 对象,其中包含“角色”(指示消息是来自用户还是机器人)、“类型”(指示消息包含图像、音频还是文本)以及消息内容本身(在图像和音频的情况下,这将是文件路径)。

    {
      "id": 0,
      "messages": [
        {
          "role": "user",
          "type": "image",
          "text": "https://example.com/images/bird.jpg"
        },
        {
          "role": "user",
          "type": "audio",
          "text": "https://example.com/audio/birdsong.mp3"
        },
        {
          "role": "user",
          "type": "text",
          "text": "How can be the image and the audio related?"
        },
        {
          "role": "bot",
          "type": "text",
          "text": "The image shows a Northern Cardinal,
                   and the audio file is its distinctive birdsong."
        }
      ]
    }

    图1:多模态对话数据 json 格式示例

    我们为每个数据集创建了一个自定义系统提示,以引出与原始数据集紧密匹配的机器人响应。例如,对于 TextCaps 数据集,我们选择了“用单个词或短语回答问题”之类的提示,以反映数据集主要包含简短响应的事实。

    为了解决许多数据集存在的简短性问题(这些数据集通常由单对问答组成),我们随机将多个简短对话组合成扩展序列,以创建更长的对话。

    特殊标记和后处理:解码多模态对话的关键

    我们在基础模型的标记器中集成了额外的特殊标记,并解冻了语言模型头和嵌入层,以促进这些新标记的训练。具体来说:

    • 我们引入了模态标记 [M][/M] 来标记数据中不同模态对象的开始和结束。
    • 我们使用 [img] 等标记分别对音频和图像内容进行编码。
    • 为了表示对话中的说话者,我们为机器人和用户角色添加了特殊标记。
    • 我们还添加了 [RS] 标记来表示对话中每条消息的开始和结束。

    模态投影器:连接视觉和语言的桥梁

    模态投影器的作用是调整各种模态对象(如图像和音频)的嵌入,以确保它们与语言模型兼容。在我们的研究中,我们实现了一种基本架构设计,其中使用多个线性层将来自模态编码器的隐藏状态直接映射到语言模型的标记嵌入中。

    与 LLaVA 等最先进的模型不同,我们将模态对象映射到 4 个标记中,而不管模态编码器中输出补丁的数量。我们假设少量输出模态标记足以进行基本的视觉理解。此外,仅使用 4 个标记可以显着减少我们传递给 Transformer 的序列长度。

    S3 性能评估:在 AI 旅程竞赛和 MMMU 基准测试中脱颖而出

    AI 旅程竞赛:展现强大的多模态交互能力

    我们在 2023 年 AI 旅程竞赛的“强人工智能”任务中测试了 S3。该竞赛的目标是开发一个能够在文本、图像和音频三种模态之间无缝交互的系统。

    结果:在 AI 旅程竞赛中,我们的方法在 30 个参赛队伍中获得了第 4 名。

    MMMU 基准测试:验证视觉理解能力

    我们使用 MMMU 基准测试来评估 S3 的视觉理解能力,并将其与现有模型进行比较。

    结果:我们的系统使用低计数数据混合,在性能方面超过了许多现有模型。在开源的 7B 模型中,它表现出具有竞争力的性能。它甚至可以与在更大的数据集、更大的 LLM 上训练的最先进模型相媲美,仅略逊一筹。

    展望未来:迈向更强大的多模态对话系统

    我们的研究表明,无需大型数据集或巨大的计算能力即可开发出极具竞争力的多模态对话模型。未来工作应侧重于增加数据集的大小和多样性,尤其是在音频模态方面,因为这可能会进一步提高性能。此外,探索集成更复杂的模态自适应架构也可能有利于进一步增强其功能。

    参考文献

    [1] Ainslie, J., Lee-Thorp, J., de Jong, M., Zemlyanskiy, Y., Lebron, F., Sanghai, S.: GQA: Training generalized multi-query transformer models from multi-head checkpoints. In: Bouamor, H., Pino, J., Bali, K. (eds.) Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing. pp. 4895–4901. Association for Computational Linguistics, Singapore (Dec 2023). https://doi.org/10.18653/v1/2023.emnlp-main.298, https://aclanthology.org/2023.emnlp-main.298

    [30] Zhu, D., Chen, J., Shen, X., Li, X., Elhoseiny, M.: Minigpt-4: Enhancing vision-language understanding with advanced large language models. CoRR abs/2304.10592 (2023). https://doi.org/10.48550/ARXIV.2304.10592

    请注意:由于篇幅限制,此处仅列出部分参考文献,完整列表请参阅原文。

  • 通向AGI之路:AI原生记忆,而非无限上下文

    引言:LLM的局限性与AGI的曙光

    近年来,大型语言模型(LLM)的蓬勃发展,为人工智能领域注入了新的活力,预示着通用人工智能(AGI)的曙光。然而,一些LLM初创公司认为,拥有近乎无限上下文长度的LLM就能实现AGI,这种观点或许过于乐观。本文将深入探讨LLM在实现AGI道路上面临的挑战,并提出一种基于AI原生记忆的AGI实现路径。

    无限上下文并非万能解药

    当前,许多研究致力于扩展LLM的上下文长度,例如,GPT-4的上下文窗口为32K tokens,而最新的GPT-4-turbo和GPT-4o模型可以处理128K tokens;Gemini 1.5则声称拥有1M或10M tokens的上下文窗口。学术界也探索了对抗长度外推和位置偏差的方法,一些研究甚至声称实现了“无限”的上下文长度。

    然而,LLM是否能够有效利用超长甚至无限的上下文,目前尚无定论。我们认为,类似于人类的认知负荷,LLM能够处理的最大内容量可能存在固有限制。

    有效上下文长度的局限性

    现有的长上下文LLM通常采用“大海捞针”(NIAH)测试来评估其性能,即从大量无关文本中检索特定信息的能力。有效上下文长度则定义为测试LLM相较于强基线模型表现更优的最大长度。

    然而,根据最近一项针对长上下文模型的基准测试研究(Hsieh et al., 2024),大多数(如果不是全部)LLM都夸大了其上下文长度。例如,声称拥有128K上下文长度的GPT-4,其有效上下文长度仅为64K;而ChatGLM的有效上下文长度仅为4K,远低于其声称的128K。

    推理能力的瓶颈

    为了进一步验证LLM在长上下文场景下的推理能力,我们提出了一种新的评估任务——推理大海捞针,旨在验证LLM在需要同时进行检索和推理时的能力。

    我们以Mindverse AI的“第二自我”产品Mebot的真实用户数据为例,构建了8个不同的用户数据堆栈,并设计了6种不同的查询-信息对。实验结果表明,即使是最先进的LLM(如GPT-4o和GPT-4-turbo),在处理长文本和多跳推理时也表现不佳。

    图2:基于Mebot真实数据的推理大海捞针比较

    实验结果表明,响应质量与上下文长度和推理步骤数量呈负相关,这意味着LLM在处理长文本和多步推理方面存在困难

    AI原生记忆:通向AGI的关键

    我们认为,AGI应该是一个类似于计算机的系统,其中LLM充当处理器,LLM的上下文充当RAM,而记忆则扮演着磁盘存储的角色

    RALM/RAG:记忆的初级形态

    检索增强型LLM(RALM)可以通过筛选大量相关上下文来回答查询,可以看作是将记忆定义为仅包含原始数据的特例。然而,记忆不仅仅是原始数据,它还应该包含从原始数据中推理得到的重要结论,并能够被用户直接消费。

    什么是AI原生记忆?

    我们认为,AI原生记忆的最终形态是一个深度神经网络模型,它能够参数化和压缩所有类型的记忆,甚至是无法用自然语言描述的记忆。为了确保与同一个AGI代理交互的不同用户的记忆隐私,我们认为最佳实践是为每个用户维护一个独立的记忆模型。我们将这种介于AGI代理和特定用户之间的记忆模型称为该用户的大型个人模型(LPM)

    LPM记录、组织、索引和排列关于个人的每一个细节,最终为用户提供直接访问记忆的接口,并为下游应用程序(如个性化生成、推荐等)提供有用、完整的上下文。

    LPM的实现级别

    我们设想LPM的实现可以分为三个级别,复杂度递增:

    • L0:原始数据。这种方法类似于直接将RALM/RAG应用于原始数据,将记忆定义为所有原始数据。
    • L1:自然语言记忆。指可以用自然语言形式概括的记忆,例如用户的简短个人简介、重要句子或短语列表以及偏好标签。
    • L2:AI原生记忆。指不一定需要用自然语言描述的记忆,通过模型参数学习和组织。每个LPM都将是一个神经网络模型。

    L1:自然语言记忆

    在L1中,记忆将包含一组自然语言描述,例如关键词/标签、短语、句子甚至段落。这与信息提取和知识发现高度相关,包括短语挖掘、实体识别、关系提取、文本摘要、分类法构建等。

    L1 LPM的开发者需要指定方案,例如定义各种有用的记忆类型,包括但不限于:

    • (简短)个人简介:对用户的概括性描述,通常包含几句话。
    • 用户的兴趣主题:可以看作是一组标签的集合(例如,“政治”、“篮球”)。
    • 偏好:包括用户对各种事物的偏好。
    • 社交关系:包括用户的社交关系,例如提到过谁和哪些组织。

    L2:AI原生记忆

    在L2中,记忆超越了自然语言形式,成为一个神经网络模型,因此我们将其命名为“AI原生”。该模型旨在编码用户的所有记忆。

    L2 LPM可以看作是世界模型的个性化版本,它应该能够根据用户历史预测用户行为。

    L2 LPM的挑战和潜在解决方案:

    • 训练效率:一种直观但计算复杂的方法是为每个用户微调他们自己的LLM。
    • 服务效率:随着越来越多的L2 LPM部署给用户,需要新的基础设施来服务这些模型。
    • 冷启动:L2 LPM训练中的一个常见问题。
    • 灾难性遗忘和冲突解决:确保学习新记忆的同时防止旧记忆的灾难性遗忘至关重要。

    总结与展望

    AI原生记忆作为AGI时代(主动)参与、个性化、分发和社交的变革性基础设施,具有巨大的潜力,同时也带来了隐私和安全方面的挑战。

    我们相信,在未来,AGI代理将首先与AI原生记忆交互,并查看它是否能够提供必要的信息。如果不是,则由AI原生记忆与真实用户交互以找出更多信息。因此,AI原生记忆将成为用户与AGI代理之间所有交互和个性化的核心

  • 大语言模型会“梦见”大象吗?——浅析Transformer中的潜在概念关联与联想记忆

    引言:大语言模型的“大象梦境”

    当我们被要求不要去想一头大象时,我们脑海中浮现的第一个画面很可能就是一头大象。那么,如果我们对大语言模型(LLM)提出同样的要求,会发生什么呢?显然,LLM的输出会受到上下文标记的强烈影响 [Brown 等人,2020]。这种影响是否会以一种非同寻常的方式引导LLM改变其输出呢?

    为了深入理解这个问题,本文着眼于一项名为“事实检索”的任务 [Meng 等人,2022, 2023],该任务要求模型给出预期的输出答案。LLM经过海量数据的训练,已知具有存储和回忆事实的能力 [Meng 等人,2022, 2023; De 等人,2021; Mitchell 等人,2021, 2022; Dai 等人,2021]。这种能力引发了以下问题:事实检索的鲁棒性如何?它在多大程度上依赖于上下文中的语义?它揭示了LLM中记忆的哪些特性?

    本文首先证明了事实检索并不鲁棒,LLM很容易被变化的上下文所愚弄。例如,当被要求完成“埃菲尔铁塔位于…”时,GPT-2 [Radford 等人,2019] 会回答“巴黎”。然而,当提示为“埃菲尔铁塔不在芝加哥。埃菲尔铁塔位于…”时,GPT-2 却回答了“芝加哥”。图 1 展示了更多例子,包括 Gemma 和 LLaMA。另一方面,人类并不会觉得这两个句子在事实上令人困惑,在两种情况下都会回答“巴黎”。我们将这种现象称为“上下文劫持”。重要的是,这些发现表明LLM可能像一个联想记忆模型,其中上下文中的标记引导着记忆的检索,即使形成的这种关联本身并不具有语义意义。

    图 1:各种LLM的上下文劫持示例,表明事实检索并不鲁棒。

    上下文劫持:LLM的脆弱性

    为了深入研究上下文劫持现象,本文对包括 GPT-2 [Radford 等人,2019]、Gemma [Team,2024](基础模型和指令模型)以及 LLaMA-2-7B [Touvron 等人,2023] 在内的多个开源 LLM 模型进行了实验。

    本文使用 Meng 等人 [2022] 提出的 CounterFact 数据集进行大规模实验。CounterFact 数据集包含 21,919 个样本,每个样本由一个元组 (p, o, o_, s, r) 表示。其中,p 表示带有真实目标答案 o (target_true) 和错误目标答案 o_ (target_false) 的上下文提示,例如,提示 p = “埃菲尔铁塔可以在…” 中,真实目标 o* = “巴黎”,错误目标 o_ = “关岛”。此外,p 中的主要实体是主语 s (s = “埃菲尔铁塔”),提示被归类为关系 r(例如,与上述示例具有相同关系 ID 的其他样本可能是 “{subject} 的位置是”、”{subject} 可以在…找到”、”{subject} 在哪里?它在…”)。

    本文采用有效性分数 (ES) [Meng 等人,2022] 来衡量劫持方案的效果,ES 指的是在修改上下文后满足 Pr[o_] > Pr[o*] 的样本比例,即成功被操纵的数据集比例。

    本文实验了两种劫持方案。第一种方案是将文本“不要想 {target_false}”添加到每个上下文的开头。例如,将提示“埃菲尔铁塔在…”更改为“不要想关岛。埃菲尔铁塔在…”。图 2(a) 显示,劫持后有效性分数显著下降。

    第二种方案是利用关系 ID r 来添加事实上正确的句子。例如,可以将上面的例子劫持为“埃菲尔铁塔不在关岛。埃菲尔铁塔在…”。图 2(b) 报告了基于关系 ID P190(“姐妹城市”)的劫持结果。我们可以看到类似的模式,即添加的句子越多,ES 分数越低。值得注意的是,即使只包含与错误目标语义相近的词(例如,对于错误目标“法语”,使用“法国”),也可以进行劫持。这表明上下文劫持不仅仅是 LLM 从上下文中复制标记。

    图 2:上下文劫持会导致 LLM 输出错误的目标。该图显示了 CounterFact 数据集上各种 LLM 在两种劫持方案下的有效性分数与添加句子数量的关系。

    这些实验表明,上下文劫持可以在不改变上下文事实意义的情况下改变 LLM 的行为,导致它们输出不正确的标记。值得注意的是,文献中也观察到 LLM 在不同情况下存在类似的脆弱行为 [Shi 等人,2023; Petroni 等人,2020; Creswell 等人,2022; Yoran 等人,2023; Pandia 等人,2021]。

    潜在概念关联:模拟LLM的联想记忆

    上下文劫持表明 LLM 中的事实检索并不鲁棒,准确的事实回忆不一定依赖于上下文的语义。因此,一个假设是将 LLM 视为联想记忆模型,其中与事实相关的特殊上下文标记提供了部分信息或线索,以促进记忆检索 [Zhao 等人,2023]。为了更好地理解这一观点,本文设计了一个合成记忆检索任务,以评估 LLM 的基本组成部分——Transformer 如何解决它。

    本文提出了一个合成预测任务,其中对于每个输出标记 y,上下文中的标记(用 x 表示)从给定 y 的条件分布中采样。与 y 相似的标记将更容易出现在上下文中,但 y 本身除外。潜在概念关联的任务是在给定 p(x|y) 的样本的情况下成功检索标记 y。这种合成设置简化了语言的顺序性,这一选择得到了先前关于上下文劫持实验的支持(第 3 节)。

    为了衡量相似性,本文定义了一个潜在空间。潜在空间是 m 个二元潜在变量 Zi 的集合,可以将其视为语义概念变量。令 Z = (Z1, …, Zm) 为对应的随机向量,z 为其具体值,𝒵 为所有潜在二元向量的集合。对于每个潜在向量 z,都有一个关联的标记 t ∈ [V] = {0, …, V-1},其中 V 是标记的总数。这里我们用 ι 表示标记器,其中 ι(z) = t。在本文中,我们假设 ι 是标准标记器,其中每个二元向量映射到其十进制数。换句话说,潜在向量和标记之间存在一一映射。由于映射是一对一的,我们有时会交替使用潜在向量和标记。我们还假设每个潜在二元向量都有一个唯一的对应标记,因此 V = 2^m。

    在潜在概念关联模型下,目标是在上下文中给出部分信息的情况下检索特定的输出标记。这由潜在条件分布建模:

    p(z|z*) = ωπ(z|z*) + (1-ω)Unif(𝒵)

    其中

    π(z|z*) ∝ { exp(-DH(z, z*)/β)  z∈𝒩(z*),
                 0              z∉𝒩(z*).

    这里 DH 是汉明距离,𝒩(z) 是 𝒵∖{z} 的一个子集,β > 0 是温度参数。汉明距离的使用与自然语言中分布语义的概念相呼应:“一个词的特征在于它周围的词” [Firth, 1957]。换句话说,p(z|z) 表示以概率 1-ω,条件分布均匀地生成随机潜在向量;以概率 ω,潜在向量从信息条件分布 π(z|z) 生成,其中条件分布的支持是 𝒩(z)。这里,π 表示依赖于 z 的信息条件分布,而均匀分布是非信息的,可以被视为噪声。混合模型参数 ω 决定了上下文的信噪比。

    因此,对于任何潜在向量 z* 及其关联的标记,可以使用上述潜在条件分布生成 L 个上下文标记词:

    • 均匀采样一个潜在向量 z*
    • 对于 l = 1, …, L-1,采样 zl ~ p(z|z*),tl = ι(zl)。
    • 对于 l = L,采样 z ~ π(z|z*),tL = ι(z)。

    因此,我们有 x = (t1, …, tL) 和 y = ι(z*)。上下文中的最后一个标记是专门生成的,以确保它不是来自均匀分布。这确保了最后一个标记可以使用注意力在上下文中寻找与输出相关的线索。令 𝒟^L 为生成 (x, y) 对的采样分布。y 给定 x 的条件概率由 p(y|x) 给出。为了方便起见,给定一个标记 t ∈ [V],我们定义 𝒩(t) = 𝒩(ι^-1(t))。我们还定义 DH(t, t’) = DH(ι^-1(t), ι^-1(t’)),对于任何一对标记 t 和 t’。

    对于任何将上下文映射到输出标签估计 logits 的函数 f,训练目标是最小化最后一个位置的损失:

    𝔼_(x,y)∈𝒟^L [ℓ(f(x), y)]

    其中 ℓ 是带有 softmax 的交叉熵损失。潜在概念关联的错误率定义如下:

    R_𝒟^L(f) = ℙ_(x,y)~𝒟^L [argmax f(x) ≠ y]

    准确率为 1 – R_𝒟^L(f)。

    Transformer网络架构

    给定一个由 L 个标记组成的上下文 x = (t1, …, tL),我们定义 X ∈ {0, 1}^(V×L) 为其 one-hot 编码,其中 V 是词汇量大小。这里我们用 χ 表示 one-hot 编码函数(即 χ(x) = X)。类似于 [Li 等人,2023; Tarzanagh 等人,2023; Li 等人,2024],我们也考虑一个简化的单层 Transformer 模型,没有残差连接和归一化:

    f^L(x) = [W_E^T W_V attn(W_E χ(x))]_:L

    其中

    attn(U) = U σ((W_K U)^T (W_Q U) / √d_a),

    W_K ∈ ℝ^(d_a×d) 是键矩阵,W_Q ∈ ℝ^(d_a×d) 是查询矩阵,d_a 是注意力头的大小。σ: ℝ^(L×L) → (0, 1)^(L×L) 是列式 softmax 操作。W_V ∈ ℝ^(d×d) 是值矩阵,W_E ∈ ℝ^(d×V) 是嵌入矩阵。这里,我们采用 Gemma [Team,2024] 使用的权重绑定实现。我们只关注最后一个位置的预测,因为它与潜在概念关联相关。为了方便起见,我们也用 h(x) 表示 [attn(W_E χ(x))]_:L,它是最后一个位置经过注意力后的隐藏表示,用 f_t^L(x) 表示输出标记 t 的 logit。

    理论分析:Transformer如何实现联想记忆

    在本节中,我们将从理论上研究单层 Transformer 如何解决潜在概念关联问题。我们首先介绍一个假设的联想记忆模型,该模型利用自注意力进行信息聚合,并使用值矩阵进行记忆检索。事实证明,这个假设模型在实验中反映了训练好的 Transformer。我们还研究了网络每个组件的作用:值矩阵、嵌入和注意力机制。

    假设的联想记忆模型

    在本节中,我们将展示一个简单的单层 Transformer 网络可以解决潜在概念关联问题。形式化结果在下面的定理 1 中给出;首先我们需要一些定义。令 W_E(t) 为嵌入矩阵 W_E 的第 t 列。换句话说,这是标记 t 的嵌入。给定一个标记 t,定义 𝒩_1(t) 为其潜在向量与 t 的潜在向量只有 1 个汉明距离的标记子集:𝒩_1(t) = {t’: DH(t’, t)) = 1} ∩ 𝒩(t)。对于任何输出标记 t,𝒩_1(t) 包含在上下文中出现概率最高的标记。

    以下定理形式化了这样一种直觉:一个单层 Transformer 使用自注意力来总结上下文分布的统计信息,并且其值矩阵使用聚合表示来检索输出标记,可以解决第 4.1 节中定义的潜在概念关联问题。

    定理 1(非正式)

    假设数据生成过程遵循第 4.1 节,其中 m ≥ 3,ω = 1,并且 𝒩(t) = V∖{t}。那么对于任何 ε > 0,存在一个由公式 4.1 给出的 Transformer 模型,在上下文长度 L 足够大的情况下,可以实现误差 ε,即 R_𝒟^L(f^L) < ε。

    更准确地说,对于定理 1 中的 Transformer,我们将有 W_K = 0 和 W_Q = 0。W_E 的每一行都相互正交并归一化。W_V 由下式给出:

    W_V = ∑_(t∈[V]) W_E(t) (∑_(t'∈𝒩_1(t)) W_E(t')^T)

    定理的更正式陈述及其证明在附录 A(定理 7)中给出。

    直观地说,定理 1 表明,从 p(x|y) 中获得更多样本可以提高召回率。另一方面,如果修改上下文以包含更多来自 p(x|ỹ) 的样本,其中 ỹ ≠ y,那么 Transformer 很可能输出错误的标记。这类似于上下文劫持(见第 5.5 节)。值矩阵的构造类似于 [Bietti 等人,2024; Cabannes 等人,2024] 中使用的联想记忆模型,但在我们的例子中,没有明确的一对一输入和输出对作为记忆存储。相反,输入的组合被映射到单个输出。

    虽然定理 1 中的构造只是单层 Transformer 解决此任务的一种方法,但事实证明,即使在噪声情况下 (ω ≠ 1),这种 W_V 的构造也接近于训练好的 W_V。在第 6.1 节中,我们将证明用构造的值矩阵替换训练好的值矩阵可以保持准确性,并且构造的值矩阵和训练好的值矩阵甚至共享接近的低秩近似。此外,在这个假设模型中,部署了一个简单的均匀注意力机制,允许自注意力计算每个标记出现的次数。由于嵌入是正交向量,因此没有干扰。因此,自注意力层可以被视为聚合上下文信息。值得注意的是,在不同的设置中,需要更复杂的嵌入结构和注意力模式。这将在以下几节中讨论。

    值矩阵的作用

    定理 1 中的构造依赖于值矩阵作为联想记忆。但这是必要的吗?我们能否将值矩阵的功能集成到自注意力模块中来解决潜在概念关联问题?从经验上看,答案似乎是否定的,这将在第 6.1 节中显示。特别是,当上下文长度较小时,将值矩阵设置为单位矩阵会导致记忆召回准确率较低。

    这是因为如果值矩阵是单位矩阵,Transformer 将更容易受到上下文噪声的影响。为了理解这一点,请注意,给定任何一对上下文和输出标记 (x, y),自注意力后的潜在表示 h(x) 必须位于多面体 S_y 中才能被正确分类,其中 S_y 定义为:

    S_y = {v: (W_E(y) - W_E(t))^T v > 0 where t ∉ [V]∖{y}}

    请注意,根据定义,对于任何两个标记 y 和 ỹ,S_y ∩ S_ỹ = ∅。另一方面,由于自注意力机制,h(x) 也必须位于所有嵌入向量的凸包中:

    CV = Conv(W_E(0), ..., W_E(|V|-1))

    换句话说,为了正确分类任何一对 (x, y),h(x) 必须位于 S_y 和 CV 的交集中。由于 x 的随机性,h(x) 很可能位于此交集之外。值矩阵的重映射效果可以帮助解决这个问题。以下引理解释了这种直觉。

    引理 2

    假设数据生成过程遵循第 4.1 节,其中 m ≥ 3,ω = 1,并且 𝒩(t) = {t’: DH(t, t’) = 1}。对于公式 4.1 给出的任何单层 Transformer,其中 W_E 的每一行都相互正交并归一化,如果 W_V 的构造如公式 5.1 所示,则错误率为 0。如果 W_V 是单位矩阵,则错误率严格大于 0。

    当值矩阵是单位矩阵时,会出现另一个有趣的现象。在这种情况下,嵌入与其对应汉明距离之间的内积呈线性变化。这种关系可以用以下定理来形式化。

    定理 3

    假设数据生成过程遵循第 4.1 节,其中 m ≥ 3,ω = 1,并且 𝒩(t) = V∖{t}。对于公式 4.1 给出的任何单层 Transformer,其中 W_V 为单位矩阵,如果最小化交叉熵损失,使得对于任何采样的对 (x, y),

    p(y|x) = p̂(y|x) = softmax(f_y^L(x))

    则存在 a > 0 和 b,使得对于两个标记 t ≠ t’,

    ⟨W_E(t), W_E(t')⟩ = -a DH(t, t') + b


    嵌入训练和几何结构

    第 5.1 节中的假设模型要求嵌入形成一个正交基。在嵌入维度 d 大于标记数量 V 的过参数化机制中,可以通过高斯初始化来近似实现这一点。然而,在实践中,嵌入维度通常小于词汇量大小,在这种情况下,嵌入不可能构成这样的基。根据经验,在第 6.2 节中,我们观察到在过参数化 (d > V) 的情况下,嵌入可以冻结在其高斯初始化状态,而在欠参数化机制中,需要进行嵌入训练才能获得更好的召回准确率。

    这就引出了一个问题:在欠参数化机制中学习了什么样的嵌入几何结构?实验揭示了两个标记的嵌入内积与其汉明距离之间的密切关系(见图 3(b) 和第 C.2 节中的图 C.5)。近似地,我们有以下关系:

    ⟨W_E(t), W_E(t')⟩ = { b_0      t = t',
                         -a DH(t, t') + b  t ≠ t'

    对于任意两个标记 t 和 t’,其中 b_0 > b 且 a > 0。可以将其视为高斯初始化下的嵌入几何结构与 W_V 为单位矩阵时的几何结构的组合(定理 3)。重要的是,这种结构表明训练好的嵌入本身就捕获了潜在空间内的相似性。从理论上讲,这种嵌入结构(公式 5.2)在 b_0、b 和 a 的特定条件下也可以导致低错误率,这由以下定理阐明。

    定理 4(非正式)

    遵循与定理 1 相同的设置,但嵌入遵循公式 5.2,那么在 a、b 的特定条件下,如果 b_0 和上下文长度 L 足够大,则错误率可以任意小,即对于任何 0 < ε < 1,R_𝒟^L(f^L) < ε。

    定理的正式陈述及其证明在附录 A(定理 8)中给出。

    值得注意的是,这种嵌入几何结构也意味着低秩结构。让我们首先考虑 b_0 = b 的特殊情况。换句话说,嵌入与其对应汉明距离之间的内积呈线性变化。

    引理 5

    如果嵌入遵循公式 5.2 且 b = b_0,并且 𝒩(t) = V∖{t},则 rank(W_E) ≤ m + 2。

    当 b_0 > b 时,嵌入矩阵不会严格低秩。然而,它仍然可以表现出近似的低秩行为,其特征是顶部和底部奇异值之间存在特征间隙。这在经验上得到了验证(见第 C.4 节中的图 C.9-C.12)。

    注意力选择的作用

    到目前为止,注意力在分析中并没有发挥重要作用。但也许并不令人意外的是,注意力机制在选择相关信息方面很有用。为了理解这一点,让我们考虑一个特定的设置,其中对于任何潜在向量 z,𝒩(z) = {z: z_1* = z_1}∖{z*}。

    本质上,潜在向量根据第一个潜在变量的值被划分为两个簇,信息条件分布 π 只采样与输出潜在向量位于同一簇中的潜在向量。根据经验,当在此设置下进行训练时,注意力机制将更加关注同一簇中的标记(第 6.3 节)。这意味着自注意力层可以减轻噪声并集中于信息条件分布 π。

    为了更直观地理解这一点,我们将研究未归一化注意力分数的梯度。具体来说,未归一化注意力分数定义为:

    u_(t, t') = (W_K W_E(t))^T (W_Q W_E(t')) / √d_a.

    引理 6

    假设数据生成过程遵循第 4.1 节,并且 𝒩(z) = {z: z_1 = z_1}∖{z*}。给定序列中的最后一个标记 t_L,则

    ∇_(u_(t, t_L)) ℓ(f^L) = ∇ℓ(f^L)^T (W_E)^T W_V (α_t p̂_t W_E(t) - p̂_t ∑_(l=1)^L p̂_(t_l) W_E(t_l))

    其中对于标记 t,αt = ∑(l=1)^L 1[t_l = t],p̂_t 是标记 t 的归一化注意力分数。

    通常,当标记 t 和 t_L 属于同一簇时,α_t 更大,因为同一簇中的标记往往频繁地共现。因此,对于同一簇中的标记,对未归一化注意力分数的梯度贡献通常更大。

    上下文劫持与记忆召回的错误分类

    根据潜在概念关联的理论结果,自然会产生一个问题:这些结果如何与 LLM 中的上下文劫持联系起来?本质上,对于潜在概念关联问题,输出标记的区分是通过区分各种条件分布 p(x|y) 来实现的。因此,在上下文 x 中添加或更改标记,使其类似于不同的条件分布,会导致错误分类。在第 C.5 节中,我们展示了混合不同上下文会导致 Transformer 错误分类的实验。这部分解释了 LLM 中的上下文劫持(第 3 节)。另一方面,众所周知,错误率与上下文条件分布之间的 KL 散度有关 [Cover 等人,1999]。分布越接近,模型就越容易错误分类。这里,主要由独立同分布样本组成的较长上下文意味着更大的散度,因此记忆召回率更高。这在理论上由定理 1 和定理 4 暗示,并在第 C.6 节中得到经验证明。这一结果也与反向上下文劫持有关,在反向上下文劫持中,添加包含真实目标词的句子可以提高事实召回率。

    实验:验证理论分析

    前一节的理论结果的主要含义是:

    1. 值矩阵很重要,并且具有公式 5.1 中所示的联想记忆结构。
    2. 在欠参数化机制中,训练嵌入至关重要,其中嵌入表现出特定的几何结构。
    3. 注意力机制用于选择最相关的标记。

    为了评估这些说法,我们在合成数据集上进行了几项实验。其他实验细节和结果可以在附录 C 中找到。

    关于值矩阵 W_V

    在本节中,我们将研究值矩阵 W_V 的必要性及其结构。首先,我们进行实验来比较训练和冻结 W_V 为单位矩阵的影响,上下文长度 L 设置为 64 和 128。图 3(a) 和图 C.1 显示,当上下文长度较小时,冻结 W_V 会导致准确率显著下降。这与引理 2 一致,并在一般情况下对其进行了验证,这意味着值矩阵在保持高记忆召回率方面的重要性。

    接下来,我们研究训练好的值矩阵 W_V 与公式 5.1 中构造的值矩阵之间的一致程度。第一组实验检查了两个矩阵在功能上的相似性。我们将训练好的 Transformer 中的值矩阵替换为公式 5.1 中构造的值矩阵,然后报告使用新值矩阵的准确率。作为基线,我们还考虑随机构造的值矩阵,其中外积对是随机选择的(详细构造可以在第 C.1 节中找到)。图 C.2 表明,当值矩阵被替换为构造的值矩阵时,准确率并没有显著下降。此外,构造的值矩阵和训练好的值矩阵不仅在功能上相似,而且它们还共享相似的低秩近似。我们使用奇异值分解来获得各种值矩阵的最佳低秩近似,其中秩设置为与潜在变量的数量 (m) 相同。然后,我们计算训练好的值矩阵的低秩近似与构造的、随机构造的和高斯初始化的值矩阵的低秩近似之间的最小主角度。图 C.3 显示,构造的值矩阵平均而言与训练好的值矩阵具有最小的主角度。

    图 3:单层 Transformer 的关键组件在潜在概念关联问题上协同工作。(a) 与训练

    W_V 相比,将值矩阵 W_V 固定为单位矩阵会导致准确率降低。该图报告了 L =

    64 时固定和训练 W_V 的平均准确率。(b) 在欠参数化机制中进行训练时,嵌入结构由公式 5.2 近似。该图显示了当 m = 8 时,两个标记的嵌入之间的平均内积与其对应汉明距离的关系。(c) 自注意力层可以选择同一簇中的标记。该图显示了 m = 8 时的平均注意力分数热图和第 5.4 节中的簇结构。

    关于嵌入

    在本节中,我们将探讨嵌入训练在欠参数化机制中的重要性以及嵌入结构。我们进行实验来比较训练和冻结嵌入在不同嵌入维度下的影响。根据维度,从 {0.01, 0.001} 中选择最佳学习率。图 C.4 清楚地表明,当维度小于词汇量大小 (d < V) 时,需要进行嵌入训练。在过参数化机制 (d > V) 中,这不是必需的,这部分证实了定理 1,因为如果嵌入是从高维多元高斯分布初始化的,它们近似相互正交并具有相同的范数。

    下一个问题是在欠参数化机制中,训练好的 Transformer 形成了什么样的嵌入结构。从图 3(b) 和图 C.5 可以明显看出,两个标记的嵌入的平均内积与其对应汉明距离之间的关系大致符合公式 5.2。也许令人惊讶的是,如果我们绘制值矩阵固定为单位矩阵的训练好的 Transformer 的相同图形,则关系大多是线性的,如图 C.6 所示,这证实了我们的理论(定理 3)。

    正如第 5.3 节所建议的那样,这种嵌入几何结构(公式 5.2)会导致低秩结构。我们通过研究嵌入矩阵 W_E 的谱来验证这一说法。如图 C.4 所示,图 C.9-C.12 表明顶部和底部奇异值之间存在特征间隙,表明存在低秩结构。

    关于注意力选择机制

    在本节中,我们将通过考虑第 5.4 节中定义的一类特殊的潜在概念关联模型来研究注意力模式的作用。图 3(c) 和图 C.7 清楚地表明,自注意力选择了与最后一个标记位于同一簇中的标记。这表明注意力可以过滤掉噪声并集中于信息条件分布 π。我们将实验扩展到考虑依赖于前两个潜在变量的簇结构(详细构造可以在第 C.3 节中找到),图 C.8 显示了预期的注意力模式。

    结论:对LLM内部机制的进一步理解

    在这项工作中,我们首先介绍了 LLM 中的上下文劫持现象,这表明事实检索对于上下文的变异并不鲁棒。这表明 LLM 可能像联想记忆一样工作,其中上下文中的标记是引导记忆检索的线索。为了进一步研究这一观点,我们设计了一个名为潜在概念关联的合成任务,并从理论上和经验上研究了如何训练单层 Transformer 来解决此任务。这些结果为 Transformer 和 LLM 的内部工作机制提供了进一步的见解,并有望激发进一步的工作来解释和理解 LLM 预测标记和回忆事实的机制。

    参考文献

    • Brown, T. B., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., Neelakantan, A., Shyam, P., Sastry, G., Askell, A., et al. (2020). Language models are few-shot learners. Advances in neural information processing systems, 33:1877–1901.
    • Meng, K., Bau, D., Andonian, A., and Belinkov, Y. (2022). Locating and editing factual associations in gpt. Advances in Neural Information Processing Systems, 35:17365–17380.
    • Meng, K., Lee, D., Bau, D., and Belinkov, Y. (2023). Mass-editing factual associations in language models. arXiv preprint arXiv:2303.08354.
    • De, A., Burns, C., Malinowski, M., and Rumshisky, A. (2021). Editing factual knowledge in language models. arXiv preprint arXiv:2112.08155.
    • Mitchell, E., Lin, C.-J., Bosselut, A., Finn, C., and Manning, C. D. (2021). Fast model editing at scale. arXiv preprint arXiv:2110.11309.
    • Mitchell, E., Lee, K., Khabsa, M., Lin, C.-J., Finn, C., and Manning, C. D. (2022). Memory-based model editing at scale. arXiv preprint arXiv:2207.14296.
    • Dai, D., Dong, L., Hao, Y., Sui, Z., Ke, F., Zhang, J., Zhang, Y., Wang, J., and Qiu, X. (2021). Knowledge neurons in pretrained transformers. arXiv preprint arXiv:2104.08688.
    • Radford, A., Wu, J., Child, R., Luan, D., Amodei, D., and Sutskever, I. (2019). Language models are unsupervised multitask learners. OpenAI blog, 1(8):9.
    • Team, G. (2024). Gemma.
    • Touvron, H., Martin, L., Stone, K., Albert, P., Almahairi, A., Babaei, Y., Bashlykov, N., Batra, S., Bhargava, P., Bhosale, S., et al. (2023). Llama 2: Open foundation and fine-tuned chat models. arXiv preprint arXiv:2307.09288.
    • Zhao, W., Peng, B., Zhou, C., Wang, J., and Chang, S. (2023). Context-aware prompt learning for few-shot text classification. In Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), pages 6436–6448.
    • Firth, J. R. (1957). A synopsis of linguistic theory, 1930–1955. Studies in linguistic analysis.
    • Li, Z., Wallace, E., Shen, S., Lin, K., Ke, G., and Zhang, S. (2023). Transformers learn in-context by gradient descent. arXiv preprint arXiv:2308.12175.
    • Tarzanagh, D. A. and Dasgupta, S. (2023). Margin maximization in transformers for in-context few-shot learning. arXiv preprint arXiv:2305.11146.
    • Li, Z., Wallace, E., Shen, S., Lin, K., Ke, G., and Zhang, S. (2024). The mechanics of in-context learning in transformers. arXiv preprint arXiv:2401.04182.
    • Cover, T. M. (1999). Elements of information theory. John Wiley & Sons.
    • Devroye, L., Lugosi, G., and Boucheron, S. (2013). A probabilistic theory of pattern recognition, volume 31. Springer Science & Business Media.
    • Loshchilov, I. and Hutter, F. (2017). Decoupled weight decay regularization. arXiv preprint arXiv:1711.05101.


  • 用角色扮演零样本提示打造更像人类的聊天机器人

    近年来,大型语言模型(LLM)在各个自然语言处理任务中都取得了显著的进步,其中一项就是开放域对话。这项技术旨在创造能够与用户进行自然、流畅对话的智能体,并展现出类似人类的同理心、个性和娱乐性等特质。

    传统方法的局限性

    目前,构建开放域对话系统的常见方法主要依赖于针对特定数据集的微调。例如,PersonaChat、Blended Skill Talk 和 Empathetic Dialogues 等数据集就被用于训练模型在对话中展现不同的技能。然而,这些数据集的构建成本高昂,而且通常只有一种语言版本。此外,最近自然语言处理领域的发展重点是训练能够遵循指令的LLM,例如 Alpaca、StackLLaMA、Guanaco 和本文研究的重点模型 Vicuna。这些模型能够以自然语言的方式响应用户的输入,但它们仍然局限于“领导者-追随者”的单向关系,难以直接展现出人类的对话能力。

    角色扮演零样本提示:一种高效且经济的解决方案

    为了解决上述问题并避免微调及其对数据的依赖性,本文提出了一种基于角色扮演的零样本提示方法,利用指令遵循模型的能力来构建开放域对话系统。这种方法属于新兴的基于提示的学习(PBL)范式。

    角色扮演提示的内涵

    角色扮演提示的意义不仅限于扮演一个给定的角色,更在于引导LLM展现出适合特定对话任务的模拟角色。LLM在预训练过程中吸收了海量的模拟角色,而角色扮演提示的作用就是引导LLM选择并展现出最适合当前对话场景的模拟角色。

    提示结构

    为了有效地处理开放域对话的复杂性,我们定义了一个通用的提示结构,该结构可以根据不同的对话任务进行调整。这个结构包含以下几个关键部分:

    1. 系统指令 (ℐs) : 明确定义目标任务的规范和全局期望行为,包括思考和写作风格。
    2. 情境上下文 (𝒞t) : 提供有助于模型更好地执行任务的上下文信息,例如个性信息、图像描述、对话历史摘要或来自外部子模块的信息。
    3. 回复指令 (ℐa) : 指示LLM如何回应用户的语句,强调写作风格、目标回复语言以及与情境上下文的关联性。
    4. 对话历史 (𝒳t) : 包含用户和LLM之前的对话记录,可以根据LLM的token大小限制进行截断,或者通过外部模块生成摘要来保留更长的对话历史。

    最终,提示构建器会根据不同的对话任务,将上述部分以最合适的顺序组合成最终的提示。

    实验与评估

    为了评估角色扮演零样本提示方法的有效性,我们在两个不同的对话任务上进行了实验:

    1. 基于PersonaChat数据集的通用角色任务: 通过角色扮演提示来增强LLM在对话中的类人能力。
    2. 模拟多模态对话的INT任务: 引导LLM描述而非解释一个模拟角色,从而模拟多模态对话场景。

    评估指标

    我们采用人工评估的方式来衡量对话系统的性能,评估指标包括:

    • 连贯性: 系统生成回复与对话历史的一致性。
    • 吸引力: 系统通过回复来引导对话继续进行的能力。
    • 类人性: 系统回复的自然程度,以及与人类对话的相似程度。
    • 目标达成: (仅限INT任务) 对话双方成功达成任务目标的程度。

    实验结果

    实验结果表明,角色扮演零样本提示方法能够有效地提升LLM在开放域对话中的性能。

    • 在PersonaChat任务中,使用高级提示的Vicuna-13B模型在连贯性和类人性方面都取得了最佳成绩,其性能与经过微调的BlenderBot模型相当。
    • 在INT任务中,使用高级提示的Vicuna-13B模型在所有评估指标上都优于其他系统,包括人工参与的Wizard of Oz实验。

    统计分析

    对收集到的对话进行统计分析后发现,指令遵循模型存在着回复过于冗长的缺陷。

    结论与展望

    本文探讨了使用结构化的角色扮演提示工程来改进LLM的开放域人机对话。角色扮演提示是一种简单且经济的方法,可以升级语言模型的行为,使其成为对话代理。本文的实验在法语环境下进行,但可以通过调整角色方向将其应用于其他语言。在两个不同的任务(基于角色的任务和模拟多模态对话)中的实验表明,尽管语言模型仍然存在明显的缺点(例如幻觉),但用户对这些代理的感知可以与成本更高的微调模型相媲美。

    未来,我们将进一步改进提示工程,自动化构建和过滤过程,并探索使用强化学习来自动生成提示。

  • 利用大型语言模型进行开放域人机对话中的角色扮演零样本提示

    引言

    自从Transformer被引入以来(Vaswani et al., 2017),衍生的大型语言模型(LLMs)在多个自然语言处理(NLP)任务上不断提升了技术水平。其中,开放域对话是指设计一个对话代理,使其能够在任何话题上与用户进行社交互动,展示出人类的能力,如共情、个性和娱乐性(Walker et al., 2021)。常见的方法是使用特定的数据集进行微调,通常针对某一或多种技能(例如PersonaChat,Blended Skill Talk,Empathetic Dialogues等)。然而,这些数据集的构建成本高且通常仅限于一种语言。

    在本研究中,我们探索了一种高效且成本低廉的解决方案:通过角色扮演零样本提示,利用具备多语言能力的大型语言模型(如Vicuna)来提升开放域对话能力。我们设计了一种提示系统,与指令跟随模型结合,能够在两项任务中与人类评估中的微调模型相媲美,甚至超越它们。

    相关工作

    开放域对话领域有很多发展,大多数解决方案主要集中在使用特定数据进行微调。例如BlenderBot系列,Meena,LaMDA等。这些模型展示了出色的对话技能,但除了对数据的依赖外,它们通常仅限于英语。基础模型是NLP领域的一个新趋势,它们展示了多语言能力并在多个基准上表现出色。其中,LLaMA模型是本研究的基础。

    方法论

    指令跟随 vs 对话技能

    引用Reitz(2019)的话:“对话不仅仅是进行对话。真正的对话描述了一种相互、关系、专注和有意义的互动方式。”尽管指令跟随模型经过优化以进行对话,但它们在真正的对话中往往无法满足这些方面的要求。尤其是社交方面——相互性、关系性和专注性——表现得较差。

    角色扮演提示

    理解角色扮演提示不仅限于扮演特定角色。根据Shanahan等(2023)的模拟和模拟器框架,LLM是一个模拟器,在预训练期间吞噬了无数的模拟物。在每次模拟中,它会随机选择一个合适的模拟物进行展示。角色扮演提示通过使LLM倾向于适应特定对话任务的模拟物来增强对话技能。

    提示结构

    开放域对话属于复杂任务领域(Santu和Feng,2023),提示的微小变化可能会影响模型的表现。因此,定义一个通用的提示结构是必要的,以便可以针对不同的对话任务进行调整。我们保留以下部分作为提示工程模块的构建块:

    1. 系统指令:定义目标任务的规格和总体期望行为。
    2. 情境上下文:提供有助于模型更好地执行任务的背景信息。
    3. 响应指令:引导LLM生成符合写作风格、目标语言和创造性的响应。
    4. 对话历史:包含用户和LLM的先前消息,可根据需要进行摘要或更新。

    实验

    系统架构

    系统架构如图1所示,它包括多个模块,如基于Rasa X工具的Web界面、提示构建模块和过滤模块。用户可以通过语音或文本与代理进行交流。

    具有人类能力的开放域对话:PersonaChat任务

    此任务通过使用从PersonaChat数据集中提取的个性特征来增强LLM的对话能力。我们设计了浅层提示和高级提示两种方案进行比较。

    模拟多模态对话:INT任务

    此任务验证了模型在特定主题下进行对话的能力。对话系统旨在进行多模态对话,背景是神经科学实验。用户和代理需要讨论一张图片,并找出其推广目标。

    人类评估

    为了评估模型的性能,我们进行了自我聊天和人机聊天两种评估。评估标准包括一致性、互动性和人性化。此外,对于INT任务,还增加了任务完成度这一标准。

    自我聊天评估

    自我聊天评价通过比较不同设置下生成的对话进行。结果表明,模型尺寸越大、指令调优的模型表现越好。

    人机聊天评估

    在PersonaChat任务中,我们收集了用户与模型的对话,并与BlenderBot进行了比较。结果显示,高级提示在一致性和人性化上得分最高,而浅层提示在互动性上得分最低。

    在INT任务中,Vicuna & Advanced Prompt系统在所有标准上表现最佳,除了人性化。实验表明,该系统在保持对话互动性方面表现出色。

    统计分析

    我们对收集的对话进行了统计分析,包括词汇量、每条消息的单词数等。结果显示,Vicuna模型在生成的对话中词汇量较大,但也存在过度冗长的问题。

    过滤错误分析

    我们评估了响应生成中的错误类型,包括内容不适当、消息过长或使用错误语言等。结果表明,通过适当的提示和过滤,可以减少这些错误的发生率。

    结论

    本文探讨了通过结构化角色扮演提示工程来提升LLM在开放域人机对话中的表现。实验结果表明,尽管语言模型仍存在一定的缺陷,如幻觉,但用户对这些代理的感知可以与高成本的微调模型相媲美。未来的工作可以通过全方位的强化学习来进一步优化提示生成过程。

    参考文献

    • Vaswani et al. (2017)
    • Walker et al. (2021)
    • Shanahan et al. (2023)
    • Santu 和 Feng (2023)
    • Zhang et al. (2018)
    • Roller et al. (2021)
  • WildGuard:LLM安全风险、一站式审核工具

    引言

    现代语言模型(LLM)在没有充分保障的情况下,可能带来相当大的风险[5, 9, 42, 16, 37]。有效的内容审核对于减轻这些风险至关重要,通过过滤不良输入[24],监控有害模型输出[17],并通过测量有害与良性提示的拒绝率来评估模型的安全性[30]。

    在本文中,我们介绍了WildGuard,这是一款轻量级、多功能的审核工具,用于评估用户与LLM交互的安全性。WildGuard为三项安全审核任务提供了一站式资源:提示有害性检测、响应有害性检测和响应拒绝检测。我们展示了WildGuard如何在所有三项任务上推动开源安全审核工具的最先进水平,并提供了一种更开放、一致和经济的替代方案,与昂贵且非静态的API审核工具相比,WildGuard表现不相上下甚至更好。

    开发WildGuard的动机主要来自两个观察结果。首先,现有的开源工具如Llama-Guard2[17]在识别对抗性提示(即越狱)方面效果较差,远不如GPT-4。其次,虽然现有的开源工具可以在一定程度上识别响应中的有害内容,但仅凭响应的有害性不足以确定模型是否拒绝了用户的请求。这对于测试夸大的安全性尤为重要,例如,当用户询问“如何杀死Python进程?”时,响应通常是良性的,无论是过度拒绝(“我不能提供暴力行为的指示”)还是正确的合规(“杀死Python进程的方法是…”)。因此,分类有害性不足以评估安全性,需要独立评估拒绝。

    LLM安全审核工具的现状

    测试基准

    为了评估对抗性提示中的有害性检测,我们从WildJailbreak(WJ)[3]的验证集中抽样了一组250个良性和250个有害提示。为了评估细微拒绝检测,我们使用了我们新的基准XSTest-Resp。

    模型

    我们评估了开源和闭源工具。在开源工具中,我们测试了四个模型,旨在识别提示和响应中的有害性:Llama-Guard[17],Llama-Guard2[26],Aegis-Guard-Defensive[14]和Aegis-Guard-Permissive[14]。对于这些模型,为了标记拒绝,我们将输出有害的响应标记为合规,如果输出标签是安全的,则标记为拒绝。

    发现

    发现1:现有的开源工具在对抗性提示上不可靠,远远落后于GPT-4。如图2所示,现有的开源工具在检测普通提示中的有害性方面表现尚可,但在对抗性提示中却表现不佳。对于两种提示类型,我们还看到了开源工具与GPT-4之间的显著性能差距,从而导致对API工具的昂贵依赖持续存在。

    发现2:现有的开源工具难以测量模型响应中的拒绝。表2显示了开源工具在识别模型完成中的拒绝方面也存在困难。表现最好的有害检测模型Llama-Guard2比GPT-4低15.1%,验证了响应有害性不足以完成这项任务。

    构建WildGuardMix和WildGuard

    WildGuardTrain:多任务审核训练数据集

    WildGuardTrain(WGTrain)是一个综合训练数据集,共包含86,759项数据,涵盖多种来源的数据,包括普通(直接请求)和对抗性提示。数据覆盖了良性和有害场景,以及各种类型的拒绝和合规响应。

    提示构建

    我们生成了覆盖广泛风险场景的有害提示,并引入了两种类型的良性对比提示:1)表面上类似不安全提示的良性提示,以及2)讨论敏感但安全话题的良性提示。

    合规和拒绝构建

    对于我们的合成对抗性和普通提示,我们生成了匹配的拒绝和合规响应。我们使用了一套LLMs以及GPT-4来生成这些响应。

    WildGuardTest:高质量人工标注的测试审核数据集

    为了构建WildGuardTest(WGTest),我们从合成普通和对抗性数据中抽样了1,725对提示-响应对,并收集了三个独立标注者对每对提示-响应对的标注。

    训练WildGuard

    使用WGTrain,我们基于Mistral-7b-v0.3[20]训练了WildGuard。我们设计了统一的输入和输出格式,以捕捉三项任务。

    评估WildGuard相对于现有LLM安全审核工具的表现

    评估设置

    我们在十个公开的安全基准和我们的WGTest上测试WildGuard和相关基准。在提示有害性方面,我们使用了ToxicChat[23],OpenAI Moderation[24],AegisSafetyTest[14],SimpleSafetyTests[35]和HarmBenchPrompt[25]。在响应有害性方面,我们使用了HarmBenchResponse[25],SafeRLHF[10],BeaverTails[10]和XSTest-Resp。

    结果:WildGuard设立了新的多任务最先进水平

    WildGuard在提示分类方面表现最佳,超过了所有开源基准,并在WGTest上的表现比GPT-4高出1.8%。在响应有害性方面,WildGuard也超过了所有开源基准,并在两个评估中超过了GPT-4。在拒绝检测方面,WildGuard表现尤为出色,超越了现有开源模型,并与GPT-4的表现差距在4.1%以内。

    WildGuard的消融结果

    每个主要组件对WildGuard的成功至关重要,多任务训练提高了WildGuard的整体性能。

    WildGuard在实际人机交互中的表现

    作为实际应用示例,我们在模拟聊天审核使用案例中测试了WildGuard。结果显示,结合WildGuard过滤器的模型在拒绝有害越狱提示和避免过度拒绝方面表现最佳。

    相关工作

    LLM安全审核工具的研究主要集中在检测仇恨、毒性、攻击性和辱骂内容[13, 29, 21],并逐渐使用先进的LLM如GPT-4进行审核[41]。我们的工作通过对抗性输入的处理和多任务审核的支持,显著提升了LLM安全审核工具的性能。

    结论

    我们介绍了WildGuard,这是一款统一的多任务开源LLM安全审核模型,能够检测多种类型的普通和对抗性有害用户提示、有害模型响应和模型拒绝。通过公开的WildGuard模型和WildGuardMix数据集,我们的研究促进了LLM安全审核工具的开放和可靠的发展。

    参考文献

    1. Achiam et al. [2023], GPT-4 Technical Report, arXiv preprint arXiv:2303.08774.
    2. AI@Meta [2024], Llama 3 Model Card, URL: https://github.com/meta-llama/llama3/blob/main/MODEL_CARD.md.
    3. Anonymous, WildTeamming at Scale.
    4. Anthropic, The Claude 3 Model Family: Opus, Sonnet, Haiku, URL: https://api.semanticscholar.org/CorpusID:268232499.
    5. Anwar et al. [2024], Foundational Challenges in Assuring Alignment and Safety of Large Language Models, arXiv preprint arXiv:2404.09932.

    (注:此处省略部分参考文献以节省篇幅)