wikillm

Paper · 2021-01-30 · cs.CL

Learning From How Humans Correct

Finds likely label noise in an industrial text-classification set with a BERT model, has humans relabel about 300,000 disputed examples, and feeds the first model's predicted label as an extra input to a second BERT model trained on the corrected labels. Test accuracy rises from 83.3% to 92.5% on one private dataset (author-reported; no code).

Learning with noisy labelsText classificationtext-classificationlabel-noisehuman-in-the-loopbertdata-centric

arXivPDFMarkdown8 min read

AI-compiled by claude-haiku-5-5 on 2026-10-19, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

In plain words

A team labels a large pile of text by hand, and some of those labels are wrong. The author's idea is to let a first model flag the examples where its own guess disagrees with the human label. People then look at those examples again and fix them. Their corrections are kept, and a second model is shown the first model's guess as an extra hint while it learns from the fixed labels.

The point is that the second model learns both the task and the pattern of how people fix mistakes. The method is simple and needs no special training machinery. The evidence is one private industrial dataset, so it is a case study rather than a general benchmark.

TL;DR

  • Industrial text classification with manually labelled data, BERT-Base fine-tuned.
  • A model trained on the original labels disagrees with the human label on about 15% of the data. Those examples are relabelled by hand.
  • A second model gets the first model's one-hot prediction as an extra input and is trained on the corrected labels. Author-reported test accuracy is 92.5%, against 83.3% for the first model.
  • One dataset, one run per model reported, no code, no variance. Treat the numbers as a case study, not as a benchmark result.

Problem

Manually labelled data in an industrial application contains noisy labels. Relabelling all of it is expensive, so the author wants to find the noisy examples and fix only those §1 §3. The paper also asks how to make the model use the corrections: a model trained on corrected labels alone ignores how the labels were changed §1 §6.

The setting is stated as an industrial text-classification task with a large database (500 million items) and a manually labelled subset of 2,040,000 items §3 tab. 1. The paper does not state the number of classes, the language, or the label semantics.

Method

The framework has five steps, shown in fig. 1 §3:

  1. Label 2,040,000 items by hand and split them into 2,000,000 training items and 40,000 test items. The items are sampled from the 500 million-item database §3 tab. 1.
  2. Fine-tune BERT on the training items. Call the result Model-A. The text says Model-A should not overfit the training data, but gives no test for it §3.
  3. Run Model-A on all 2,040,000 items. Mark every item whose predicted label differs from the human label as noisy. This gives 300,000 items: 294,120 in the training split and 5,880 in the test split §3 tab. 1.
  4. Relabel the 300,000 marked items by hand and merge them back into the 2,040,000 items. While relabelling, the annotator sees the previous human label and Model-A's prediction as references, but still makes their own decision §3.
  5. Train Model-C on the merged data. Each input gets Model-A's predicted label as an extra one-hot input. The training target is the corrected label. Model-A's prediction is the "before-correction" signal and the corrected label is the "after-correction" target, so Model-C learns to correct and to classify at once §3 §6.

A second model, Model-B, appears in fig. 1 and tab. 2. It is trained on the corrected data from step 4, with no Model-A input. The body text never defines it. The reading here is inferred from fig. 1 and the abstract, which says the 91.7% result is "trained on the corrected dataset" §3 fig. 1.

Encoding. The text follows the BERT convention. fig. 2 shows the input for Model-A: the BERT [CLS] slot, followed by the tokens of the input text fig. 2. fig. 3 shows Model-C with the same layout, except that the [CLS] slot is labelled "predicted label by Model-A" fig. 3. The text calls the label an "addition input" §3. Whether it replaces the [CLS] token or is an extra token is not stated in the text. The figures suggest it sits in the first slot. How the one-hot vector is embedded (a lookup, a linear projection, or a dense vector added to the embedding) is not stated §4 fig. 3.

Inference. In a real deployment the human label is not available, so Model-C takes Model-A's prediction as its input. Every inference is therefore two forward passes: Model-A, then Model-C with that prediction §6.

Pseudocode
# Stage 1: label, split and train a base model  [§3] [tab. 1]
# Labelled data is split into a training set and a test set.
def train_model_a(labelled):
    train, test = split(labelled, train_size=2_000_000)
    model_a = fine_tune_bert(train)
    return model_a, train, test

# Stage 2: find disagreements and relabel them by hand  [§3]
# Model-A predicts on the whole labelled pool, including its own
# training split (in-sample predictions; see Pitfalls).
def find_and_relabel(model_a, labelled):
    predictions = model_a.predict(labelled.texts)
    noisy = [
        item for item, pred in zip(labelled, predictions)
        if pred != item.human_label
    ]
    corrected = relabel_by_hand(noisy, hints=predictions)  # annotator decides
    return merge(labelled, corrected)

# Stage 3: train a model that also sees the base model's prediction  [§3] [§6]
# Input: the one-hot prediction of Model-A, placed in the first slot.
def train_model_c(merged, model_a_predictions):
    for item in merged:
        one_hot = one_hot_encode(model_a_predictions[item.id])  # (num_classes,)
        input_ids = [CLS_SLOT(one_hot)] + tokenize(item.text)  # [fig. 3]
        loss = cross_entropy(model_c(input_ids), item.corrected_label)
    return model_c

# Inference needs Model-A first, since no human label exists  [§6]
def predict(text):
    one_hot = one_hot_encode(model_a.predict([text]))
    return model_c.predict(one_hot, text)

Relabel criterion. The only detector is a disagreement rule: a label is noisy if Model-A's top prediction differs from the human label §2. The text mentions a margin signal (close top-1 and top-2 scores) and related detectors as future work, and does not evaluate them §2 §7.

