HCPD 实操:只用问答对就抓大模型幻觉,AUROC 88% 全开源

HCPD 是 ICML 2026 的零源幻觉检测方案:只给问答对文本,不依赖模型的 logprob、内部状态或知识库,就能判断回答是否可信——LLaMA-3.1-8B 上 AUROC 达到 88.19%,Qwen3-8B 上 89.62%,比次优方法高约 10 个点,训练与评估代码(GRPO + LoRA + vLLM,open-r1 栈)全部开源。本文带你从机制到命令完整跑一遍。

为什么值得关注

幻觉是把 LLM 输出放进生产的头号障碍。现有检测器大多两条路:读输出概率或内部表示,或者对着知识库做事实核验。但调用黑盒 API 时你只有最终文本,持续依赖外部核验又慢又脆。HCPD 针对的正是这种「零源」场景:只看 (问题, 回答) 直接判定可信度,对任何你控制不了的模型都适用——包括 本地部署后悄悄偏离官方表现的模型

核心思路拆解

核心是类人准则探测(HCP)机制,把检测从固定分类器变成可解释的动态评估:

  • 自适应准则:先定义五个通用维度(事实正确性、逻辑一致性、语义准确性、时间一致性、社会合规性),再针对每个 (q,a) 生成更细粒度准则并分配重要性权重——比如历史类问题更看重人物、地点、时间。
  • 加权打分:逐准则打分后加权汇总成可信度分数,准则、权重、分析依据一并输出,判定可审计。
  • GRPO 奖励对齐:仅靠提示词不稳定,于是用 GRPO 训练评分 agent;弱监督标签来自语义一致性(BLEURT),映射到 1–10 细粒度分数,不需要昂贵的人工标注。
  • 多采样聚合:推理时并行跑多次完整评估再聚合,压低单次采样的随机波动。

这套 GRPO 和 AI 自己出题自己练的编码模型用的是同一族 RL 思路——用奖励信号替代人工监督。

仓库与环境

TRISKEL10N/HCPD 是 open-r1 的改造仓库:评分 agent 用 Qwen2.5-7B-Instruct,被检测目标模型是 Llama-3.1-8B 和 Qwen3-8B,评测数据集为 TriviaQA、SciQ、NQ Open、CoQA。硬件要求 2×80GB NVIDIA GPU、CUDA 12.4、Python 3.11、PyTorch 2.6;训练用 LoRA(r=8, alpha=32)+ GRPO + vLLM 同卡 rollout + BLEURT 奖励。

环境搭建与快速验证

# 1. 装环境
bash setup.sh
conda activate HCPD

# 2. 生成幻觉检测数据集(自动下载到 ./.cache)
bash generate_datasets.sh

# 3. 用官方预训练 checkpoint 快速验证(Google Drive)
bash quick_validation.sh

quick_validation.sh 会用官方放出的 LoRA checkpoint 在四个数据集、两个目标模型上跑一遍评估。显存紧张的话,先只跑一个数据集。

训练与评估一条命令

MODEL_PATH="Qwen/Qwen2.5-7B-Instruct"
export VLLM_WORKER_MULTIPROC_METHOD="spawn"

# 训练:GRPO + LoRA,vLLM 同卡做 rollout
accelerate launch --config_file recipes/accelerate_configs/zero3.yaml \
  src/open_r1/haldet_grpo.py \
  --config recipes/Qwen2.5-7B-Instruct/grpo/config_demo.yaml \
  --seed 42 --vllm_mode colocate --vllm_gpu_memory_utilization 0.5 \
  --metric_type bleurt --dataset_name TriviaQA_llama3.1-8B \
  --learning_rate 0.0002 --beta 0.05 --model_name_or_path $MODEL_PATH

# 评估:遍历 10 个保存的 checkpoint
for idx in {1..10}; do
  python src/open_r1/haldet_eval_vllm.py \
    --base_model $MODEL_PATH --dataset_name TriviaQA_llama3.1-8B \
    --lora_path "data_bleurt/seed_42/.../checkpoint-$((1245*idx))" \
    --seed 42 --metric_type bleurt
done

config_demo.yaml 里值得注意的项:num_generations=10(每个 prompt 生成 10 个 rollout)、max_prompt_length=512reward_funcs=score_align、LoRA 打在全部注意力投影层。

实践建议

  • 黑盒模型随便用:只要拿到问题和回答就能判,GPT/Claude/Gemini 都行,不需要任何特殊权限;本地加速可参考 OpenVINO 本地推理加速指南
  • 判定可审计:输出的准则、权重、逐维分数适合做合规留痕,也能用来排查 RAG 答案为什么被标红。
  • 聚合数按场景调:多采样是延迟换稳定——低延迟路径少采样,高风险路径多采样。
  • 领域数据可重训:弱监督方案意味着你可以用自己的 QA 数据重建奖励,低成本重新对齐评分 agent。

FAQ

Q:需要目标模型的 logits 或内部状态吗?
A:不需要。HCPD 是零源检测,只看问题和回答文本,所以黑盒 API 也能用。

Q:准确率多少?
A:四个 QA 基准上,LLaMA-3.1-8B 平均 AUROC 88.19%,Qwen3-8B 89.62%,比次优方法高约 10 个点。

Q:复现训练要多大的卡?
A:论文环境是 2×80GB NVIDIA GPU(CUDA 12.4)。想先冒烟测试,用官方 checkpoint 跑 quick_validation.sh 即可。

资源链接

发表评论

滚动至顶部