近期,Meta AI 和 UCSD 的研究者提出了一种新的方法——Deep Think with Confidence(DeepConf),它在保持甚至提升大语言模型(LLMs)推理准确率的同时,大幅降低了计算开销。这篇博客将带你了解论文的核心内容、关键技术创新、实际应用场景,以及一个最小可运行的 demo。
📖 论文内容简介
大语言模型在复杂推理任务中,通常采用 自一致性(Self-Consistency) 方法:
- 为每个问题生成多条推理路径;
- 最后通过 多数投票 决定答案。
这种方法能显著提高准确率,但存在两个问题:
- 计算代价过高:每条推理轨迹都需要完整生成,导致推理时 token 数成倍增长;
- 轨迹质量不均:多数投票对所有轨迹一视同仁,低质量轨迹可能拖累结果。
DeepConf 的贡献:
- 提出一种 基于置信度的推理方法,利用模型内部的概率分布来动态判断推理轨迹质量;
- 在推理过程中实现 低置信度轨迹的过滤与早停;
- 不需要额外训练,也无需调整超参数,即插即用。
实验表明:
- 在 AIME 2025 数据集上,DeepConf 使用 GPT-OSS-120B 模型达到了 99.9% 的准确率;
- 在在线模式下,DeepConf 能减少 40%–85% 的 token 开销,大幅提高推理效率。
🔑 关键技术与创新点
-
局部化置信度度量
-
传统方法只用全局平均置信度,容易掩盖中间的错误推理。
-
DeepConf 引入:
- Group Confidence(分段置信度)
- Bottom 10% Confidence(最差片段置信度)
- Tail Confidence(结尾置信度)
-
能更精准地识别低质量推理。
-
-
置信度驱动的早停(Early Stopping)
- 在生成过程中实时评估置信度,如果低于阈值直接停止该轨迹。
- 避免浪费算力在明显错误的轨迹上。
-
Confidence-Weighted Voting(置信度加权投票)
- 不再让所有轨迹“票权相等”,而是让高置信度轨迹的答案更有分量。
- 在实验中显著提升了最终结果的可靠性。
-
无需额外训练
- 仅依赖模型自身的输出分布信号,无需额外数据或再训练。
- 直接可用于现有模型,实用性极高。
-
自适应采样与动态预算
- 根据问题难度,动态决定需要多少条推理轨迹。
- 当多数投票已经足够一致时,即可提前结束,提升效率。
💡 实际应用场景
- 学术竞赛与考试辅导:如 AIME、IMO、GRE、GMAT 等复杂推理题。
- 代码生成与调试:提升 Copilot、IDE 插件的代码质量与效率。
- 金融 / 法律 / 医疗等高风险领域:需要高可靠性答案的应用场景。
- 聊天机器人与问答系统:提升准确率,降低延迟,优化用户体验。
- 大规模 API 服务部署:在云端推理服务中节省 40%–85% 的算力成本。
- 教育场景:AI 家教更稳定地输出高质量解题路径,避免“跑偏”。
⚙️ 最小可运行 Demo
下面给出一个基于 Hugging Face transformers 库的最小化 Demo,用于模拟 DeepConf 的核心思路:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# 使用小模型做演示
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
model.eval()
# 生成带置信度的推理轨迹
def generate_with_confidence(prompt, num_samples=5, max_new_tokens=30, top_k=5):
inputs = tokenizer(prompt, return_tensors="pt")
input_ids = inputs["input_ids"]
traces = []
for _ in range(num_samples):
outputs = model.generate(
input_ids,
do_sample=True,
top_k=50,
max_new_tokens=max_new_tokens,
return_dict_in_generate=True,
output_scores=True
)
# 解码生成文本
generated_ids = outputs.sequences[0][len(input_ids[0]):]
text = tokenizer.decode(generated_ids, skip_special_tokens=True)
# 简单用 top-k 平均 log 概率计算置信度
scores = torch.stack(outputs.scores, dim=0)
probs = torch.nn.functional.softmax(scores, dim=-1)
top_probs, _ = probs.topk(top_k, dim=-1)
confidence = -top_probs.log().mean().item()
traces.append((text, confidence))
return traces
# 置信度加权投票
def deepconf_voting(traces, keep_ratio=0.5):
traces_sorted = sorted(traces, key=lambda x: x[1], reverse=True)
keep_n = max(1, int(len(traces_sorted) * keep_ratio))
kept = traces_sorted[:keep_n]
votes = {}
for text, conf in kept:
votes[text] = votes.get(text, 0) + conf
final_answer = max(votes.items(), key=lambda x: x[1])
return final_answer, kept
if __name__ == "__main__":
prompt = "Question: What is 2+2? Answer:"
traces = generate_with_confidence(prompt, num_samples=10)
print("Generated Traces (text, confidence):")
for t in traces:
print(t)
answer, kept = deepconf_voting(traces, keep_ratio=0.5)
print("\nFinal Answer (DeepConf-style):", answer)
print("\nKept High-Confidence Traces:", kept)
这个 demo 会:
- 生成多条回答;
- 给每条回答计算一个置信度分数;
- 保留高置信度轨迹,用加权投票得到最终答案。
换用更强模型(如 Qwen、LLaMA、DeepSeek),就能更接近论文中的效果。
📝 总结
DeepConf 通过 置信度感知的推理,解决了多数投票方法中的两个痛点:
- 低质量轨迹的干扰;
- 巨大的计算消耗。
它无需额外训练,直接可用,在多个基准测试中达到了接近满分的准确率,同时节省了高达 85% 的计算开销。无论是学术竞赛解题、代码生成,还是金融/医疗等高风险场景,DeepConf 都展示了极大的应用潜力。