Hyperparameters

NameValueWhereNotes
OptimizerAdam§5Cites Kingma and Ba; betas, epsilon not stated
Learning rate1e-5§5Schedule, warm-up not stated
Dropout0.1§5"on all layers"
BackboneBERT-Base, 12 layers, 768 hidden§5Pre-trained checkpoint not named
Training split2,000,000§3 tab. 1
Test split40,000§3 tab. 1
Noisy items relabelled300,000 (294,120 train / 5,880 test)§3 tab. 1About 14.7% of each split
Batch sizenot stated
Epochs or stepsnot stated
Max sequence lengthnot stated
Number of classesnot stated
Model-A training stopping"should not overfit"§3No criterion given
Random seeds, runsnot statedSingle numbers reported
Hardwarenot stated

Results

Author-reported, on a private industrial dataset. Setup: BERT-Base, test split of 40,000 items; human evaluation on 5,000 items sampled from the 500 million database tab. 2 §5 §6.

Model (in fig. 1)Test accuracyHuman-evaluation accuracySource
Model-A (original labels)83.3%88.0%tab. 2
Model-B (corrected labels, no Model-A input)91.7%97.2%tab. 2
Model-C (corrected labels + Model-A prediction input)92.5%97.7%tab. 2

The abstract says human evaluation "achieves more than 97%" [abstract]. It matches Model-B and Model-C. The gain from Model-B to Model-C is 0.8 points on test accuracy and 0.5 points on human evaluation. Only one run per model is reported, and no variance or significance is given tab. 2.

Paper vs code

No official code. The paper gives no code link, project page or repository. The only URL is in a reference to another paper by the same author §2.

Searched GitHub for "learning from how humans correct" and "relabel noisy labels BERT human correction". Neither returned a repository that could belong to the author. Nothing is cloned.

Pitfalls

  • Test set is relabelled too. The 40,000 test items go through the same find-and-relabel process, and 5,880 of them change label §3 tab. 1. The paper does not say which labels Model-A's 83.3% and the later accuracies are scored against: the original or the corrected ones. The 83.3% to 91.7% gain therefore cannot be read as a clean held-out improvement until this is clarified. An implementer should keep a separate, untouched test set.
  • In-sample predictions drive the selection. Step 3 runs Model-A on all 2,040,000 items, including the 2,000,000 it was trained on §3. The noisy set is therefore the disagreement of a model with its own training data, not with unseen data. Training data errors are the ones most likely to be found, which may bias the selection. The paper says Model-A "should not overfit" but gives no measurement §3.
  • Model-C training input is probably in-sample too. Step 5 uses Model-A's predicted label as the training input §3. The paper does not say whether this uses the in-sample predictions from step 3 or out-of-sample ones (for example by cross-fitting). At inference Model-C only ever sees out-of-sample predictions §6. If the training-time input is more accurate than the inference-time input, the model may over-trust it. The paper does not measure this gap.
  • Annotators can keep the old label. The relabelling step is not forced to the model's guess: annotators see both and decide §3. The discussion argues that the worst outcome is keeping the original human label §6, but no agreement rate between annotators, or between annotators and Model-A, is reported. The labelling protocol (number of annotators, guidelines, adjudication) is not stated.
  • Human-evaluation accuracy is not comparable to test accuracy. The human-evaluation sample comes from the full 500 million-item database, while test accuracy is measured on the 40,000-item split. The paper attributes the higher human-evaluation figure to sampling §6. Sample and label-quality differences are confounded, and the protocol for how humans scored the predictions is not stated tab. 2.
  • Model-C needs two models at inference. Each query runs Model-A and then Model-C, roughly doubling inference cost. The paper does not report latency or memory §6.
  • Model-C training data is ambiguous. Step 5 says the Model-C training target "contains the 294,120 corrected human labels" §3. It is unclear whether Model-C trains on the whole merged training split (2,000,000 items, with 294,120 corrected labels) or only on the 294,120 relabelled items. The first reading matches the merge in step 4.
  • Model-B is not defined in the text. It appears only in fig. 1 and tab. 2, and the abstract ties its accuracy to training on the corrected dataset [abstract]. The implementation above follows that reading and is inferred.
  • Small margin, single run. Model-C beats Model-B by 0.8 test points and 0.5 human points, with one run each tab. 2. The paper gives no evidence that the margin is larger than seed noise.
  • Broad claims are untested. The keywords list speech, vision, detection, sequence tagging, generation and click-through prediction [keywords], and the conclusion says the idea can apply broadly §7. The experiments cover one text-classification dataset only §5.
  • Dataset is private. The 2,040,000-item dataset, its labels and its classes are not released and not described beyond the numbers in tab. 1. Exact reproduction is not possible from the paper.
  • Figures are unlabelled as to the exact input layout. fig. 2 and fig. 3 show 16 slots. The number of tokens per example, and the maximum length, are not stated.

Lineage

  • Builds on: BERT, arXiv:1810.04805, for the backbone and fine-tuning recipe §2 §4.
  • Compared against: RLHF / reward-model relabelling (Ouyang et al., arXiv:2203.02155) §2; confident learning (Northcutt et al., JAIR 2021) §2; noisy-label detection by maximum softmax probability (Hendrycks and Gimpel, arXiv:1610.02136) and related detectors §2. The paper argues these either need no human labels or target different goals. It does not run any of them.
  • Related work by the same author: a pattern-based relabelling method (TechRxiv, cited as §2) and the same idea applied to policy datasets §2.
  • Superseded by: not known from content in this wiki.

Source and license

Adapted from “Learning From How Humans Correct” by Tong Guo (arXiv:2102.00225), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors.