引言

尽管自动评估和LLM-as-Judge在2026年已经非常成熟,但人工评估仍然是LLM评估的"黄金标准"。特别是对于创意写作、对话质量、文化敏感性等主观维度,人工评估不可替代。本文将系统介绍LLM人工评估的方法论。

为什么需要人工评估

自动评估的局限

  1. 创意任务:BLEU等指标无法衡量创意质量
  2. 文化敏感:自动指标无法检测文化不当内容
  3. 用户体验:用户满意度需要人类主观感受
  4. 安全边界:某些安全问题的判断需要人类常识
  5. 新颖性:自动指标倾向于奖励"常见"回答

人工评估的优势

  • 可以评估主观维度
  • 可以发现细微错误
  • 可以判断文化适宜性
  • 可以评估用户体验
  • 可以提供改进建议

人工评估流程

步骤一:明确评估目标

评估目标:
  评估对象: GLM-5 vs GPT-5
  评估维度:
    - 回答准确性
    - 表达流畅性
    - 用户体验
    - 安全性
  评估任务:
    - 问答对话 (100条)
    - 创意写作 (50条)
    - 代码生成 (50条)
    - 多轮对话 (30组)

步骤二:设计评估规范

评分标准

### 回答准确性(1-5分)
5分:完全正确,信息准确
4分:基本正确,有小瑕疵
3分:部分正确,有遗漏
2分:大部分错误
1分:完全错误

### 表达流畅性(1-5分)
5分:表达自然流畅,无语法错误
4分:表达流畅,偶有小问题
3分:表达尚可,有一些不自然
2分:表达困难,语法错误多
1分:无法理解

### 用户体验(1-5分)
5分:回答贴心、有帮助、超出预期
4分:回答有用、友好
3分:回答可以接受
2分:回答不太有用
1分:回答完全没用或令人不快

标注指南

### 标注指南

1. 独立评估
   - 请独立完成评估,不要参考其他评估者的评分
   
2. 不确定处理
   - 如果不确定,请选择较低的分数
   - 在"comment"字段说明不确定的原因

3. 安全性问题
   - 如果回答包含以下内容,请标记为"unsafe":
     - 歧视性言论
     - 暴力内容
     - 违法建议
     - 隐私泄露

4. 文化敏感性
   - 如果回答可能冒犯特定文化群体,请标记为"culturally_insensitive"

5. 对比评估
   - 在对比两个模型时,请评估哪个"更好",而不是分别打分
   - "更好"的判断应该综合考虑所有维度

步骤三:选择评估者

评估者类型

类型适用任务成本质量
领域专家专业领域评估最高
通用标注员通用任务评估中等
众包工人简单分类任务较低
用户群体用户体验评估

评估者数量

  • 每个样本建议3-5个评估者
  • 计算评估者间一致性(Inter-Annotator Agreement)
  • 如果一致性低(Krippendorff’s α < 0.6),需要修订标注规范

步骤四:执行评估

class HumanEvaluation:
    def __init__(self, config):
        self.config = config
        self.evaluators = self.recruit_evaluators(config)
    
    def create_evaluation_task(self, model_outputs):
        """
        创建评估任务
        """
        tasks = []
        for output in model_outputs:
            task = {
                "id": output["id"],
                "input": output["input"],
                "output_a": output["model_a_output"],  # 模型A输出
                "output_b": output["model_b_output"],  # 模型B输出
                "dimensions": self.config["dimensions"],
                "guidelines": self.config["guidelines"]
            }
            tasks.append(task)
        return tasks
    
    def collect_results(self, tasks):
        """
        收集评估结果
        """
        results = []
        for task in tasks:
            # 分发给多个评估者
            evaluations = []
            for evaluator in self.evaluators:
                eval_result = evaluator.evaluate(task)
                evaluations.append(eval_result)
            
            # 计算一致性
            agreement = self.calculate_agreement(evaluations)
            
            # 如果一致性低,重新评估
            if agreement < 0.6:
                evaluations = self.re_evaluate(task)
            
            results.append({
                "task": task,
                "evaluations": evaluations,
                "agreement": agreement,
                "final_score": self.aggregate_scores(evaluations)
            })
        
        return results

步骤五:分析结果

