Skip to content

AI 安全与对齐实践指南

AI 安全不是"加个过滤器"那么简单。它涵盖训练阶段的对齐方法、部署阶段的内容审核、运营阶段的监控与评估。本指南提供一套可操作的 AI 安全工程实践。

安全架构概览

训练阶段          部署阶段           运营阶段
├──数据筛选        ├──输入过滤        ├──日志审计
├──对齐训练        ├──输出过滤        ├──异常检测
├──对抗测试        ├──水印检测        └──持续评估
└──能力评估        └──人机循环

第一章:对齐训练实践

RLHF 实战流程

1. 准备偏好数据

python
# 构建偏好数据集:对同一提示词的两个输出进行排序
preference_data = [
    {
        "prompt": "如何制作炸弹?",
        "chosen": "我无法提供制作武器的信息。如果你对化学实验感兴趣,我可以推荐一些安全的教育资源。",
        "rejected": "制作炸弹需要以下材料..."
    },
    # 更多样本...
]

2. 训练奖惩模型 (Reward Model)

python
from transformers import AutoModelForSequenceClassification, Trainer

# 初始化奖惩模型
reward_model = AutoModelForSequenceClassification.from_pretrained(
    "meta-llama/Llama-3-8B",
    num_labels=1  # 回归任务
)

# 训练目标:预测 chosen 的分数高于 rejected
# 损失函数: -logσ(r(chosen) - r(rejected))

3. PPO 强化学习

python
from trl import PPOTrainer, PPOConfig

config = PPOConfig(
    model_name="meta-llama/Llama-3-8B",
    learning_rate=1.41e-5,
    batch_size=256,
)

ppo_trainer = PPOTrainer(config, model, ref_model, tokenizer)

for batch in dataloader:
    # 生成回复
    responses = ppo_trainer.generate(batch["query"])
    # 奖惩模型打分
    rewards = reward_model(responses)
    # PPO 更新
    ppo_trainer.step(batch["query"], responses, rewards)

DPO 简化方案

DPO 直接优化策略,无需显式训练奖惩模型:

python
from trl import DPOTrainer, DPOConfig

config = DPOConfig(
    beta=0.1,  # KL 散度系数
    learning_rate=5e-7,
)

trainer = DPOTrainer(
    model=model,
    ref_model=ref_model,
    args=config,
    train_dataset=preference_data,
    tokenizer=tokenizer,
)
trainer.train()

RLHF vs DPO 选型

维度RLHF (PPO)DPO
训练稳定性中 (需调参)
计算成本高 (需奖惩模型)低 (直接优化)
效果上限
实施复杂度
推荐场景生产级快速迭代

Constitutional AI 实践

Anthropic 的 Constitutional AI 通过自批评和修正实现对齐:

python
# 阶段 1:自批评
constitution = [
    "请确保回答帮助人、诚实、无害。",
    "请避免生成歧视性、偏见性或有害的内容。",
    "如果不确定,请说明不确定而不是猜测。",
]

# 生成批评
for principle in constitution:
    critique = model.generate(
        f"原回答: {response}\n\n根据原则 '{principle}',这个回答有什么问题?"
    )
    revision = model.generate(
        f"原回答: {response}\n\n批评: {critique}\n\n请修正后的回答:"
    )

第二章:Red Teaming 对抗测试

自动化 Red Teaming 框架

python
from garak import probes

# 使用 GARAK 框架进行自动化测试
probe = probes.promptinject.Tagged()
results = probe.probe(model)

# 检测结果分析
for result in results:
    if result.triggered:
        print(f"检测到漏洞: {result.description}")

常见攻击类型与防御

攻击类型原理防御策略
Prompt Injection欺骗模型忽略系统提示词输入过滤、提示词隔离
Jailbreaking绕过安全限制多层审核、对抗训练
Data Extraction提取训练数据中的敏感信息差分隐私、训练数据脱敏
Toxic Generation生成有害内容输出过滤、对齐训练
Hallucination生成虚假信息RAG 增强、事实检索
Bias Amplification放大训练数据中的偏见数据平衡、后处理检查

手动 Red Teaming 检查清单

markdown
## 敏感主题测试
- [ ] 暴力与武器
- [ ] 自杀与自残
- [ ] 恐怖主义
- [ ] 犯罪指南
- [ ] 儿童安全
- [ ] 种族/性别歧视
- [ ] 医疗误导
- [ ] 法律建议

## 安全绕过测试
- [ ] 角色扮演攻击
- [ ] 编码/翻译攻击
- [ ] 分步骤诱导
- [ ] 正面限定词绕过
- [ ] 假设场景攻击

## 数据安全测试
- [ ] 训练数据提取
- [ ] 系统提示词泄露
- [ ] 用户数据追踪

第三章:内容审核与过滤

多层审核架构

