Evaluating LLM Systems - Benchmarks, Hallucination and Human Preference

Summary

The four papers in this cluster collectively use three families of evaluation: (1) automatic benchmark metrics — exact match, accuracy / solve rate, BLEU, ROUGE-L, Q-BLEU, task success rate; (2) human judgment — pairwise preference win rates, 1–7 Likert quality scores, binary metadata flags, and manual audits of reasoning traces; and (3) targeted probes of failure — hallucination rates, TruthfulQA, RealToxicityPrompts, bias benchmarks. Their shared lesson is that the three can disagree: InstructGPT wins 85% of human comparisons against GPT-3 while regressing on public NLP benchmarks, and models fine-tuned to do well on those benchmarks (FLAN, T0) lose to it 78–79% of the time on real user prompts. This note is restricted to what these papers’ evaluation sections actually do; LLM-as-judge evaluation post-dates them and appears here only through its precursor, the reward model used as an automated selector.

Overview

Evaluating a generative system is harder than evaluating a classifier because the output space is open-ended, several different outputs can be correct, and the properties of interest (helpfulness, factuality, harmlessness) are not functions of string overlap with a reference. Ouyang et al. put it sharply: public NLP datasets “are designed to capture tasks that are easy to evaluate with automatic metrics”, but classification and QA are only about 18% of what API customers do, while open-ended generation and brainstorming are about 57% (Sec. 4.1).

The practical upshot is a layered design: cheap automatic metrics for iteration and regression testing, human preference as the primary outcome, and hand-labeled audits to explain why a system fails.

Main Content

Automatic metrics used across the cluster ^def-auto-metrics

MetricWhat it scoresUsed in
Exact match (EM)Generated answer string equals a reference answerOpen-domain QA in RAG (NQ, TriviaQA, WQ, CT); HotpotQA in ReAct
Accuracy / solve rateFinal answer correct (the chain itself is not scored)GSM8K etc. in CoT; FEVER label accuracy in RAG and ReAct
BLEU-1, ROUGE-L-gram / longest-common-subsequence overlap with a referenceMS-MARCO abstractive QA in RAG
Q-BLEU-1BLEU variant “with a higher weight for matching entities”, better correlated with human judgment for question generationJeopardy question generation in RAG
Distinct -gram ratioDistinct / total tri-grams — generation diversityRAG Table 5
Success rate; scoreEpisode meets all requirements; average fraction of desired attributes coveredALFWorld, WebShop in ReAct
Perspective API toxicityClassifier score on sampled continuationsRealToxicityPrompts in InstructGPT
Entropy of paired-sentence probabilitiesBias: an unbiased model is indifferent, hence maximum entropyWinogender, CrowS-Pairs in InstructGPT

Known weaknesses surfaced by the papers themselves. EM penalises correct-but-differently-worded answers: in ReAct’s audit, 28–29% of “failures” for both CoT and ReAct are label ambiguity — “right prediction but did not match the label precisely” — and some HotpotQA labels are simply outdated (Appendix A.2). Reference-based metrics break when the reference needs information the system was not given: RAG’s MS-MARCO setup withholds gold passages, so questions like “What is the weather in Volcano, CA?” cannot match the reference. And final-answer accuracy says nothing about the reasoning: Wei et al. found 2 of 50 correct GSM8K answers reached by a wrong chain, and Yao et al. found 14% of CoT’s correct HotpotQA answers rested on hallucinated reasoning or facts (6% for ReAct).

Human preference evaluation (Ouyang et al., Sec. 3.6) ^def-human-pref

  • Win rate against a fixed baseline. For each model, “how often its outputs are preferred to a baseline policy” — the 175B SFT model, chosen because “its performance is near the middle of the pack”. Error bars are 95% confidence intervals.
  • Likert 1–7 overall quality per response.
  • Binary metadata per output (Table 3): fails to follow the instruction; inappropriate for a customer assistant; hallucination; satisfies explicit constraint; sexual / violent content; denigrates a protected class; gives harmful advice; expresses opinion or moral judgment.

Design safeguards. Train / validation / test splits are by user ID, so test prompts come from customers never seen in training. A separate pool of held-out labelers who produced no training data checks that the model has not merely overfit to its raters. Because prompts written for InstructGPT may disadvantage GPT-3, results are repeated on prompts originally submitted to GPT-3 models. During training labelers prioritise helpfulness; in final evaluation they prioritise truthfulness and harmlessness.

Pairwise comparative evaluation with four options (Lewis et al., Sec. 3.3) ^def-pairwise-four

Evaluators see an input and two generations (BART vs RAG; which model appears as “A” or “B” is randomised per example “to avoid any biases for screen position”, annotators may research the topic online, and gold-labeled check items screen out unreliable annotators — Appendix B) and choose: A better / B better / both good / neither good, separately for factuality — “whether a statement can be corroborated by trusted external sources” — and specificity — “high mutual dependence between the input and output”. Over 452 pairs (Table 4):

