What Is Underfitting in Machine Learning?
A model failure mode where the model is too simple or under-trained to capture training-data patterns, producing high error on both training and test sets.
What Is Underfitting in Machine Learning?
Underfitting in machine learning is the failure mode where a model is too simple, under-trained, or over-regularized to fit the patterns in its training data. The fingerprint is symmetric: high error on the training set and similarly high error on the validation and test sets, with learning curves that flatten well above acceptable loss. It applies to small classifiers and to LLM fine-tunes alike — a lightly fine-tuned base model that ignores domain-specific cues in the training corpus is underfit. FutureAGI surfaces underfitting-like behaviour in evaluation dashboards via persistently low evaluator scores across cohorts.
Why It Matters in Production LLM and Agent Systems
Underfitting silently caps a system’s ceiling. Teams sometimes believe they are seeing a hard task when they are actually seeing an underpowered model: a 7B chat model fine-tuned for two epochs on a complex RAG task will score badly everywhere, and no amount of prompt tweaking will rescue it. The fix is more capacity, not more prompts.
Different roles see different symptoms. ML engineers see flat loss curves and a tiny gap between train and validation metrics. Product teams see “the assistant just isn’t very good” feedback that does not resolve with prompt edits. SREs see retry rates that do not respond to model swaps within the same family. Compliance teams see unexplained refusal patterns when the model cannot extract a required entity reliably.
In 2026 agent stacks, underfitting at one step poisons the whole trajectory. An underfit intent classifier picks the wrong tool, an underfit summarizer drops key entities, an underfit judge model scores everything as “fine.” Multi-step pipelines amplify weak components because errors propagate. A trajectory-level evaluator can show that step-3 task completion is the bottleneck; step-3 itself, looked at in isolation, is the underfit component.
How FutureAGI Handles Underfitting
FutureAGI does not train your model; we evaluate the outputs of models you trained, so underfitting shows up here as persistently low evaluator scores. The honest anchor: if you fine-tuned a model with too few epochs or too small an architecture, FutureAGI’s Dataset.add_evaluation workflow runs the candidate against a held-out golden dataset using fi.evals.AnswerRelevancy, Groundedness, or TaskCompletion, and a regression eval confirms whether the new release closed the gap.
Concretely: a team fine-tunes a 3B model for a structured-extraction task, ships a candidate, and sees JSONValidation pass rate at 71% on production traces — well below the 95% gate. The team runs an offline regression eval on the canonical golden dataset and confirms the same 71%. That symmetry — bad on golden and bad on production — is the underfitting signature. The fix is to scale capacity (try 7B), add training tokens, or relax LoRA rank, then re-run the same eval suite. Unlike a single benchmark number, FutureAGI’s per-cohort scores show whether the underfit is global or limited to specific intents, which determines whether the fix is more data or more model.
How to Measure or Detect It
Bullet signals to monitor:
- Eval-fail-rate-by-cohort (dashboard): high failure rate across all cohorts, not just edge cases, suggests under-capacity.
- Train-vs-validation gap: if train accuracy ≈ validation accuracy and both are low, the model is underfit (versus overfit, which has a wide gap).
fi.evals.AnswerRelevancy: returns 0–1 per response; persistently low means the model is not capturing the task.fi.evals.TaskCompletionfor agents: low scores across diverse trajectories often indicate an under-capable planner or tool-selector.- Learning-curve flatness: training loss plateaus far above zero — capacity-bound, not data-bound.
Minimal regression-style check:
from fi.evals import AnswerRelevancy
evaluator = AnswerRelevancy()
results = [evaluator.evaluate(input=row.q, output=row.a) for row in golden_set]
mean = sum(r.score for r in results) / len(results)
if mean < 0.6:
print("Possible underfit: investigate model capacity")
Common Mistakes
- Confusing underfitting with bad prompts. If both base model and fine-tune score low on golden + production, prompts are not the bottleneck — capacity is.
- Adding regularization to a model that is already underfit. L2, dropout, or aggressive early-stopping on an underfit model makes it worse.
- Reporting a single global accuracy. Underfitting can be cohort-specific; a per-cohort breakdown reveals where capacity is missing.
- Skipping a held-out test set. Without it, you cannot tell underfit from overfit — both can produce low validation error in isolation.
Frequently Asked Questions
What is underfitting in machine learning?
Underfitting is when a model is too simple or under-trained to capture the patterns in its training data, leading to high error on both training and test sets and flat learning curves.
How is underfitting different from overfitting?
Underfitting means the model has not learned enough — high error everywhere. Overfitting means it has memorized noise — low training error but high test error. The two sit on opposite sides of the bias-variance tradeoff.
How do you detect underfitting in an LLM application?
FutureAGI flags underfitting-like failure with `fi.evals` regression runs that show consistently low scores across both golden and held-out cohorts, plus flat improvement curves across releases.