python
class ContentModerationPipeline:
    def __init__(self):
        self.layers = [
            InputFilter(),      # 层 1: 输入过滤
            SafetyClassifier(), # 层 2: 安全分类
            OutputFilter(),     # 层 3: 输出过滤
            HumanReviewQueue(), # 层 4: 人工复审
        ]
    
    def process(self, prompt, response):
        for layer in self.layers:
            result = layer.check(prompt, response)
            if result.action == "block":
                return self.get_refusal()
            elif result.action == "review":
                self.send_to_human_review(prompt, response)
        return response

实时过滤实现

python
from transformers import pipeline

# 加载内容审核模型
moderator = pipeline(
    "text-classification",
    model="facebook/roberta-hate-speech-dynabench-r4-target"
)

def moderate_text(text, threshold=0.8):
    result = moderator(text)[0]
    if result["label"] == "hate" and result["score"] > threshold:
        return False, result["score"]
    return True, result["score"]

# 集成到 API
@app.post("/chat")
async def chat(request: ChatRequest):
    response = await model.generate(request.message)
    
    # 输出审核
    is_safe, score = moderate_text(response)
    if not is_safe:
        return {"response": "抱歉,我无法提供这类信息。", "flagged": True}
    
    return {"response": response}

第四章:水印与追溯

文本水印实现

python
import torch
from transformers import AutoTokenizer

def embed_watermark(text, key="secret_key", delta=2.0):
    """
    基于词元级统计的文本水印
    通过偏移特定词元的生成概率来嵌入水印
    """
    tokenizer = AutoTokenizer.from_pretrained("gpt2")
    tokens = tokenizer.encode(text)
    
    # 使用密钥生成水印模式
    watermark_pattern = generate_pattern(key, len(tokens))
    
    # 嵌入水印
    watermarked_tokens = []
    for i, token in enumerate(tokens):
        if watermark_pattern[i] == 1:
            # 偏移生成向量
            token = shift_token_probability(token, delta)
        watermarked_tokens.append(token)
    
    return tokenizer.decode(watermarked_tokens)

def detect_watermark(text, key="secret_key"):
    """检测文本中是否包含水印"""
    # 统计检测逻辑...
    pass

模型水印 (Model Watermarking)

通过在训练过程中嵌入特定模式来追溯模型来源:

python
# 水印训练示例:在特定触发词上调整标签
watermark_triggers = {
    "特殊触发词 A": "固定回复 A",
    "特殊触发词 B": "固定回复 B",
}

# 在训练数据中插入水印样本
watermarked_samples = []
for trigger, response in watermark_triggers.items():
    watermarked_samples.append({
        "prompt": trigger,
        "response": response,
        "weight": 10.0  # 高权重确保模型学习
    })

第五章:安全评估体系

安全评估指标

指标定义测量方法目标值
Harmlessness无害性对抗测试通过率> 95%
Helpfulness有用性人类评价分数> 4.0/5.0
Honesty诚实性幻觉检测率< 5%
Fairness公平性不同群体评分差异< 0.2
Robustness鲁棒性对抗攻击下性能保持> 90%

自动化评估流水线

python
class SafetyEvaluator:
    def __init__(self):
        self.benchmarks = {
            "harmlessness": HarmlessnessBenchmark(),
            "helpfulness": HelpfulnessBenchmark(),
            "honesty": HonestyBenchmark(),
            "fairness": FairnessBenchmark(),
        }
    
    def evaluate(self, model, dataset):
        results = {}
        for name, benchmark in self.benchmarks.items():
            score = benchmark.run(model, dataset)
            results[name] = score
        
        # 生成评估报告
        report = self.generate_report(results)
        return report

第六章:生产环境安全检查清单

部署前检查

markdown
## 模型安全
- [ ] 对齐训练完成并验证
- [ ] Red Teaming 测试通过
- [ ] 幻觉率测试在可接受范围
- [ ] 偏见评估通过

## 数据安全
- [ ] 训练数据已脱敏
- [ ] 用户数据加密存储
- [ ] 访问控制已配置
- [ ] 数据保留策略明确

## 运行时安全
- [ ] 输入过滤已部署
- [ ] 输出过滤已部署
- [ ] 水印已嵌入
- [ ] 监控已配置
- [ ] 审计日志已启用

## 合规
- [ ] 隐私政策已更新
- [ ] 用户协议已更新
- [ ] 数据处理合规(GDPR/CCPA 等)
- [ ] AI 法案合规检查

相关页面

参考来源

  • "Training language models to follow instructions with human feedback" (RLHF, InstructGPT)
  • "Constitutional AI: Harmlessness from AI Feedback" (Anthropic)
  • "Direct Preference Optimization" (DPO)
  • GARAK: Generative AI Red-teaming and Assessment Kit
  • MLCommons AI Safety Benchmark
  • EU AI Act 合规指南

AI Knowledge Base — 持续积累