Steering Llama 2 via Contrastive Activation Addition
作者: Nina Panickssery, Nick Gabrieli, Julian Schulz, Meg Tong, Evan Hubinger, Alexander Matt Turner
分类: cs.CL, cs.AI, cs.LG
发布日期: 2023-12-09 (更新: 2024-07-05)
💡 一句话要点
提出对比激活添加(CAA)方法,通过操纵激活向量来引导Llama 2的行为。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 对比激活添加 语言模型引导 Llama 2 行为控制 激活向量 残差流 幻觉减少
📋 核心要点
- 现有方法难以在不显著降低模型能力的前提下,精确控制LLM的行为,例如减少幻觉。
- CAA通过计算并添加正负行为示例的激活差异向量,在推理时引导模型产生期望的行为。
- 实验表明,CAA能有效改变Llama 2的行为,且与微调和提示工程等方法兼容,对模型能力影响小。
📝 摘要(中文)
本文提出了一种创新的语言模型引导方法,称为对比激活添加(CAA),它通过在正向传播过程中修改模型的激活值来实现。CAA通过计算特定行为(例如,事实性回复与幻觉性回复)的正例和负例之间残差流激活的差异平均值,来生成“引导向量”。在推理过程中,这些引导向量以正或负系数添加到用户提示后的所有token位置,从而精确控制目标行为的程度。我们在Llama 2 Chat上,使用多项选择行为问题数据集和开放式生成任务评估了CAA的有效性。实验表明,CAA显著改变了模型的行为,并且在微调和系统提示设计等传统方法之上仍然有效,同时对模型能力的影响很小。此外,我们通过各种激活空间解释方法,更深入地了解了CAA的机制。CAA能够准确地引导模型输出,并揭示了大型语言模型(LLM)中高层概念的表示方式。
🔬 方法详解
问题定义:现有方法,如微调和提示工程,虽然可以影响LLM的行为,但往往难以精确控制,并且可能导致模型能力下降(例如,过度拟合特定任务)。论文旨在解决如何在不显著降低模型通用能力的前提下,更精细地控制LLM的行为,例如减少幻觉或增强特定风格。
核心思路:核心思想是通过操纵LLM内部的激活向量来引导其行为。具体来说,通过找到与目标行为相关的激活模式(即“引导向量”),并在推理过程中有选择地增强或抑制这些模式,从而影响模型的输出。这种方法类似于在模型的“大脑”中直接进行干预,而不是通过外部刺激(如提示)来间接影响。
技术框架:CAA方法主要包含以下几个步骤:1) 数据收集:收集正例和负例数据,这些数据代表了目标行为的不同方面(例如,事实性回复 vs. 幻觉性回复)。2) 激活提取:对于每个正例和负例,运行LLM的前向传播,并提取特定层(通常是Transformer的残差流)的激活向量。3) 引导向量计算:计算正例和负例激活向量的平均差异,得到“引导向量”。这个向量代表了模型在产生目标行为时激活模式的差异。4) 推理时干预:在推理过程中,将引导向量以一定的系数添加到用户提示后的所有token位置的激活向量中。系数的正负决定了是增强还是抑制目标行为。
关键创新:CAA的关键创新在于它提供了一种直接操纵LLM内部状态的方式,而无需重新训练模型。与微调相比,CAA更加轻量级,并且可以与其他方法(如提示工程)结合使用。此外,CAA还提供了一种理解LLM内部表示的工具,通过分析引导向量,可以了解模型是如何表示和处理不同概念的。
关键设计:CAA的关键设计包括:1) 激活向量的选择:通常选择Transformer的残差流激活,因为它们被认为是模型内部信息传递的关键路径。2) 引导向量的计算方式:使用正例和负例激活向量的平均差异,以减少噪声和突出关键模式。3) 干预系数的选择:需要根据具体任务和模型进行调整,以找到最佳的干预强度。4) 干预位置的选择:在用户提示后的所有token位置进行干预,以确保引导向量的影响持续存在。
📊 实验亮点
实验结果表明,CAA能够显著改变Llama 2的行为。例如,在减少幻觉的任务中,CAA能够将模型的错误率降低XX%(具体数值未知)。此外,CAA与微调和提示工程等方法结合使用时,能够进一步提升性能。重要的是,CAA对模型通用能力的影响很小,表明它是一种有效的行为引导方法。
🎯 应用场景
CAA可应用于多种场景,例如:提高LLM的事实性,减少幻觉;控制LLM的风格,使其更符合特定需求;增强LLM的安全性,防止生成有害内容。该方法具有广泛的应用前景,可以提升LLM在各个领域的可靠性和实用性,并为LLM的定制化和个性化提供新的途径。
📄 摘要(原文)
We introduce Contrastive Activation Addition (CAA), an innovative method for steering language models by modifying their activations during forward passes. CAA computes "steering vectors" by averaging the difference in residual stream activations between pairs of positive and negative examples of a particular behavior, such as factual versus hallucinatory responses. During inference, these steering vectors are added at all token positions after the user's prompt with either a positive or negative coefficient, allowing precise control over the degree of the targeted behavior. We evaluate CAA's effectiveness on Llama 2 Chat using multiple-choice behavioral question datasets and open-ended generation tasks. We demonstrate that CAA significantly alters model behavior, is effective over and on top of traditional methods like finetuning and system prompt design, and minimally reduces capabilities. Moreover, we gain deeper insights into CAA's mechanisms by employing various activation space interpretation methods. CAA accurately steers model outputs and sheds light on how high-level concepts are represented in Large Language Models (LLMs).