Amit ki lehet számolni, azt ne tanítsd meg
Négy mérési kör egy döntési modell körül: hol segít a tanítás, hol elég néhány sor kód, és mi marad egy jó eredményből az ellenpróba után.
Egy banki tétel: 688 135 forint ment ki a számláról, a megjegyzésben pedig ez áll: „a tétel egy számla bruttó összegének 50%-os részlete”. A nyitott számlák között van egy pontosan 688 135 forintos és egy 1 376 270 forintos is, ugyanattól a partnertől. Melyiket fizettük?
Aki végigolvassa a megjegyzést, a nagyobbat mondja, hiszen a kifizetett összeg annak a fele. A nyelvi modellünk a kisebbet választotta, és 67%-os bizonyosságot adott hozzá. A tétel a saját tesztünkből való, szándékosan nehéz, de a viselkedés nem kivétel: az ilyen, számolást igénylő tételeken, három különböző feladaton, a modell csak az esetek 28–59%-ában találta el a helyes jelöltet.
Október közepe óta négy mérési körben kerestük, mivel lehet ezen segíteni. Arra készültünk, hogy a megoldás valamilyen tanítás lesz, és bevallom, ebben volt egy ki nem mondott feltevés: ha a modell rosszul dönt, akkor jobban kell tanítani. A fenti tételt végül néhány sor kód oldotta meg. A tanításról pedig megtudtunk valamit, amiért érdemes volt végigcsinálni: a legszebb eredményünkről egy percek alatt lefutó ellenpróba mutatta meg, hogy mást mér, mint amit hittünk.
Mit akarunk a géptől?
A DocAI cégek dokumentumait dolgozza fel, és sok feladat ugyanarra a mintára fut. Adott egy eset (banki tétel, hibajegy, költségigény) és néhány lehetőség (nyitott számlák, lehetséges hibaokok, szabálypontok), és ki kell választani a jót. Erre nagy nyelvi modellt használunk: olyan programot, amely hatalmas mennyiségű szövegből megtanulta, hogyan folytatódik egy szöveg, és a kérdésünkre egyetlen betűvel, a választott lehetőség jelével felel. A vizsgált modell a Qwen3.6-35B-A3B, a saját gépünkön fut.
A választás önmagában kevés, kell hozzá egy szám is: mennyire biztos a modell a dolgában. Ha ez a szám egy előre beállított küszöb fölött van, a rendszer emberi ellenőrzés nélkül lezárja az ügyet. Ha alatta, ember nézi meg. Innen két mérőszám következik, és a cikk végig ezekről szól: az ügyek hány százalékát zárja le a gép helyesen (ez a lefedettség), és a lezárások közül mennyi a hibás (ez a hibaarány). A küszöb feljebb tolásával kevesebb lesz a hiba, de több munka marad az embernek.
Jó válasz nem mindig van a listán. Négy helyzetet különböztetünk meg: van megfelelő lehetőség; nincs megfelelő; a döntéshez hiányzik egy adat; vagy a kérés nem is tartozik a feladathoz. Az utóbbi három a modellek gyenge pontja, korábbi cikkeinkben az „egyik sem” válasz körül ugyanebbe futottunk bele.
Két munkamódszert is érdemes tisztázni, mert minden szám rájuk épül. A tesztadat szintetikus: a szövegeket egy másik nyelvi modell (Muse-Glimmer-30B) írta egy részletes terv alapján, ezért minden esetben pontosan tudjuk, mi a helyes válasz, a tervből, nem egy modell véleményéből. A vizsgált modell családja sem írt, sem címkézett adatot. A másik: előre rögzítünk. A kérdést, a sikerfeltételt és az elemző kódot lezárjuk és ellenőrzőösszeggel megjelöljük, mielőtt a teszteredményt megnéznénk. Így utólag nem tudunk olyan mércét választani, amelyen jól nézünk ki.
Egy kis ellenőr a nagy modell mellé
Az ötlet egyszerű. Válaszadás közben a modell belsejében számok milliói változnak: ezek a rejtett állapotok, afféle munkaközi jegyzetek. Ha a modell a saját bizonyosságát rosszul adja meg, talán ezekből a számokból ki lehet olvasni, hogy most éppen téved-e. Erre tanítható egy külön, kicsi modell, amelyet a szakma fejnek hív; itt ellenőrző fejnek fogom nevezni. A nagy modellhez nem nyúlunk, a válaszát nem változtatjuk meg, csak a kis ellenőr tanul.
Az első kör azt kérdezte, működik-e ez általánosan: egy fej, sokféle feladaton tanítva, ismeretlen feladaton mérve. Nem működött. A három kihagyott feladatcsoportból egyiken sem teljesítette az előre rögzített feltételt, ami illett ahhoz, amit az általános adapterről már tudtunk.
A második kör kisebb és konkrétabb volt: néhány száz példa az adott feladatról, és a fej csak azt tanulja, megbízható-e a válasz. Itt jött a meglepetés. A küszöböt külön mintán úgy választottuk, hogy a lezárások legalább 95%-a helyes maradjon. A modell a saját bizonyosságával így egyetlen ügyet sem tudott lezárni, mert nem volt ilyen küszöb. A fejjel, 500 tanítópélda után, három feladat átlagában az ügyek 66,6%-át zárta le helyesen, 2,9%-os hibaaránnyal.
Nulláról kétharmadra. Ez túl jól hangzott ahhoz, hogy elhiggyük.
Az első csavar: a siker nagy része egy szabály volt
Szerencsére már a rögzítéskor előírtuk, hogy a nyereséget szét kell bontani. A bontás ezt mutatta: a modell a feladaton kívül eső kérésekre rendszeresen azt felelte, hogy „egyik sem”, méghozzá nagyon magabiztosan. Mindhárom feladaton mind a 100 ilyen tételre ezt mondta. A mi mércénk szerint ez hiba, mert ilyenkor nem azt kell mondani, hogy nincs jó számla, hanem azt, hogy ez nem számlapárosítási kérdés. A biztos hibák így a rangsor elejére kerültek, ezért nem létezett használható küszöb.
Ha a döntéseket bizonyosság szerint sorba tesszük, jó esetben a hibák kerülnek a sor végére. Ennek a sorrendnek a javulásában a nyereség 72%-át elhozta egyetlen szabály, tanítás nélkül: az „egyik sem” válaszokat tedd hátra. A lezárt ügyek számában ez a szabály kevesebbet ért, de az irány egyértelmű volt. A fej nagy része azt tanulta meg, hogy egyáltalán indokolt-e dönteni.
A harmadik körben ezért adtunk a modellnek szavakat. A promptba, vagyis a modellnek szóló utasításszövegbe bekerült, hogy négyféleképpen válaszolhat: választ egy jelöltet, vagy azt mondja, hogy nincs megfelelő, hogy hiányzik egy adat, vagy hogy a kérés kívül esik a feladaton. Friss teszten, tanítás nélkül, így a modell magában 36,9%-ot zárt le. A fej erre még rátett, 64,8%-ig, de a régi prompt melletti fejnél nem lett jobb.

