Lost in the Middle: Positiebias in LLM's en de impact op Finance AI
Als ik terugkijk naar de DocFinQA-bijdrage — waar zowel op retrieval gebaseerde pipelines als long-context LLM's faalden bij SEC-deponeringen met contexten van 123K tokens — was de vraag die ik openliet: waarom. Dit artikel van Liu et al. (TACL 2024, arXiv:2307.03172) is het mechanistische antwoord, en het blijkt dat de foutmodus eenvoudiger en hardnekkiger is dan ik had verwacht.
Het artikel
"Lost in the Middle: How Language Models Use Long Contexts" door Nelson F. Liu, Kevin Lin, John Hewitt, Ashwin Paranjape, Michele Bevilacqua, Fabio Petroni en Percy Liang voert twee gerichte experimenten uit: vraagbeantwoording over meerdere documenten via NaturalQuestions-Open (met 10, 20 en 30 opgehaalde documenten) en synthetische sleutel-waarde-retrieval (met 75, 140 en 300 paren). In elk experiment variëren ze systematisch waar het relevante document of sleutel-waarde-paar zich binnen de invoercontext bevindt — begin, midden of eind — terwijl de rest gelijk blijft. De bevinding is helder: de prestaties volgen een U-vormige curve met het dieptepunt in het midden van de context, en deze curve verschijnt bij elk getest model.
Kernideeën
- De U-vorm is reëel en consistent. In de QA-setting met 20 documenten waren de prestaties op de eerste positie ongeveer 75%, degradeerden naar ongeveer 55% op positie 10, om vervolgens weer te herstellen naar ongeveer 72% op positie 20 — een gat van ~20 punten tussen de randen en het midden.
- Alle modellen volgen hetzelfde patroon. De geteste modellen variëren van gesloten naar open, van klein naar groot: GPT-3.5-Turbo (4K en 16K), GPT-4, Claude-1.3 (8K and 100K), MPT-30B-Instruct en LongChat-13B. De U-curve dook in elk model op, inclusief modellen die expliciet in de markt werden gezet vanwege hun uitgebreide contextvensters.
- Zelfs Claude-1.3-100K is niet immuun. De variant met een context van 100K gedroeg zich net als de andere. Een groot contextvenster betekent niet dat het model er daadwerkelijk gelijkmatige aandacht aan besteedt.
- De closed-book baseline vormt een ontnuchterende ondergrens. GPT-3.5-Turbo zonder enige documenten beantwoordde 56,1% van de NaturalQuestions correct; met 'oracle'-toegang tot enkel het relevante document steeg dit naar 88,3%. Maar op de slechtste middenposities in de setting met 20 documenten zakten de prestaties onder de closed-book baseline — wat betekent dat het toevoegen van meer context actief schadelijk was.
- Encoder-decoder modellen (Flan-T5-XXL, Flan-UL2) zijn robuuster binnen hun trainingslengte, maar vallen terug wanneer contexten deze overschrijden. Het architecturale verschil is van belang, maar beide degraderen nog steeds op schaal.
- De hoofdoorzaak is causale attention-masking. Elk token kan alleen aandacht besteden aan voorgaande tokens, waardoor posities aan het prille begin meer totale aandachtsgewicht over het model verzamelen dan posities in het midden. Recency-effecten trekken het einde van de context ook weer omhoog.
Wat blijft overeind — en wat niet
Het experimentele ontwerp is hier bewonderenswaardig zuiver: positie is de enige variabele die wordt gemanipuleerd, de taken zijn standaard benchmarks en de bevinding wordt gerepliceerd over een breed scala aan modelfamilies. Ik heb geen enkel bezwaar tegen het kernresultaat.
Wat ik minder overtuigend vind, is de formulering van de sleutel-waarde-retrievaltaak als een zinvolle proxy voor de realiteit. UUID-naar-UUID-lookups testen of een model een onthouden string kan nazeggen, niet of het iets kan doen dat redeneren vereist. De U-curve verschijnt daar ook, wat de claim over positiebias versterkt, maar het betekent ook dat het artikel twee verschillende fenomenen op één hoop gooit: retrieval-nauwkeurigheid bij exact-match-taken en de kwaliteit van redeneren over relevante fragmenten. Ik zou willen weten of de U-vorm erger of beter wordt wanneer het relevante document meerstaps-inferentie vereist vóór het uiteindelijke antwoord, in plaats van alleen letterlijke reproductie.
Er is ook een hiaat dat de auteurs grotendeels erkennen maar niet dichten: ze testen nooit of instructie-fine-tuning of RLHF de positiegevoeligheid verandert, alleen of een groter contextvenster dat doet. Gezien het feit dat de hoofdoorzaak architecturaal is (causale masking), vermoed ik dat instructie-tuning het niet zal oplossen, maar het artikel bevestigt dit niet.
Waarom dit ertoe doet voor finance AI
Dit artikel biedt de mechanistische verklaring voor een empirisch patroon dat ik voortdurend tegenkom. DocFinQA faalde bij lange SEC-deponeringen. IRCoT en FLARE halen beide meerdere fragmenten op en voegen deze samen voordat ze gaan redeneren. Elke RAG-pipeline die ik in een financiële context heb gezien, dumpt opgehaalde fragmenten sequentieel in de prompt en hoopt dat het model de juiste zal opmerken.
De implicatie voor Beancount-agents is concreet. Als een agent tien grootboekregels ophaalt als context, lopen de regels op posities 3–7 het hoogste risico om te worden genegeerd of omgeven door hallucinaties. Dit is geen retrieval-probleem — het is een presentatieprobleem. Er volgen twee reacties uit dit artikel: plaats de meest diagnostisch relevante regels ofwel vooraan (en achteraan), of voeg ze helemaal niet samen en redeneer over fragmenten één voor één.
De bevinding compliceert ook het narratief rondom long-context LLM's. Elk kwartaal kondigt een nieuw model een groter contextvenster aan. Dit artikel stelt dat een lang venster niet betekent wat u denkt dat het betekent als u de bewijslast er gelijkmatig over verdeelt. Een model met een context van 128K dat de relevante transactie begraaft op positie 60K, is slechter dan een model met een context van 4K dat precies het juiste fragment ophaalt.
Voor de terugschrijfveiligheid zijn de implicaties ongemakkelijk: als het model wordt gevraagd een grootboeksessie samen te vatten en de relevante beleidsregel "boek deze transactie niet" verschijnt in het midden van een lange systeemprompt, kan het model handelen alsof het die regel nooit heeft gelezen.
Wat nu te lezen
- "Found in the Middle: How Language Models Use Long Contexts Better via Plug-and-Play Positional Encoding" (Zhang et al., arXiv:2403.04797) — stelt Multi-scale Positional Encoding (Ms-PoE) voor als een trainingsvrije oplossing via RoPE-schaling; claimt tot 3,8 punten verbetering op Zero-SCROLLS, wat de U-curve direct aanpakt.
- "Never Lost in the Middle: Mastering Long-Context Question Answering with Position-Agnostic Decompositional Training" (arXiv:2311.09198) — kiest de tegenovergestelde aanpak en traint het model om expliciet positie-agnostisch te zijn; de vergelijking met Ms-PoE verduidelijkt of fine-tuning of trucs tijdens de inferentie de betere hefboom zijn.
- "Mitigate Position Bias in Large Language Models via Scaling a Single Dimension" (arXiv:2406.02536) — identificeert de specifieke dimension van positionele verborgen toestanden die verantwoordelijk is voor de bias en schaalt deze zonder hertraining; de meest chirurgische oplossing die tot nu toe is voorgesteld, relevant voor het inzetten van bestaande modellen zonder hertraining.
