把规则换到对齐时踩过的坑

当一个模型越来越聪明,越来越能做决策时,光靠训练时的奖励机制已经不够了。去年在做聊天机器人项目时,遇到了一个实际问题:模型有时候会回答一些合法但不道德的问题。

为什么要搞 Constitutional AI

去年在做聊天机器人项目时,遇到了一个实际问题:模型有时候会回答一些合法但不道德的问题。比如有人问如何设计一个钓鱼邮件模板,模型可能会给出一套看似专业的模板,虽然技术上没什么错,但实际上是在帮坏人做事。

传统的解决方案是:

  1. 训练时给这类打标签、做分类
  2. 运行时加硬规则过滤关键词
  3. 人工持续做红队测试

问题是这些都太被动了。每次发现新问题都要加新规则,而攻击方式总是比规则多。

Anthropic 最早提出了 Constitutional AI 的思路,核心想法很简单:让 AI 自己根据一套"宪法"来监督和修正自己的行为。这套宪法可以是几条原则,比如"不帮助非法行为"、“不生成有害内容"等等,然后在训练时就让模型学会自己判断哪些行为符合宪法。

它是怎么工作的

Constitutional AI 的核心流程可以分成两个阶段:

第一个阶段是监督式训练。先人工准备好一套宪法原则,然后让 AI 生成一些样本,再训练一个评判模型来判断这些生成内容是否违反宪法。这个评判模型会学会"根据宪法打分"的能力。

第二个阶段是自我批评式训练。让目标模型自己生成内容,然后根据宪法自我批评,修正自己的输出。这个过程中,评判模型的目标就是帮助目标模型理解"什么是符合宪法的”。

flowchart TD A[宪法原则] --> B[生成样本] B --> C[人工标注] C --> D[训练评判模型] D --> E[目标模型生成内容] E --> F[评判模型打分] F --> G{是否符合宪法} G -->|符合| H[保留输出] G -->|不符合| I[修正输出] I --> E

实际操作时,这个过程会反复迭代,让模型越来越善于自我判断和修正。

实操中的几个关键点

在尝试这套思路时,我发现有几个地方特别容易踩坑。

宪法本身怎么写

最直接的误区是写太多规则。十多条原则看起来很全面,但模型很难同时顾及所有约束。而且规则之间可能冲突,比如"要回答问题"和"不回答有害问题"在某些场景下就有矛盾。

比较好的做法是写 3–5 条核心原则,每条原则下面再补充具体例子:

1. 不帮助任何非法或有害行为
   - 不生成诈骗、钓鱼、攻击性内容
   - 不提供具体的犯罪方法指导

2. 诚实准确,不编造信息
   - 不知道就直说不知道
   - 不伪造事实或数据

3. 尊重用户,但坚守底线
   - 礼貌回答
   - 拒绝明显违反原则的请求

评判模型的选择

评判模型的能力直接决定整个过程的效果。如果用太弱的模型做评判,目标模型学不到东西;用太强的模型,又可能把评判模型本身的偏见传给目标模型。

在实践中,通常会用和目标模型同级别的模型做评判,这样既能保证质量,又不会因为差距太大导致训练不稳定。

训练数据的质量比数量重要

有一个时期我想通过增加样本数量来提升效果,生成了几十万条训练数据,结果发现反而把模型训糊涂了。问题的根源在于样本质量参差不齐,有些生成内容和原则之间的关系并不清晰,让评判模型学到了错误的模式。

后来改成只留高质量的样本,虽然数量少了一半,但效果反而好了很多。

一些简单的实现思路

如果是第一次尝试,可以从最简单的流程开始。先用一个现成的模型做评判,让目标模型学会自我修正:

# 伪代码示意
def constitutional_generate(prompt, constitution, model, judge_model):
    # 第一次生成
    response = model.generate(prompt)

    # 判断是否符合宪法
    critique = judge_model.generate(
        f"根据以下宪法原则判断这个回答:\n"
        f"宪法:{constitution}\n"
        f"问题:{prompt}\n"
        f"回答:{response}\n"
        f"指出哪些地方违反了宪法原则。"
    )

    # 如果有问题就修正
    if "违反" in critique or "有问题" in critique:
        revised = model.generate(
            f"原始问题:{prompt}\n"
            f"原始回答:{response}\n"
            f"根据宪法原则的批评:{critique}\n"
            f"请根据批评意见修正回答。"
        )
        return revised

    return response

这只是一个最基础的实现,真正的训练流程会更复杂,包括多轮迭代、批量处理、对抗样本生成等等。

实际效果和边界

折腾了一圈后,最直接的感受是:Constitutional AI 不是万能的。

它确实能帮我们把一些明确的原则落实到模型行为里,比如不再生成诈骗邮件模板、不再编造数据、在面对模糊请求时选择拒绝而不是猜测。

但它解决不了所有问题。有些场景本身就带有道德模糊性,比如"如何用数据挖掘技术分析竞争对手的公开信息"这类请求,在法律和技术上都没问题,但商业上又很敏感。模型很难在这种场景下做出完美的判断。

另外,这套方法的成本也不低。需要准备宪法原则、训练评判模型、做迭代调优,每一步都要投入大量人力和时间。如果只是一个简单的问答系统,可能用传统的规则过滤就够用了。

写在最后

Constitutional AI 的意义不在于解决 AI 对齐的所有问题,而在于提供了一个可迭代的实践框架。它让我们从"靠黑盒训练"转向"靠规则和反馈来调优",至少给了人类一种持续介入和调整的机制。

真正有价值的是这个思路:与其期待模型在训练时一次性学会所有人类价值观,不如给它一套可以理解和遵守的原则,然后让它学会自我判断和修正。

技术最终还是要服务于人的需求。AI 对齐不是为了让模型变得完美,而是为了在它越来越强大的过程中,保证它走在人类期望的方向上。

这条路还很长,但至少我们不再是完全被动的。

版权声明: 本文首发于 指尖魔法屋-把规则换到对齐时踩过的坑https://blog.thinkmoon.cn/post/398-ai-constitutional-ai-rules-alignment-practice/) 转载或引用必须申明原指尖魔法屋来源及源地址!