FactualitySpecificity
BART better7.1%16.8%
RAG better42.7%37.4%
Both good11.7%11.8%
Both poor17.7%6.9%
No majority20.8%20.1%

The “both” options stop forced choices from manufacturing a difference, and the “no majority” row reports rater disagreement instead of hiding it.

Hallucination — three operationalisations ^def-hallucination

  1. Closed-domain fabrication (Ouyang et al.): on tasks where “the output should not contain information that is not present in the input” (summarisation, closed-domain QA), a labeler flags invented content. Rate: 41% for GPT-3 vs 21% for InstructGPT.
  2. Uncorroborated statement (Lewis et al.): a generation is non-factual if it cannot be “corroborated by trusted external sources”; measured by pairwise human comparison.
  3. Hallucinated reasoning trace or fact (Yao et al., Table 2): a human reads the full trajectory. Accounts for 56% of CoT’s failures and 0% of ReAct’s on HotpotQA.

Ouyang et al. add a conceptual caution: honesty would require “comparing the model’s actual output to its ‘belief’ about the correct output, and since the model is a big black box, we can’t infer its beliefs” — so they measure truthfulness instead, via (1) and TruthfulQA. With an “Instruction+QA” prompt allowing “I have no comment”, PPO models “err on the side of being truthful and uninformative rather than confidently saying a falsehood”.

Error taxonomies as an evaluation instrument ^ex-taxonomy

Both prompting papers sample about 50 successes and 50 failures and hand-label them. Wei et al. classify wrong GSM8K chains by the minimal edit needed to fix them (calculator error 8%, symbol-mapping 16%, one step missing 22%, major semantic/coherence errors 54%). Yao et al. classify by failure mechanism (reasoning error, search-result error, hallucination, label ambiguity). Both taxonomies point directly at interventions — a calculator tool; better retrieval or a CoT fallback — which a scalar accuracy cannot.

Harm-related probes (Ouyang et al., Sec. 4.2). RealToxicityPrompts is run three ways (no instruction, “respectful” instruction, explicitly toxic instruction) with both Perspective API and human raters on 1,729 prompts; the conclusion depends on the condition (less toxic when asked to be respectful; no difference unprompted; more toxic when asked to be). Prompts were sampled uniformly over input toxicity, so “absolute toxicity numbers are inflated” — a reminder that the prompt-sampling design is part of the metric.

Reporting conventions for prompted systems. Prompt sensitivity is large (GPT-3 on SST-2 ranges 54.3–93.4% across exemplar orderings, cited in Wei et al.). The papers respond by averaging over 5 seeds with shuffled exemplar order (CoT, LaMDA), testing alternative annotators and exemplar sets (CoT Sec. 3.4), and reporting both average and best-of-6 prompts (ReAct on ALFWorld: 57 vs 71). Best-of- numbers are optimistic selections and should be compared only with other best-of- numbers.

The alignment tax as an evaluation finding. Measuring both human preference and public benchmarks is what revealed that PPO improves the former while degrading SQuADv2, DROP, HellaSwag and WMT translation, and that PPO-ptx repairs most of it (see ^def-alignment-tax). A single-metric evaluation would have missed either the gain or the cost.

Automated judges. None of the four papers uses an LLM to grade outputs. The closest device is the reward model used as a selector — for the SFT checkpoint, the FLAN/T0 checkpoints, and the prompted-GPT-3 prefix — with a known accuracy of about 70% against held-out humans (vs 73–77% human–human agreement). Any model-based judge inherits the same two questions: what is its agreement with people, and how does that compare with people’s agreement with each other?

Examples

A minimal protocol for evaluating an internal RAG or agent system, assembled from the practices above:

def evaluate(system, baseline, test_set, raters):
    # 1. Split by *user / source*, never by row (Ouyang Sec. 3.2)
    assert not (test_set.user_ids & system.training_user_ids)
 
    # 2. Automatic metrics for regression tracking
    auto = {"exact_match": mean(em(system(x), y) for x, y in test_set),
            "task_success": mean(all_requirements_met(system(x)) for x, _ in test_set)}
 
    # 3. Pairwise human preference with 4 options, order randomised (Lewis Sec. 3.3)
    votes = [raters.compare(x, *shuffle([system(x), baseline(x)]),
                            options=["A", "B", "both good", "neither"]) for x, _ in test_set]
    win_rate, ci95 = proportion_ci(votes)            # report interval, plus "no majority" share
 
    # 4. Closed-domain hallucination flag (Ouyang Table 3)
    halluc = mean(raters.flag_unsupported(x, system(x)) for x, _ in test_set.closed_domain)
 
    # 5. Audit 50 successes + 50 failures with a fixed taxonomy (Wei App. D; Yao Table 2)
    audit = raters.label_failure_modes(sample(test_set, 100, stratify="correct"))
    return auto, win_rate, ci95, halluc, audit

Sample-size intuition: InstructGPT’s headline is a binomial proportion; a -point 95% interval at needs roughly independent comparisons, and about 1,070 at — the same arithmetic as any power calculation for a proportion.

Connections

See Also