A fej tehát valódi értéket ad, de ennek jelentős részét egy jól megírt prompt is elhozza, és először azt érdemes megírni. Mindenhol persze ez sem működött: a banki feladaton a modell a hiányzó adatot egyszer sem jelezte, és ott magában semmit sem zárt le.
A tévedés, amiben a modell a legbiztosabb
Eddig a hibák szinte mind abból jöttek, hogy a modell nem ismerte fel: nincs jó válasz. Az igazi próba az, amikor van jó válasz, és mégis a rosszat választja. Ehhez olyan tételeket készítettünk, mint a bevezetőben látott: a helyes válaszhoz egy számítási lépés kell (részfizetés, mértékegység-váltás, nettó és bruttó, deviza), a jelöltek között pedig ott a csali, amely felszínesen stimmel.
Ugyanazt a fejet, ugyanazzal a küszöbbel futtattuk le rajtuk:
| feladat | hibás lezárás a normál teszten | hibás lezárás a csapdatételeken |
|---|---|---|
| banki párosítás | 2,5% | 100% (11 / 11) |
| hibaelhárítás | 1,3% | 27% (16 / 60) |
| költségelszámolás | 3,8% | 81% (122 / 151) |
Az ellenőrző ezt a hibát nem ismerte fel. A modell saját bizonyossága még rosszabbul viselkedett: csalinál magasabb volt, mint amikor helyesen döntött. A banki feladaton a fej a csalit még jobban preferálta, mint a modell. A legvalószínűbb magyarázat, hogy a tanítóadatban a helyes számla összege mindig egyezett a tétellel, így azt tanulta meg, hogy a pontos összeg a jó jel. Részfizetésnél éppen ez visz félre.
Ezután egy egyszerű próba következett: ugyanazok a tételek, a szöveg végén egyetlen sorral, amelyben a hiányzó lépés eredménye áll, kóddal kiszámolva. A helyes válaszok aránya a banki feladaton 29%-ról 100%-ra, a hibaelhárításon 52%-ról 94%-ra, a költségelszámoláson 24%-ról 67%-ra nőtt. Ez feltáró próba volt, a hatás felső becslése, de megmutatta az irányt. Itt nem megértési hiba volt, hanem egy kihagyott számítás.
Néhány sor kód a modell előtt
A negyedik körben ebből előre rögzített eljárás lett, amelyet láncnak hívunk. Az ötlete, hogy a modell ne számoljon, csak idézzen és döntsön, közöttük pedig minden mást kód végezzen.

