Skip to main content
    Tillbaka

    Removing Bias by Adding Bias

    6 MAY 20263 min läsningAv Dentio-teamet

    By Fabian Farestam and Jonathan Ahrlind, on behalf of Dentio Technical Staff

    TLDR: LLM-as-a-judge evals are noisy because judges reward style, not just content. We rewrite every candidate into a neutral, fact-only form before judging. Essentially trading hidden style bias for a uniform, controllable bias, and cutting style-induced score spread without burying real clinical errors.

    LLM-as-a-judge evaluation has become a default pattern for many production AI systems. It is useful, cheap enough to run often, and flexible enough to score messy outputs that do not fit clean unit tests. It is also easy to fool, as judges tend to prefer certain styles, often rewarding verbosity, and can favor outputs that look like something from their own model family. In multilingual settings, including Swedish, the agreement can get worse.

    At Dentio, this matters because we are evaluating clinical documentation workflows, not chatbot answers. We help dentists draft journal notes from patient conversations, and a clinically correct note can look very different depending on the dentist. It might be terse or verbose, bullet-pointed or narrative, structured by procedure or by chronology. This variation, while good for the product, is bad for evals. If the goal is to measure whether the pipeline preserves the right clinical facts, then style should not influence the score as much as it usually does. Our fix is deliberately simple: before judging, make every candidate boring.

    We call this style normalization: rewriting each candidate into short, neutral factual prose before passing it to the judge. Instead of pretending the judge is unbiased, we introduce a controlled bias that is applied uniformly across all candidates.

    The setup

    To evaluate some factor A (e.g., whether a generated journal note preserves clinically relevant facts), instead of sending the candidate directly to the judge, we first send it to a separate model Y with a narrower instruction:

    Du är en medicinsk textnormaliserare. Din uppgift är att läsa ett journalanteckningsutdrag och återge ENBART de kliniska fakta som en kompakt, neutral punktlista på svenska.
    
    Regler:
    - En rad per faktum. Använd bindestreck som punkt.
    - Behåll tandnummer, ytor, diagnoser, mätvärden och föreslagna åtgärder exakt som de står.
    - Ta bort artighetsfraser, motiveringsspråk, stilistiska omsvep och formateringsrubriker som "Anamnes" / "Bedömning".
    - Lägg INTE till information som inte finns i originalet.
    - Skriv inga förklaringar eller rubriker före listan. Bara raderna.
    
    Journaltext:
    ---
    {journal}
    ---
    

    The output from Y is then passed to the same LLM-as-a-judge evaluator. This still introduces bias, as the normalized text will reflect the preferences and failure modes of model Y, but this bias is applied uniformly across all candidates.

    Some results

    We tested this on an internal set of manually annotated Swedish dental journals. For each example, we generated style variants (verbose, terse, bullet, narrative) holding all clinical facts identical, then scored every variant against the gold reference. The judge used a 1-10 holistic clinical-quality score covering correctness, structure, and professionalism.

    Without normalization, the same factual content received scores spread across 2.5 points on a 10-point scale depending purely on style. This 25% noise from presentation alone is enough to make A/B comparisons between pipeline versions unreliable.

    We tested ten different models as the normalizer Y, ranging from small (Gemma 3 4b, GPT-5.4 nano) to large (Claude Opus 4.7, GPT-5.5). In this sample, every tested model reduced style-induced spread, with larger normalizers generally performing better.

    Figure 1

    Larger normalizers strip more style

    Every model we tested cuts style-induced score spread. Bigger normalizers generally do it better, but even a 4B model helps. Hover any point for values; click a family to filter.

    $0.1$1$100102030405060Output cost (USD per 1M tokens, log scale)Style-induced spread reduction (%)Gemma 3 4BGemma 3 12BGemma 3 27BGPT-5.4 NanoDeepSeek V4 ProGPT-5.4 MiniClaude Haiku 4.5Claude Sonnet 4.6Claude Opus 4.7GPT-5.513% spread cut$0.08 / 1M tok20% spread cut$0.13 / 1M tok53% spread cut$0.16 / 1M tok40% spread cut$1.25 / 1M tok47% spread cut$3.48 / 1M tok33% spread cut$4.5 / 1M tok40% spread cut$5 / 1M tok40% spread cut$15 / 1M tok53% spread cut$25 / 1M tok47% spread cut$30 / 1M tok

    The critical safety question is whether normalization buries real clinical errors. We tested this by introducing wrong-tooth errors into the journals (changing one FDI tooth number to another valid but incorrect number) and measuring how much the judge's score dropped compared to the clean version. The important result is that normalization reduced style-induced score spread without reducing sensitivity to a clinically meaningful injected error.

    Figure 2

    Real errors still cut through

    We injected wrong-tooth errors and measured the judge's score drop with and without normalization. The dashed line marks 100%, where normalization neither helps nor hurts. Above it, the error became more salient.

    $0.1$1$109095100105110115120125Output cost (USD per 1M tokens, log scale)Score drop preserved (%)Gemma 3 4BGemma 3 12BGemma 3 27BGPT-5.4 NanoDeepSeek V4 ProGPT-5.4 MiniClaude Haiku 4.5Claude Sonnet 4.6Claude Opus 4.7GPT-5.5124% drop preserved$0.08 / 1M tok124% drop preserved$0.13 / 1M tok124% drop preserved$0.16 / 1M tok94% drop preserved$1.25 / 1M tok118% drop preserved$3.48 / 1M tok112% drop preserved$4.5 / 1M tok100% drop preserved$5 / 1M tok106% drop preserved$15 / 1M tok100% drop preserved$25 / 1M tok112% drop preserved$30 / 1M tok

    Practical takeaway

    You do not need a frontier model as the normalizer. In this setup, mid-size models gave 33-40% spread reduction while preserving sensitivity to the error class we tested, at a fraction of the cost of using models like Claude Opus 4.7 or GPT-5.5 for every eval call.

    Conclusion

    Style normalization is one small layer, not the whole eval stack. But it helped with a very real production problem: our evals were too easily impressed by style. By making every candidate boring first, we made the judge focus more on the clinical content we actually cared about. Raw judging has hidden style bias, while style-normalized judging has normalizer bias; for our use case, the second one has been much easier to reason about.



    Correspondence: [email protected]

    Dela:

    Cookieinställningar

    Vi använder analyscookies för att förstå webbplatsens prestanda och marknadsföringscookies för att mäta kampanjer. Du kan acceptera, avvisa eller välja själv.

    Integritetspolicy