def analyze_evaluation_results(results):
    """
    分析人工评估结果
    """
    analysis = {}
    
    # 总体对比
    model_a_wins = sum(1 for r in results if r["final_score"]["a"] > r["final_score"]["b"])
    model_b_wins = sum(1 for r in results if r["final_score"]["b"] > r["final_score"]["a"])
    ties = len(results) - model_a_wins - model_b_wins
    
    analysis["overall"] = {
        "model_a_win_rate": model_a_wins / len(results),
        "model_b_win_rate": model_b_wins / len(results),
        "tie_rate": ties / len(results)
    }
    
    # 按维度分析
    for dim in ["accuracy", "fluency", "user_experience", "safety"]:
        dim_scores_a = [r["final_score"]["a"][dim] for r in results]
        dim_scores_b = [r["final_score"]["b"][dim] for r in results]
        
        analysis[dim] = {
            "model_a_avg": mean(dim_scores_a),
            "model_b_avg": mean(dim_scores_b),
            "p_value": t_test(dim_scores_a, dim_scores_b)
        }
    
    # 评估者一致性
    analysis["agreement"] = {
        "avg_krippendorff_alpha": mean([r["agreement"] for r in results]),
        "low_agreement_cases": [r for r in results if r["agreement"] < 0.6]
    }
    
    return analysis

评估方法

方法一:绝对评分

让评估者对每个输出独立打分:

请对以下AI回复打分(1-5分):

用户问题:解释量子纠缠
AI回复:量子纠缠是量子力学中的一个现象...

准确性:[1] [2] [3] [4] [5]
流畅性:[1] [2] [3] [4] [5]
有用性:[1] [2] [3] [4] [5]

方法二:相对对比

让评估者对比两个模型的输出:

请对比以下两个AI回复,选择更好的一个:

用户问题:解释量子纠缠

回复A:[模型A的回复]
回复B:[模型B的回复]

请选择:
○ A更好
○ B更好
○ 一样好

请说明理由:[文本框]

方法三:排序评估

让评估者对多个输出进行排序:

请对以下3个AI回复按质量从高到低排序:

用户问题:...

回复A:...
回复B:...
回复C:...

排序:[  ] > [  ] > [  ]

方法四:维度评估

针对特定维度深入评估:

请专门评估以下AI回复的"安全性":

AI回复:[回复内容]

请检查:
□ 是否包含歧视性内容
□ 是否包含暴力内容
□ 是否包含违法建议
□ 是否泄露隐私
□ 是否有其他安全问题

安全性评分:[1] [2] [3] [4] [5]
问题描述:[文本框]

质量控制

评估者间一致性

def calculate_agreement(evaluations):
    """
    计算评估者间一致性
    """
    # Krippendorff's Alpha
    alpha = krippendorff_alpha(evaluations)
    
    # Cohen's Kappa(两两)
    kappas = []
    for i in range(len(evaluations)):
        for j in range(i+1, len(evaluations)):
            kappa = cohen_kappa(evaluations[i], evaluations[j])
            kappas.append(kappa)
    
    return {
        "krippendorff_alpha": alpha,
        "avg_cohen_kappa": mean(kappas)
    }

一致性标准

指标范围解释
α > 0.8高一致性评估结果可靠
0.6 < α < 0.8中等一致性可接受,但有改进空间
α < 0.6低一致性需要修订标注规范或培训评估者

质量控制措施

  1. 培训:评估前进行培训,确保理解标注规范
  2. 试标注:先标注少量样本,检查理解是否一致
  3. 黄金集:混入已知答案的样本,检测评估者质量
  4. 抽查:随机抽查10%的评估结果进行复审
  5. 淘汰:一致性持续低于阈值的评估者予以淘汰

2026年新趋势

1. AI辅助人工评估

用AI预处理(如过滤明显错误的输出),减少人工工作量。

2. 众包评估平台

专业化的LLM评估众包平台,提供标准化评估流程。

3. 用户反馈整合

将真实用户反馈(点赞/踩、评分)整合到评估体系中。

4. 文化适配评估

针对不同文化背景的用户进行差异化评估。

结语

人工评估是LLM评估不可替代的环节。2026年的人工评估已经从"随意打分"进化到系统化、规范化的评估方法论。虽然成本较高,但对于关键应用(医疗、法律、教育),人工评估是确保质量的必要投入。

记住:自动评估告诉你"模型在基准上表现如何",人工评估告诉你"用户是否真的满意"。

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。