A modell először csak a tétel szövegét kapja meg, a jelölteket nem. Kigyűjti belőle az adatokat, és mindegyikhez szó szerint idézi a forrást. Ez a kinyerés. A kód megnézi, hogy az idézet tényleg ott van-e a szövegben, és kiolvasható-e belőle az érték; ami nem megy át, az elvész. Ezután a kód számol: részletből teljes összeget, mértékegységet vált, nettósít, átvált. Végül minden jelöltet összevet az eredménnyel, és csak azt zárja ki, ami bizonyítottan ellentmond. Ha a közleményben pontosan egy jelölt számlaszáma áll, és minden más is egyezik, a kód maga köti a számlát: ez a lánc egyetlen önálló döntése. A többi a modellhez megy, a kiszámolt értékekkel együtt.
A lánc legfontosabb tulajdonsága, hogy csak azt állítja, amit bizonyítani tud. Hiányzó adatból nem következtet, és ha valami nem stimmel, az információt eldobja, nem talál ki helyette mást.

Előre rögzített mérésben a csapdatételeken a helyes válaszok aránya 28–59%-ról 97,5–98,9%-ra nőtt. A kód egyszer sem húzta ki a jó választ, és nem kötött rossz számlát. A modell kinyerése alig rontott a helyzeten: hibátlan adatokkal az eredmény csak 0,5–1,1 ponttal lett volna jobb.
Egy feltétel viszont nem teljesült. Hamis átengedésnek hívjuk, ha a kinyerés hibája miatt a lánc mást ad tovább, mint hibátlan adatokkal adna, és a tétel mégsem kerül emberhez. A célunk legfeljebb 2% volt, a hibaelhárításon 3,3% lett. Tételesen megnéztük az eseteket. A modell kinyerés közben néha magától átváltott (1,2 kOhm helyett 1200-at írt, és az 1200 nincs a szövegben), máskor ékezet nélkül idézett, amit a szigorú összevetés hibának vett. Két apró javítással, külön rögzítéssel és friss tételeken megismételtük a mérést: a helyes válaszok aránya 98,6–100%, a hamis átengedés 0, 0 és 0,5% lett.
A lánc nem csodaszer. Egy természetes összetételű teszten, ahol csapdatétel alig van, önmagában nem növelte a lefedettséget. A banki feladaton 363 tételt kötött 1000-ből, hiba nélkül, a másik kettőn nincs mit kötnie. A haszna a nehéz tételeken és a biztonságban van.
A jó eredmény, amely nem állta ki az ellenpróbát
Marad az a hiba, amelyet nem lehet kiszámolni: amikor a szövegből el sem dönthető a kérdés. Ez a fej eredeti ígérete, hiszen itt a kód nem tud segíteni. Előre rögzített tesztet készítettünk rá: minden esetnek két változata van, az egyikben benne van a döntő mondat, a másikban nincs, ott a helyes válasz az, hogy hiányzik egy adat. Megkülönbözteti-e a fej a kettőt?
A mérőszám az AUROC: ha véletlenszerűen veszünk egy dönthető és egy eldönthetetlen tételt, mekkora eséllyel adja a dönthetőnek a jobb pontot. A 0,5 pénzfeldobás, az 1,0 tökéletes szétválasztás.
Az eredmény tiszta volt. A modell saját bizonyossága 0,738, a fejé 0,924, a különbség +0,186, a bizonytalansági sáv jóval a nulla fölött. A protokoll szerint ez „javít érdemben”. Egy másik előre rögzített kérdésben, a rossz választás felismerésében nem volt kimutatható előny, de erre a kérdésre úgy tűnt, megvan a válasz.
Ekkor lefuttattunk egy ellenpróbát, amelyet előbb kellett volna. Olyan egyszerű programot tanítottunk ugyanerre, amely a szöveg szavait és betűit számolja, és semmit nem ért belőle (a szakmában ez a TF-IDF-osztályozó). A válasz percek alatt megvolt: 1,000. A szószámláló tökéletesen szétválasztotta a kettőt, jobban, mint a fej.
A hiba a tesztben volt. Az eldönthetetlen változat egyszerűen az a szöveg volt, amelyből hiányzott a döntő mondat, tehát rövidebb és tőmondatosabb, mint a másik. Ehhez nem kell megérteni, hogy dönthető-e a kérdés, elég észrevenni, hogy van-e benne még egy mondat. A rögzített szám helyes maradt, csak mást mért, mint amit hittünk.
Két újabb, külön rögzített ellenpróba következett, a fejeket már nem tanítottuk újra. Az elsőben az eldönthetetlen változat is kapott egy nem döntő mondatot, így a hossz rendben volt, de a téma még elárulta: a szószámláló 0,998, a fej előnye 0,144. A protokoll előre kimondta, hogy ez így nem bizonyíték. A másodikban minimális párokat írtunk. Mindkét szövegben ugyanazok a szavak és ugyanaz a szerkezet, mindkettőben ott a döntő jellegű mondat, csak az egyikben a kért összegről szól, a másikban egy korábbi, másik kérelemről. A szószámláló itt 0,699-re esett, a fej előnye +0,075 lett.

