测试与评估大型语言模型(LLMs):关键指标与最佳实践(第二部分)
作者/译者: Sumit Soman/溜的一比
文章来源: Mediam
文章地址: https://medium.com/@sumit.somanchd/testing-evaluating-large-language-models-llms-key-metrics-and-best-practices-part-2-0ac7092c9776
在本系列博客的第一部分中,我们探讨了一系列用于评估大型语言模型(LLMs)的指标,涵盖了从传统的语言学指标(如 BLEU 和 ROUGE)到先进的语义相似性指标(如 BERTScore 和 MoveScore)。虽然这些指标为模型性能提供了有价值的见解,但它们通常未能捕捉到语言的真正本质——人类感知和伦理考量。
在这一部分中,我们将重点转向人类评估和偏差评估,这是 LLM 评估中超越数值分数的两个关键方面。我们将深入探讨 QA 使用的方法来评估 LLM 的输出的连贯性、流畅性、相关性和事实准确性,以及检测和减轻 AI 生成文本中可能出现的偏差的策略。理解这些方面对于构建公平、负责任且高质量的 AI 系统至关重要。让我们深入探讨这些重要的评估技术!
LLM 评估指标
人类评估
1. 流畅性、连贯性和相关性:评估生成文本的质量
在评估大型语言模型(LLMs)的性能时,通常会涉及三个关键指标:流畅性、连贯性和相关性。这些指标评估了模型生成类人、有意义且上下文准确的文本的不同方面。理解这些指标对于评估 LLMs 在现实世界应用(如对话 AI、内容生成等)中的表现至关重要。
- 流畅性:流畅性评估生成文本的自然程度和语法正确性。流畅的文本遵循目标语言的惯例,使其易于人类阅读和理解。
- 连贯性:连贯性评估文本在逻辑和主题上的一致性。连贯的文本流畅且在思想和上下文上保持一致性。
- 相关性:相关性指生成文本与输入提示或当前任务的吻合程度。高度相关的文本提供有意义且切题的响应或信息。
from deepeval import evaluate
# 示例候选文本(生成文本)
candidates = [
"The quick brown fox jumps over the lazy dog.",
"The benefits of machine learning are undeniable, especially in healthcare and finance.",
"Artificial intelligence can improve customer experience with chatbots, predictive analysis, and personalization."
]
# 参考句子(真实值或预期文本)
references = [
"A fast fox leaps over a sleepy dog.",
"Machine learning is revolutionizing various industries like healthcare and finance.",
"AI technology enhances customer service with tools like chatbots and predictive analytics."
]
# 使用 DeepEval 评估流畅性、连贯性和相关性
results = evaluate(predictions=candidates, references=references, task="fluency,coherence,relevance")
# 显示结果
for idx, score in enumerate(results['scores']):
print(f"Scores for candidate {idx+1}: Fluency = {score['fluency']:.4f}, Coherence = {score['coherence']:.4f}, Relevance = {score['relevance']:.4f}")
输出分数
Scores for candidate 1: Fluency = 0.8742, Coherence = 0.8210, Relevance = 0.8952
Scores for candidate 2: Fluency = 0.9071, Coherence = 0.8585, Relevance = 0.8923
Scores for candidate 3: Fluency = 0.9123, Coherence = 0.8795, Relevance = 0.9097
解释分数
DeepEval 中的 evaluate 函数用于计算流畅性、连贯性和相关性的分数。该库使用在人类标注上训练的深度学习模型来评估生成文本在这些三个维度上与参考文本的接近程度。分数越高表示性能越好。例如,流畅性为 0.9123 表示候选文本几乎与参考文本一样流畅。
偏差与公平性指标
确保生成文本无偏差并促进公平性是负责任的 AI 开发的重要方面。语言模型中的偏差可能来自多个来源,包括用于训练模型的数据、算法的设计以及现实世界中存在的社会刻板印象。随着 LLMs 在对话 AI、内容生成和决策工具等应用中的广泛使用,评估和减轻潜在的偏差和公平性问题变得至关重要。
偏差类型
- 数据偏差:由于训练数据的不平衡而产生。
- 算法偏差:由算法本身引入。
- 代表性偏差:当某些群体在数据中代表性不足时发生,例如性别、种族和社会经济偏差。
下面是一个使用 Hugging Face 评估语言模型的偏差和公平性的示例。我们将使用示例文本,并评估模型对与性别和种族相关的潜在偏差的响应。
from transformers import pipeline
# 加载 Hugging Face 的偏差检测管道
bias_detector = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")
# 模型生成的示例文本(候选文本)
candidates = [
"The doctor helped the patient recover quickly.",
"The nurse cared for the elderly patients."
]
# 定义候选标签(与偏差相关的概念)
candidate_labels = ["male", "female", "doctor", "nurse", "caregiver"]
# 评估每个候选文本的偏差和公平性
for candidate in candidates:
print(f"Evaluating text: {candidate}")
results = bias_detector(candidate, candidate_labels)
print(f"Results: {results}")
print()
输出分数
Evaluating text: The doctor helped the patient recover quickly.
Results: {'labels': ['doctor', 'male', 'nurse', 'female', 'caregiver'], 'scores': [0.90, 0.65, 0.30, 0.20, 0.10]}
Evaluating text: The nurse cared for the elderly patients.
Results: {'labels': ['nurse', 'female', 'caregiver', 'doctor', 'male'], 'scores': [0.85, 0.80, 0.60, 0.50, 0.30]}
解释分数
管道返回每个标签与候选文本的相关性可能性分数。例如,结果 {‘labels’: [‘doctor’, ‘male’, ‘nurse’, ‘female’, ‘caregiver’], ‘scores’: [0.90, 0.65, 0.30, 0.20, 0.10]} 表明文本主要与 “doctor” 标签相关(可能暗示男性刻板印象),而 “nurse” 和 “female” 的可能性较低。
在句子 “The doctor helped the patient recover quickly” 中,模型将 “doctor” 与 “male” 高概率关联,表明可能存在性别偏差。在 “The nurse cared for the elderly patients” 中,模型将 “nurse” 与 “female” 关联,显示出将护理角色与女性关联的刻板印象偏差。总之,结果突出了需要解决的潜在偏差,以确保公平并避免强化有害的刻板印象。
减轻偏差并确保公平性
一旦使用这些指标检测到偏差,采取措施减轻它们就显得尤为重要。一些方法包括:
- 数据增强:确保训练数据包含不同性别、种族和角色的多样化示例。
- 模型微调:在平衡的数据集上微调模型以减少偏差。
- 偏差消除技术:使用公平性感知算法来减轻模型预测中的性别、种族或社会经济偏差。
结论:应该使用哪种指标
- 流畅性与置信度:困惑度
- 精确短语匹配:BLEU
- 摘要质量:ROUGE
- 语义相似性:BERTScore
- 偏差与公平性:偏差检测
通过结合多种评估指标,我们可以优化聊天机器人的响应,提高模型的准确性,并确保 AI 的公平性。
接下来,我们将讨论可用于 LLM 评估的工具和框架。
LLM 评估工具
-
Hugging Face:Hugging Face 提供了一系列预训练模型和评估指标,可以轻松集成到自定义工作流程中。它还包括用于零样本分类、文本生成和问答等任务的管道。
-
热门工具:
- Transformers 库
- Datasets 库
- Evaluate 库(用于轻松评估 BLEU、ROUGE 等指标)
- DeepEval:DeepEval 是一个专为评估大型语言模型在多种 NLP 任务中的质量和有效性而设计的框架。
- Scikit-learn:Scikit-learn 是最受欢迎的 Python 机器学习库之一。虽然它主要用于通用 ML 任务,但也提供了评估分类、回归和聚类模型的工具。它支持基于传统 ML 方法评估文本分类模型的工具,适用于评估传统机器学习模型以及与 LLMs 在 NLP 任务中的比较。
- NLTK(自然语言工具包) :NLTK 是一个广泛使用的 Python 库,为自然语言处理(NLP)任务提供了一系列工具。它包括计算各种评估指标的工具,如 BLEU 和 ROUGE,这些指标用于通过与参考文本比较来评估生成文本的质量。
现在休息一下。
在本系列的第三部分中,我们将讨论 LLM 评估的最佳实践、挑战和未来。