Do Small Language Models Know When They're Wrong? Confidence-Based Cascade Scoring for Educational Assessment
Organizations: Khan Academy
Abstract
Automated scoring of student work at scale requires balancing accuracy against cost and latency. In "cascade" systems, small language models (LMs) handle easier scoring tasks while escalating harder ones to larger LMs -- but the challenge is determining which cases to escalate. We explore verbalized confidence -- asking the LM to state a numerical confidence alongside its prediction -- as a routing signal. Using 2,100 expert-scored decisions from student-AI math conversations, we evaluate cascade systems built from GPT-5.4, Claude 4.5+, and Gemini 3.1 model pairs. We find that: (1) confidence discrimination varies widely across small LMs, with the best achieving AUROC 0.857 and the worst producing a near-degenerate confidence distribution; (2) confidence tracks human scoring difficulty, with lower LM confidence where annotators disagreed and took longer to score; (3) the best cascade approached large-LM accuracy (kappa 0.802 vs. 0.819) at 76% lower cost and 61% lower latency. Confidence discrimination is the bottleneck: the two small LMs with meaningful confidence variance yielded cascades with no statistically detectable kappa loss, while the third -- whose confidence was near-degenerate -- could not close the accuracy gap regardless of threshold. Small LMs with strong discrimination let practitioners trade cost for accuracy along the frontier; those without it do not.
Figures & tables
| Metric | Value |
|---|---|
| Items | 4 |
| Conversations per item | 300 |
| Included criteria | 7 |
| Scoring decisions | 2,100 |
| Annotators per decision | 3 |
| Annotation rows | 6,300 |
| Standard | Criterion | Human kappa |
|---|---|---|
| G-SRT.C.6 | 1 | 0.802 |
| F-IF.A.1 | 1 | 0.858 |
| F-IF.A.1 | 2 | 0.713 |
| G-SRT.A.2 | 1 | 0.800 |
| G-SRT.A.2 | 2 | 0.910 |
| F-IF.B.6 | 1 | 0.797 |
| Metric | Value |
|---|---|
| Scoring decisions | 2,100 |
| Unanimous (3/3) | 1,887 (90%) |
| Split (2/1) | 213 (10%) |
| LM | Tier | Accuracy | Cohen’s kappa | 95% CI |
|---|---|---|---|---|
| GPT Nano | Small | 88.2% | 0.677 | [0.639, 0.714] |
| Claude Haiku | Small | 91.7% | 0.783 | [0.751, 0.813] |
| Gemini Lite | Small | 89.5% | 0.740 | [0.708, 0.772] |
| GPT | Large | 91.0% | 0.770 | [0.739, 0.800] |
| Claude Opus | Large | 92.9% | 0.819 | [0.791, 0.846] |
| Gemini Pro | Large | 92.5% | 0.810 | [0.781, 0.838] |
| Small LM | AUROC | Distinct values | Variance |
|---|---|---|---|
| Claude Haiku | 0.857 | 13 | 0.0043 |
| Gemini Lite | 0.678 | 3 | 0.0005 |
| GPT Nano | 0.757 | 36 | 0.0057 |
| Small LM | Unanimous | Split | Cohen’s d | p |
|---|---|---|---|---|
| Claude Haiku | 0.909 | 0.833 | 1.16 | <.001 |
| Gemini Lite | 0.994 | 0.980 | 0.53 | <.001 |
| GPT Nano | 0.824 | 0.769 | 0.69 | <.001 |
| Small LM | Spearman’s rho | p |
|---|---|---|
| Claude Haiku | -0.427 | <.001 |
| Gemini Lite | -0.175 | <.001 |
| GPT Nano | -0.267 | <.001 |
| LM | Tier | Cost per 1k decisions |
|---|---|---|
| GPT Nano | Small | $0.30 |
| Claude Haiku | Small | $1.64 |
| Gemini Lite | Small | $0.39 |
| GPT | Large | $6.88 |
| Claude Opus | Large | $9.49 |
| Gemini Pro | Large | $5.59 |
| Family | Kappa | 95% CI | Esc. rate | |
|---|---|---|---|---|
| Claude | 0.77 | 0.802 | [0.77, 0.83] | 7% |
| GPT | 0.80 | 0.763 | [0.73, 0.79] | 47% |
| Gemini | 0.99 | 0.783 | [0.75, 0.81] | 13% |
| Family | Kappa difference | 95% CI |
|---|---|---|
| Claude | -0.017 | [-0.039, +0.005] |
| GPT | -0.007 | [-0.020, +0.005] |
| Gemini | -0.026 | [-0.042, -0.010] |
| Family | Kappa (kept) | Kappa (escalated) | Separation |
|---|---|---|---|
| GPT | 0.869 | 0.502 | +0.367 |
| Claude | 0.831 | 0.211 | +0.620 |
| Gemini | 0.828 | 0.250 | +0.578 |
| Family | N escalated | Small kappa (esc) | Large kappa (esc) | Lift |
|---|---|---|---|---|
| GPT | 990 | 0.502 | 0.669 | +0.167 |
| Claude | 139 | 0.211 | 0.471 | +0.261 |
| Gemini | 263 | 0.250 | 0.513 | +0.263 |
| Family | Strategy | Median (ms) | p95 (ms) |
|---|---|---|---|
| Claude | Always large | 5,300 | 14,806 |
| Claude | Always small | 2,049 | 2,888 |
| Claude | Cascade | 2,066 | 8,228 |
| GPT | Always large | 3,370 | 11,236 |
| GPT | Always small | 700 | 1,229 |
| GPT | Cascade | 1,199 | 10,519 |
| Small LM | ECE | NCE |
|---|---|---|
| Claude Haiku | 0.042 | +0.016 |
| Gemini Lite | 0.097 | -0.097 |
| GPT Nano | 0.073 | +0.063 |
| Small LM | Subset | N | AUROC | ECE |
|---|---|---|---|---|
| Claude Haiku | unanimous | 1,887 | 0.876 | 0.051 |
| Claude Haiku | split | 213 | 0.620 | 0.209 |
| Gemini Lite | unanimous | 1,887 | 0.720 | 0.066 |
| Gemini Lite | split | 213 | 0.512 | 0.374 |
| GPT Nano | unanimous | 1,887 | 0.778 | 0.094 |
| GPT Nano | split | 213 | 0.595 | 0.180 |
| Family | In-sample kappa | CV kappa (SD) | Optimism | Thr. SD |
|---|---|---|---|---|
| GPT | 0.763 | 0.764 (0.048) | -0.000 | 0.00 |
| Claude | 0.802 | 0.804 (0.029) | -0.002 | 0.02 |
| Gemini | 0.783 | 0.784 (0.042) | -0.000 | 0.00 |