DeepSeek-V4-Flash 让 LLM 控制再次变得有趣
自从 Golden Gate Claude 以来,我一直对“控制(steering)”着迷:这个概念是指在推理过程中直接操纵模型的激活状态,从而引导 LLM 输出的想法。
DeepSeek V4 Flash
这篇帖子的灵感来自 antirez 最近的项目 DwarfStar 4,它是一个精简过的 llama.cpp 版本,专门用于运行 DeepSeek-V4-Flash。这个模型有何特别之处?它可能是许多工程师一直在等待的:一个足以与前沿模型低级代理编码能力竞争的本地模型。
由于控制需要本地模型,现在许多工程师首次有机会实际尝试它。确实,antirez 将控制作为 DwarfStar 4 的一等公民功能。目前功能还非常基础(基本上只是你可以通过提示词复现的那个玩具般的“冗长”示例),但初始发布才八天前。我打算密切关注这个项目。
控制的工作原理
控制的基本思想是从模型的内部大脑状态中提取一个概念(例如“简洁回答”),然后在推理过程中介入并增强构成该概念的数值激活。
一种实现方式是:将同一组一百个提示词输入模型两次,一次使用正常提示词,另一次在末尾附加“简洁回答”这几个字。然后测量每个提示词对中模型激活值[1]的差异(通过从另一个激活矩阵中减去一个)。这就是你的“控制向量”。理论上,你可以将其加到任何提示词的同一激活层上,并获得相同的效果(模型简洁回答)。
另一种更复杂的方法是训练第二个模型,从你的模型激活值中提取“特征”:那些似乎一起出现的行为模式。然后你可以尝试将这些特征映射回单个概念,并以相同方式增强它们。这大致就是 Anthropic 用稀疏自编码器[2]所做的事情。它与朴素方法原理相同,但能捕获更深层的模式(代价是花费更多的时间、计算资源和专业知识)。
为什么控制令人着迷
控制听起来像作弊码。与其煞费苦心地构建一个训练集,试图将模型推向其训练数据中“聪明”的一端,为什么不直接找到模型大脑中的“聪明”旋钮,然后向右拧到底呢?
它似乎也是一种更优雅的调整模型说话方式的方法。不用摆弄提示词(添加或删除“你必须”之类的限定词),我们能不能直接拥有一个包含“简洁/冗长”或“认真/速度”等滑块的操控面板,直接移动它们?
最后,它真的很酷。看着 Golden Gate Claude 不情愿地把每个句子都拉回到金门大桥,就像 Oliver Sacks 的神经学轶事一样既迷人又令人不安。如果你自己的思维也以类似的方式被调整呢?那还会是你吗?
为什么控制尚未被使用
那么,为什么我们不多用控制呢?为什么 ChatGPT 和 Claude Code 还没有一个操控面板可以实时调整模型的大脑?一个原因是,控制是 AI 研究中一个有点不幸的“中产阶级”想法。
它对于大型 AI 实验室来说过于低级,它们可以直接操作模型,而无需在推理过程中进行尴尬的大脑手术。Anthropic 正在研究这些东西,但主要是从可解释性和安全性的角度(据我所知)。当他们希望模型以某种方式行为时,他们不会摆弄控制,而是直接训练模型。
控制对于像你和我这样的普通 AI 用户来说也遥不可及[3],我们通过 API 使用 LLM,因此无法访问模型权重或激活值来进行控制。例如,只有 OpenAI 才能识别或暴露 GPT-5.5 的控制向量。我们可以为开放权重的模型做这件事,但直到最近(稍后会详细说明)还没有足够强大的开放模型值得这样做。
此外,大多数基本的控制应用都被简单的提示词方法比下去了。能够直接操纵模型的大脑听起来很厉害。但你知道还有什么能直接操纵模型的大脑吗?提示词 token。通过控制可以相当精细地调节激活值,但通过调整提示词语言已经可以实现极其精细的控制。换句话说,费尽周折去控制模型使其更冗长,还不如直接要求它来得有效。
控制无法提示的概念
控制真正有用的一个方式是,如果我们能识别出一个无法通过提示词获得的概念。比如“智能”?过去你曾可以通过提示词来获得智能——这就是 4o 时代提示词总是以“你是一位专家”开头的原因——但当前一代模型已经将这一点内化到它们的个性中,所以提示词已经没有作用了。也许通过控制来获取仍然可行?
最终这是一个经验问题,但我怀疑我们能否找到一个“智能”控制向量。换句话说,构成“智能”这样复杂概念的控制向量可能几乎与模型的全部权重共同扩展,因此识别它最终归结为“训练一个智能模型”的问题。
一个足够复杂的控制方法最终会取代实际模型。如果我拿 GPT-2,在每一层用来自一个更强大、架构相同的模型的激活值替换其激活值,我会得到更好的结果。但这并不是让 GPT-2 更智能,你只是在与更强大的模型对话。智能存在于控制中,而不是模型中。更多内容请参见我的文章《AI 可解释性面临与心灵哲学相同的问题》。
作为数据压缩的控制
控制有用的另一个方式是,如果我们能通过控制获得一个需要大量 token 才能表达的概念。这样控制就能为我们节省模型上下文窗口的大量空间。直观上,我们可以将其视为将概念从模型的工作记忆转移到隐性记忆的一种方式。
例如,如果我们能识别出一个“了解我的特定代码库”的概念呢?当 GPT-5.5 快速阅读我的代码库时,它所获得的一些知识必定埋藏在激活值中,对吧?也许我们可以将其提取成一个非常大的控制向量。
我会对此能否奏效感到惊讶。我认为我们会遇到与提取“智能”相同的问题:“了解我的代码库”这个概念可能足够复杂,需要对模型进行完整微调[4]。但它至少看起来是可能的。
结论
我对控制非常着迷,但对此并不特别乐观。我认为大部分效果可以通过提示词更高效地复现,而那些真正雄心勃勃的控制目标可以通过训练或微调模型更高效地复现。
然而,开源社区在控制方面还没有做很多工作,而这种情况可能刚刚开始改变。如果我错了,并且它确实有实际应用,我们应该在未来六个月内发现这一点。
看看诸如 DwarfStar 4 之类的定制化模型工具是否最终会包含一个可增强特征的“库”,将会很有趣。当一个人气开放权重模型发布时,社区总是急于发布一系列封装和量化版本。我们是否也会看到一场提取模型可增强特征的热潮?
[1] 模型有许多不同的激活值可供测量(注意力之后、各层之间等)。你基本上可以选择任何一个,或者尝试多个,看看哪个效果最好。 [2] 我最近读了一篇非常好的深度文章,介绍如何用开放 LLaMA 模型做这件事(我几个月前自己也试过,结果好坏参半)。 [3] 向来自大型 AI 实验室的读者致歉。如果你曾尝试在内部通过控制来提升能力但失败了,请发邮件给我。我保证不会告诉任何人。 [4] 即使如此,行业中对“在代码库上微调模型”的结果大多不成功。