A rögzített olvasat szerint a fejről szóló állítás áll, de szűkített formában: ezen a feladattípuson, ezen a konstrukción, ezekkel a fejekkel. Az előny valódi, és körülbelül a harmadára-felére csökkent. A gyakorlatban viszont nem használható: a küszöb fölött a fej az eldönthetetlen tételek 77,7%-át lezárná, a modell saját bizonyossága 37,9%-ot. Jobban rangsorol, de több rossz lezárást enged át. Termékhasznot ebből nem állítunk.
Mi marad valódi banki tételeken?
Eddig minden szám szintetikus volt. Kipróbáltuk a láncot egy hozzájáruló cég 262 valódi banki tételén is, 2026 júniusától szeptemberig, kizárólag értékelésre: a tételek nem hagyták el a saját gépeinket, ide csak összesített szám kerül. Mind a 262-t vakon felcímkéztem, ugyanazt láttam, amit a modell. Ezek fejlesztési számok: a minta és a címkék ismertek, a küszöböt is ezen választottuk, ezért optimisták.
Az első tanulság kínos volt. A kinyerés, amely a szintetikus adaton alig hibázott, itt gyengének bizonyult. 93 tételnél állt szó szerint egy jelölt számlaszáma a közleményben, a modell ebből 30-at hozott ki, és a lánc 22 tételt tudott kötni. A valódi közlemények rövidek: a 93-ból 91 nem érte el a 40 karaktert. A megoldás méltó a cikk címéhez: a jelöltek számlaszámát egyszerűen megkerestük a közleményben, modell nélkül. Így 70 kötés lett, hiba nélkül (a 0 / 70 felső határa kb. 5%).
A második tanulság: a 2%-os célt itt a lánc tartja, nem a modell. A modell saját lezárásai közül 56-ból 2 volt hibás, ez 3,6%, és mindkettő olyan tétel, amelyet én sem tudtam eldönteni a látott adatból. A lánc és a modell együtt 126 lezárás 2 hibával, 1,6%. A fej valódi tételeken nem adott többet a modell saját bizonyosságánál (a jó és rossz választások szétválasztásában 0,910, illetve 0,911). És egy őszinte adat: ezen a cégen a meglévő párosító már szinte mindent megold, így a meglévőhöz képest csak 1–3 új lezárás jött. Itt a haszon a biztonság, nem a mennyiség.
Amit ez a mérés nem bizonyít
Minden fő szám szintetikus adaton született, egyetlen generátormodellből. A csapdatételek szándékosan nehezek, és azt mérik, mit tesz a rendszer egy ismert tévedéstípuson, azt nem, hogy ez milyen gyakori az életben. A lánc működéséről ezért csak a szintetikus eredményt állítjuk. A valódi adat egy cég, négy hónap, 262 ismert tétel és egyetlen címkéző: ez irány, nem bizonyíték.
A javító kör a már ismert kinyerési hibákra készült. Ezt a friss minta méri, de két hibafajta megmaradt (800 helyett 80 mOhm, és a „40%” összegként olvasva), és a minták kicsik: az első mérésben egy tétel 0,5–1,1 pontot mozgat. A címkék sem hibátlanok: a véletlen mintás vak ellenőrzésben a banki feladaton 2, a hibaelhárításon 3 hibát találtunk 30-ból. A hibás egységek kimaradtak, de csak az ellenőrzött tételeket néztük át.
A fejről szóló állítás szűk és kicsi. Egy feladattípus, egy konstrukció, egy alapmodell. Azt, hogy más tanítóminta többet hozna-e, nem mértük, tehát nem is állítjuk.
A valódi adatos számokat friss, körülbelül 150 tételes mintán, előre rögzített küszöbbel ellenőrizzük. A kutatás megy tovább: a célunk továbbra is egy olyan döntési modell, amely ismeretlen feladaton is tudja, mikor nem tud dönteni. Addig is, ami kiszámolható, azt nem a modellre bízzuk.
Mind a négy kör előre rögzített protokollal futott (belső számozással 05a: 2026. október 29.; 06: október 31.; 07: november 1.; 08: november 4., a javító kör november 5., a két ellenpróba november 6. és 8.); a szöveges ellenpróba és a számított sorral végzett próba utólagos, feltáró elemzés. Modell: Qwen3.6-35B-A3B, a kinyerés FP8-ban, vLLM 0.30 alatt, temperature 0 mellett, a rejtett állapotok és a pontszámok BF16-ban, NVIDIA GB10-en. Teszt: családonként 1000 tétel természetes összetételben, a csapdatételekből 381, a javító körben 627, a minimális párokból 348 egység, magyarul és angolul. A kiadott intervallumok sabloncsoportos klaszteres bootstrap eredményei 10 000 ismétléssel, 95%-on. A protokoll, a kód és az összesített eredmények a docai-evals repóban vannak.