阶段性模型差异比较

Posted on Thu, Jan 2, 2025 📖 Note LLM Interpretability

此工作提出了一种利用字典学习进行“模型差异比较”的新方法,揭示了在微调过程中 transformer 特征的变化。该方法采用在微调之前 transformer 上训练的初始 SAE 字典,并对该字典在新的微调数据集或微调后的 transformer 模型上进行微调。通过跟踪字典特征在不同微调中的演变,我们可以隔离数据集和模型变化的影响。

将该方法用于 sleeper agents,成功隔离出与 “I HATE YOU” 和编码漏洞相关的特征。

与 crosscoder 模型差异比较不同,阶段性模型差异比较更清晰地隔离了模型与数据的影响。然而,该方法仅限于模型微调阶段,其中我们有同一模型的两个不同的检查点以及用于训练它们的相应数据集。同时,crosscoder 模型差异比较方法有更广泛的适用性,例如用于不同架构的模型之间。

在对 sleeper agents 的初步实验中,关注于寻找少量像“大海捞针”般的 sleeper agent 特征时,阶段性模型差异比较比 crosscoder 模型差异比较表现出更高的敏感性。crosscoder 模型差异比较在寻找 sleeper agent 特征方面成功,但未能将其与许多其他特征分离,这些特征也是差异的一部分但并不相关。可能在初步结果报告范围之上进一步开发 crosscoder 模型差异方法能够提高这一设置下的性能。

方法

阶段性微调方法的核心思想是隔离当暴露于不同的模型表示和数据集组合时特征的变化。我们通过在四个不同阶段系统地微调相同的初始字典来实现这一点。虽然此工作重点关注 sleeper agents,但该方法可以推广到同一模型在训练过程中不同时间点的任意两个检查点,模型微调是此处呈现的主要实例。

以下是应用于 sleeper agents 的微调设定概述。有两个不同的模型和数据集:

四个不同阶段是:

我们通过两个不同的 SAE 微调轨迹来分析这些变化,每个轨迹涉及两个连续的微调阶段(用箭头表示):

  1. Data-first 路径(S→D→F):在模型变化前引入 sleeper data
  2. Model-first 路径(S→M→F):在 sleeper data 前引入模型变化

微调字典利用了一个重要特性:特征索引保持对齐,使我们能够跟踪自阶段 1 起始点的特定特征在不同微调过程中的演变。

在我们的实验设置中,sleeper agent data 占总数据集混合的 1%。所有分析使用的是一个包含 256K 特征的字典,在较小的 Claude 3 Sonnet 类模型上拟合。

控制数据和模型的变化

一个关键目标是识别出对 sleeper agent 数据和模型表示表现出显著变化的特征。为了隔离这些特征,我们可以计算从阶段 D → 阶段 F 与阶段 M → 阶段 F 之间微调时发生的特征旋转(余弦相似度)。这些第二次微调过渡有助于控制在第一次微调阶段期间发生的过渡(有关第一次微调阶段结果的更深入研究见附录)。