Stratení v strede: Pozičná zaujatosť v LLM a jej vplyv na finančnú AI
Keď sa obzriem späť na záznam DocFinQA — kde vyhľadávacie kanály a LLM s dlhým kontextom zlyhali pri podaniach na SEC s kontextom 123 000 tokenov — otázka, ktorú som nechal otvorenú, bola prečo. Tento článok od Liu a kol. (TACL 2024, arXiv:2307.03172) poskytuje mechanistickú odpoveď a ukazuje sa, že tento spôsob zlyhania je jednoduchší a tvrdohlavejší, než by som očakával.
Článok
"Lost in the Middle: How Language Models Use Long Contexts" od Nelsona F. Liu, Kevina Lina, Johna Hewitta, Ashwina Paranjapeho, Michela Bevilacqua, Fabia Petroniho a Percyho Lianga realizuje dva cielené experimenty: odpovedanie na otázky na základe viacerých dokumentov nad NaturalQuestions-Open (s 10, 20 a 30 vyhľadanými dokumentmi) a syntetické vyhľadávanie kľúč-hodnota (so 75, 140 a 300 pármi). V každom experimente systematicky menia polohu, kde sa nachádza relevantný dokument alebo pár kľúč-hodnota v rámci vstupného kontextu — začiatok, stred alebo koniec — pričom všetko ostatné zostáva nezmenené. Zistenie je jasné: výkon kopíruje krivku v tvare písmena U s prepadom v strede kontextu a táto krivka sa objavuje pri každom testovanom modeli.
Kľúčové myšlienky
- Tvar písmena U je reálny a konzistentný. V nastavení QA s 20 dokumentmi bol výkon na prvej pozícii približne 75 % a degradoval na približne 55 % na 10. pozícii, kým sa zotavil na približne 72 % na 20. pozícii — čo predstavuje rozdiel ~20 bodov medzi okrajmi a stredom.
- Všetky modely sledujú rovnaký vzorec. Testované modely zahŕňajú uzavreté aj otvorené, malé aj veľké: GPT-3.5-Turbo (4K a 16K), GPT-4, Claude-1.3 (8K and 100K), MPT-30B-Instruct a LongChat-13B. U-krivka sa prejavila u každého z nich, vrátane modelov explicitne propagovaných pre rozšírené kontextové okná.
- Ani Claude-1.3-100K nie je imúnny. Variant so 100K kontextom sa správal rovnako ako ostatné. Dlhé kontextové okno neznamená, že model mu skutočne venuje pozornosť rovnomerne.
- Baseline bez prístupu k dokumentom (closed-book) nastavuje vytriezvejúce dno. GPT-3.5-Turbo bez akýchkoľvek dokumentov odpovedal správne na 56,1 % otázok NaturalQuestions; s prístupom k práve tomu jednému relevantnému dokumentu dosiahol 88,3 %. Ale pri najhorších stredných pozíciách v nastavení s 20 dokumentmi klesol výkon pod closed-book baseline — čo znamená, že pridanie ďalšieho kontextu bolo aktívne škodlivé.
- Modely typu Encoder-decoder (Flan-T5-XXL, Flan-UL2) sú robustnejšie v rámci svojej trénovacej dĺžky, ale pri prekročení kontextu degradujú. Architektonický rozdiel je dôležitý, ale oba typy pri škálovaní stále degradujú.
- Hlavnou príčinou je kauzálne maskovanie pozornosti (causal attention masking). Každý token môže venovať pozornosť iba predchádzajúcim tokenom, takže pozície na úplnom začiatku akumulujú väčšiu celkovú váhu pozornosti v rámci modelu ako pozície v strede. Efekt nedávnosti (recency effect) zasa vyťahuje koniec kontextu nahor.
Čo obstojí — a čo nie
Dizajn experimentu je tu obdivuhodne čistý: pozícia je jediná premenná, s ktorou sa manipuluje, úlohy sú štandardné benchmarky a zistenie sa replikuje naprieč širokou škálou rodín modelov. S kľúčovým výsledkom nemám žiadny spor.
Čo považujem za menej presvedčivé, je rámcovanie úlohy vyhľadávania kľúč-hodnota ako zmysluplného zástupcu pre reálne použitie. Vyhľadávanie UUID-to-UUID testuje, či model dokáže zopakovať zapamätaný reťazec, nie či dokáže urobiť niečo, čo vyžaduje logické uvažovanie. U-krivka sa tam objavuje tiež, čo posilňuje tvrdenie o pozičnej zaujatosti, ale zároveň to znamená, že článok spája dva rôzne javy: presnosť vyhľadávania pri úlohách s presnou zhodou a kvalitu uvažovania nad relevantnými pasážami. Chcel by som vedieť, či sa tvar U zhoršuje alebo zlepšuje, keď relevantný dokument vyžaduje viacstupňovú inferenciu pred finálnou odpoveďou, nielen doslovné zopakovanie.
Existuje tu tiež medzera, ktorú autori väčšinou uznávajú, ale neuzatvárajú: nikdy netestujú, či ladenie pomocou inštrukcií (instruction fine-tuning) alebo RLHF mení citlivosť na pozíciu, iba to, či ju mení väčšie kontextové okno. Vzhľadom na to, že hlavná príčina je architektonická (kauzálne maskovanie), mám podozrenie, že ladenie inštrukcií to nevyrieši, ale článok to nepotvrdzuje.
Prečo je to dôležité pre finančnú AI
Tento článok poskytuje mechanistické vysvetlenie empirického vzorca, na ktorý neustále narážam. DocFinQA zlyhal na dlhých podaniach na SEC. IRCoT aj FLARE vyhľadávajú viaceré pasáže a pred uvažovaním ich spájajú. Každý RAG kanál, ktorý som vo finančnom kontexte videl, sekvenčne nasype vyhľadané pasáže do promptu a dúfa, že model bude venovať pozornosť tej správnej.
Dôsledok pre agentov Beancount je konkrétny. Ak agent vyhľadá desať záznamov v účtovnej knihe ako kontext, záznamy na pozíciách 3 – 7 sú vystavené najvyššiemu riziku, že budú ignorované alebo že okolo nich dôjde k halucináciám. Toto nie je problém vyhľadávania — je to problém prezentácie. Z tohto článku vyplývajú dve reakcie: buď umiestnite diagnosticky najrelevantnejšie záznamy ako prvé (a posledné), alebo ich nespájajte vôbec a uvažujte nad každou pasážou samostatne.
Zistenie tiež komplikuje naratív o LLM s dlhým kontextom. Každý štvrťrok nový model oznámi väčšie kontextové okno. Tento článok hovorí, že dĺžka okna neznamená to, čo si myslíte, ak v ňom dôkazy distribuujete rovnomerne. Model so 128K kontextom, ktorý pochová relevantnú transakciu na pozícii 60K, je horší ako model so 4K kontextom, ktorý vyhľadá presne tú správnu pasáž.
Pre bezpečnosť spätného zápisu sú dôsledky nepríjemné: ak je model požiadaný o zhrnutie účtovnej relácie a relevantné pravidlo politiky „túto transakciu neúčtovať“ sa objaví v strede dlhého systémového promptu, model sa môže správať, akoby toto pravidlo nikdy nečítal.
Čo si prečítať ďalej
- "Found in the Middle: How Language Models Use Long Contexts Better via Plug-and-Play Positional Encoding" (Zhang et al., arXiv:2403.04797) — navrhuje Multi-scale Positional Encoding (Ms-PoE) ako opravu bez nutnosti trénovania cez škálovanie RoPE; uvádza zlepšenie až o 3,8 bodu na Zero-SCROLLS, čím priamo rieši U-krivku.
- "Never Lost in the Middle: Mastering Long-Context Question Answering with Position-Agnostic Decompositional Training" (arXiv:2311.09198) — volí opačný prístup a trénuje model tak, aby bol explicitne agnostický voči pozícii; porovnanie s Ms-PoE objasňuje, či sú lepším nástrojom jemné doladenie alebo triky pri inferencii.
- "Mitigate Position Bias in Large Language Models via Scaling a Single Dimension" (arXiv:2406.02536) — identifikuje konkrétnu dimenziu pozičných skrytých stavov zodpovednú za zaujatosť a škáluje ju bez opätovného trénovania; doteraz najchirurgickejšia navrhovaná oprava, relevantná pre nasadenie existujúcich modelov bez preškoľovania.
