Perdu au milieu : le biais de position dans les LLM et son impact sur l'IA financière
Quand je repense à l'entrée DocFinQA — où les pipelines basés sur la récupération et les LLM à long contexte se sont tous deux effondrés sur des dépôts auprès de la SEC avec des contextes de 123 000 jetons — la question que j'ai laissée en suspens était pourquoi. Cet article de Liu et al. (TACL 2024, arXiv:2307.03172) apporte la réponse mécaniste, et il s'avère que le mode de défaillance est plus simple et plus tenace que ce à quoi je m'attendais.
L'article
"Lost in the Middle: How Language Models Use Long Contexts" par Nelson F. Liu, Kevin Lin, John Hewitt, Ashwin Paranjape, Michele Bevilacqua, Fabio Petroni et Percy Liang présente deux expériences ciblées : une réponse aux questions multi-documents sur NaturalQuestions-Open (avec 10, 20 et 30 documents récupérés) et une récupération synthétique de paires clé-valeur (avec 75, 140 et 300 paires). Dans chaque expérience, ils font varier systématiquement l'emplacement du document pertinent ou de la paire clé-valeur au sein du contexte d'entrée — début, milieu ou fin — tout en maintenant le reste fixe. Le résultat est net : la performance trace une courbe en forme de U avec un creux au milieu du contexte, et cette courbe apparaît dans chaque modèle testé.
Idées clés
- La forme en U est réelle et cohérente. Dans le cadre d'une QA à 20 documents, la performance à la première position était d'environ 75 % et s'est dégradée jusqu'à environ 55 % à la position 10 avant de remonter à environ 72 % à la position 20 — soit un écart de ~20 points entre les extrémités et le centre.
- Tous les modèles suivent le même schéma. Les modèles testés couvrent les types fermés et ouverts, petits et grands : GPT-3.5-Turbo (4K et 16K), GPT-4, Claude-1.3 (8K et 100K), MPT-30B-Instruct et LongChat-13B. La courbe en U est apparue dans chacun d'eux, y compris les modèles explicitement commercialisés pour leurs fenêtres de contexte étendues.
- Même Claude-1.3-100K n'est pas immunisé. La variante au contexte de 100K s'est comportée comme les autres. Une large fenêtre de contexte ne signifie pas que le modèle y prête attention de manière uniforme.
- La base de référence "closed-book" (sans documents) fixe un seuil décevant. GPT-3.5-Turbo sans aucun document a répondu correctement à 56,1 % de NaturalQuestions ; avec un accès "oracle" au seul document pertinent, il a atteint 88,3 %. Mais aux pires positions intermédiaires dans le réglage à 20 documents, la performance est tombée en dessous de la base de référence sans documents — ce qui signifie que l'ajout de contexte était activement nuisible.
- Les modèles encodeur-décodeur (Flan-T5-XXL, Flan-UL2) sont plus robustes dans leur longueur d'entraînement mais régressent lorsque les contextes la dépassent. La différence architecturale compte, mais les deux types se dégradent tout de même à grande échelle.
- La cause profonde est le masquage de l'attention causale. Chaque jeton ne peut prêter attention qu'aux jetons précédents, de sorte que les positions au tout début accumulent un poids d'attention total plus important à travers le modèle que les positions au milieu. Les effets de récence tirent également vers le haut la fin du contexte.
Ce qui tient la route — et ce qui ne tient pas
La conception expérimentale est ici admirablement propre : la position est la seule variable manipulée, les tâches sont des références standard et les résultats se reproduisent sur une large gamme de familles de modèles. Je n'ai aucune objection au résultat central.
Ce que je trouve moins convaincant, c'est la présentation de la tâche de récupération clé-valeur comme un substitut significatif pour une utilisation réelle. Les recherches d'UUID à UUID testent si un modèle peut répéter une chaîne mémorisée, pas s'il peut effectuer un raisonnement. La courbe en U y apparaît également, ce qui renforce l'affirmation du biais de position, mais cela signifie aussi que l'article confond deux phénomènes différents : la précision de la récupération sur des tâches de correspondance exacte et la qualité du raisonnement sur des passages pertinents. J'aimerais savoir si la forme en U s'aggrave ou s'améliore lorsque le document pertinent nécessite une inférence en plusieurs étapes avant la réponse finale, et pas seulement une répétition textuelle.
Il existe également une lacune que les auteurs reconnaissent pour la plupart mais ne comblent pas : ils ne testent jamais si le réglage fin par instructions (instruction fine-tuning) ou le RLHF modifie la sensibilité à la position, seulement si une fenêtre de contexte plus large le fait. Étant donné que la cause profonde est architecturale (masquage causal), je soupçonne que le réglage par instructions ne résoudra pas le problème, mais l'article ne le confirme pas.
Pourquoi cela compte pour l'IA financière
Cet article fournit l'explication mécaniste d'un schéma empirique que je rencontre sans cesse. DocFinQA s'est effondré sur de longs rapports de la SEC. IRCoT et FLARE récupèrent tous deux plusieurs passages et les concatènent avant le raisonnement. Chaque pipeline RAG que j'ai examiné dans un contexte financier déverse les passages récupérés de manière séquentielle dans l'invite (prompt) et espère que le modèle prêtera attention au bon passage.
L'implication pour les agents Beancount est concrète. Si un agent récupère dix écritures comptables comme contexte, les écritures en positions 3 à 7 présentent le risque le plus élevé d'être ignorées ou de faire l'objet d'hallucinations. Ce n'est pas un problème de récupération — c'est un problème de présentation. Deux réponses découlent de cet article : soit placer les écritures les plus pertinentes d'un point de vue diagnostic en premier (et en dernier), soit ne pas concaténer du tout et raisonner sur un seul passage à la fois.
Ce résultat complique également le récit des LLM à long contexte. Chaque trimestre, un nouveau modèle annonce une fenêtre de contexte plus large. Cet article dit qu'une fenêtre longue ne signifie pas ce que vous pensez si vous distribuez uniformément les preuves à l'intérieur. Un modèle au contexte de 128K qui enterre la transaction pertinente à la position 60K est moins efficace qu'un modèle au contexte de 4K qui récupère précisément le bon passage.
Pour la sécurité des écritures (write-back), les implications sont inconfortables : si l'on demande au modèle de résumer une session comptable et que la règle de politique pertinente "ne pas comptabiliser cette transaction" apparaît au milieu d'une longue invite système, le modèle peut agir comme s'il n'avait jamais lu cette règle.
Que lire ensuite
- "Found in the Middle: How Language Models Use Long Contexts Better via Plug-and-Play Positional Encoding" (Zhang et al., arXiv:2403.04797) — propose le codage positionnel multi-échelle (Ms-PoE) comme solution sans réentraînement via la mise à l'échelle RoPE ; revendique une amélioration allant jusqu'à 3,8 points sur Zero-SCROLLS, s'attaquant directement à la courbe en U.
- "Never Lost in the Middle: Mastering Long-Context Question Answering with Position-Agnostic Decompositional Training" (arXiv:2311.09198) — adopte l'approche opposée et entraîne le modèle à être explicitement agnostique à la position ; la comparaison avec Ms-PoE clarifie si le réglage fin ou les astuces au moment de l'inférence sont le meilleur levier.
- "Mitigate Position Bias in Large Language Models via Scaling a Single Dimension" (arXiv:2406.02536) — identifie la dimension spécifique des états cachés positionnels responsable du biais et la met à l'échelle sans réentraînement ; le correctif le plus chirurgical proposé à ce jour, pertinent pour le déploiement de modèles existants sans nouvel entraînement.
