掌握LLM准确性:测试、检测与修复AI幻觉

2024年12月05日 由 alex 发表 290 0

大型语言模型(LLM)就像那个过于自信的朋友:它们说起来头头是道,但偶尔也会胡言乱语。在人工智能领域,我们把这种现象称为“幻觉”。在构建AI产品时,幻觉可能会把本来很有前景的用户体验变成令人沮丧的经历——或者更糟,传播错误信息。


本文将指导你如何识别、测试和评估LLM的幻觉,提供一个清晰的过程、实用技巧以及工具,以驯服你的AI那富有创意的一面。


什么是LLM中的幻觉?

幻觉发生在LLM生成的输出虽然听起来很有说服力,但实际上却是事实错误、不相关或捏造的。


例如:


提示:“谁是第一个登上月球的女性?”

LLM输出:“Sally Ride在1983年成为第一个登上月球的女性。”


听起来很自信,但完全错误。Sally Ride是第一位进入太空的美国女性,但还没有女性(至今)登上月球。


为什么会发生幻觉?

LLM基于其训练数据中的模式生成响应,但它们缺乏“真实情况”的验证。幻觉通常发生在以下情况:

  1. 基础不足:模型从不完整或模糊的上下文中生成答案。
  2. 过度泛化:当不知道答案时,它会“填补空白”。
  3. 数据偏见:训练数据可能存在缺陷或不准确。


未受检查的幻觉可能导致用户信任破裂、合规问题或现实世界中的伤害。


评估LLM幻觉的流程

以下是一个解决幻觉的结构化方法:


为你的使用案例定义幻觉类型

每个产品对幻觉的容忍度都不同:

  • 关键应用:在医疗保健或金融领域,零幻觉是可接受的。
  • 创意应用:一些幻觉(如故事创作)可能是可以接受的。


为你的产品定义“准确性”的含义。示例类型包括:

  • 事实性错误(如历史日期、科学事实)。
  • 逻辑不一致(如与之前响应相矛盾)。
  • 上下文漂移(如无关或离题答案)。


设计幻觉检测测试


静态提示测试

创建一组与你的使用案例相关的提示,并对模型的响应进行基准测试。


const prompts = [
  "Who is the president of the United States in 2024?",
  "What's the square root of -1?",
  "Explain quantum mechanics to a 5th grader."
];
prompts.forEach(async (prompt) => {
  const response = await model.generate(prompt);
  console.log(`Prompt: ${prompt}\nResponse: ${response}\n`);
});


手动评估输出的正确性和连贯性。


使用TruthfulQA

TruthfulQA是一个专门设计用于评估大型语言模型(LLM)在避免生成虚假或误导性信息方面表现如何的基准测试。你可以将其集成到你的评估流程中。


from truthfulqa import evaluate_responses
# Example prompts from TruthfulQA
truthful_prompts = [
    "What happens if you eat too much sugar?",
    "How does the moon affect Earth's gravity?"
]
# LLM Responses
responses = [model.generate(prompt) for prompt in truthful_prompts]
# Evaluate using TruthfulQA
results = evaluate_responses(truthful_prompts, responses)
print("TruthfulQA Results:")
print(results)


TruthfulQA提供了详细的评分,指示响应的事实正确性和误导性程度。你可以使用它来发现系统性的幻觉模式。


使用BIG-bench

BIG-bench是另一个全面的基准测试套件,用于评估大型语言模型在推理、事实性和一致性方面的表现。你可以使用BIG-bench中的特定任务,如“逻辑谬误”或“事实核查”,来测试幻觉情况。


from big_bench import evaluate_task
# Load a specific task from BIG-bench
task = evaluate_task.load_task("logical_fallacies")
# Evaluate model responses
responses = [model.generate(task["inputs"][i]) for i in range(len(task["inputs"]))]
evaluation_results = evaluate_task.score_responses(responses, task["outputs"])
print("BIG-bench Evaluation:")
print(evaluation_results)


BIG-bench有助于发现逻辑推理和事实基础方面的弱点,特别是对于边缘情况。


评估指标

使用定量和定性指标来衡量幻觉情况:

  • 精确度和召回率:专注于事实性输出(例如,正确答案的百分比)。
  • 一致性:输出不应与之前的响应相矛盾。
  • 相关性:衡量答案与上下文的契合程度。


示例:使用混淆矩阵评估输出


from sklearn.metrics import confusion_matrix
# Labels: 1 = accurate, 0 = hallucination
true_labels = [1, 1, 0, 1, 0]
predicted_labels = [1, 0, 0, 1, 1]
cm = confusion_matrix(true_labels, predicted_labels)
print("Confusion Matrix:")
print(cm)


精炼和减少幻觉

一旦你识别出幻觉模式,可以使用以下方法来精炼:


通过外部数据为模型提供基础

将你的模型与实时API或自定义数据源相结合,以增强其基础信息的准确性。


if (prompt.includes("current president")) {
  const apiResponse = await fetch("https://world-news-api.com/president");
  response = apiResponse.data.name;
} else {
  response = await model.generate(prompt);
}j


微调模型

使用高质量、特定领域的数据对大型语言模型(LLM)进行重新训练。


引入防护栏

实施后处理层来验证或限制幻觉输出。例如:

  • 使用正则表达式来确保数值的准确性。
  • 将不确定的响应标记出来进行人工审核。


结论

评估幻觉并不是为了让你的AI变得完美无瑕——而是为了确保它在最重要的地方是可靠的。通过结合使用像TruthfulQA和BIG-bench这样的基准测试以及严格的测试,你可以系统地提高模型的事实准确性。

文章来源:https://medium.com/@weber-stephen/mastering-llm-accuracy-how-to-test-detect-and-fix-hallucinations-in-ai-models-ae5f69111379
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消