Program of Thoughts Prompting (HU)
Program of Thoughts Prompting (PoT, angolul: „gondolatok programja") — az LLM-ek prompt engineeringjének egy módszere, amelynek során a modell programkódot generál a feladat megoldásának közbenső lépéseiként, szöveges magyarázat helyett[1]. Ez a megközelítés lehetővé teszi a logikai következtetés és a matematikai számítások szétválasztását: a nyelvi modell a megoldás tervét egy program formájában (például Pythonban) készíti el, míg a számításokat egy külső, determinisztikus kódértelmező hajtja végre.
A módszert 2022-ben Wenhu Chen vezette kutatócsoport javasolta, és elsősorban numerikus vagy logikai jellegű feladatokra (matematikai problémák, pénzügyi számítások) irányul, ahol a hagyományos következtetési módszerek, mint a Chain-of-Thought, nehézségekbe ütköztek a számítási pontosság terén[1].
Előzmények és fogalom
A Chain-of-Thought korlátai
A PoT módszer a Chain-of-Thought (CoT) (gondolatlánc) ötletének továbbfejlesztése, amely korábban az LLM-ek logikai következtetésének javítására szolgáló fő megközelítés volt[2]. A CoT módszerben a modell természetes nyelven generál közbenső lépések sorozatát. A következtetés minőségének jelentős javulása ellenére ennek a megközelítésnek van egy alapvető korlátja: a modell szöveges formában végzi el mind a logikát, mind magát a számítást. Ez gyakran pontatlan aritmetikai műveletekhez, kerekítési hibákhoz és egyéb pontatlanságokhoz vezet, mivel a nyelvi modellek természetüknél fogva nem pontos számológépek.
A Program of Thoughts alapötlete
A PoT alapötlete az, hogy a számításokat egy külső rendszerre (kódértelmezőre) delegálja, a nyelvi modelltől pedig csak azt várja el, hogy a megoldási tervet végrehajtható program formájában formalizálja[1]. A modell „programozóként" és nem „számítógépként" működik.
A működési folyamat a következőképpen néz ki:
- A modell bemenetként megkapja a feladatot (például egy szöveges matematikai feladatot).
- Szöveges következtetés helyett egy programozási nyelven (például Pythonban) generál egy szkriptet, amely megoldja a feladatot.
- A generált kód átkerül a külső értelmezőhöz, amely végrehajtja azt.
- A kód végrehajtásának eredménye a végső válasz.
Így az összetett és pontos számítások (nagy számokkal végzett műveletek, speciális könyvtárak hívása) nem maga a modell, hanem a program végzi el, ami determinisztikusságot és magas pontosságot biztosít[3].
Megvalósítás és könyvtárak használata
A PoT megvalósításában kulcsfontosságú az LLM azon képessége, hogy helyes és hatékony kódot generáljon. A megközelítés szerzői a programozási feladatokra speciálisan betanított OpenAI Codex modellt használták. A PoT megközelítés lehetővé teszi, hogy a modell külső könyvtárakat vegyen igénybe, ami lényegesen kibővíti a megoldható feladatok körét. Például szimbolikus matematikai feladatok megoldásakor a modell olyan kódot generálhat, amely az SymPy könyvtárat használja az egyenletek analitikus megoldásához, ami meghaladja a tisztán nyelvi módszerek lehetőségeit[1].
A PoT-hoz való prompt két módban adható meg:
- Few-shot: A promptban néhány „kérdés – megoldóprogram" pár példa szerepel.
- Zero-shot: A promptban csak a feladatot leíró utasítás szerepel, példák nélkül.
Még zero-shot módban is magas hatékonyságot mutat a PoT, köszönhetően annak az explicit struktúrának, amelyet a modellnek generálnia kell[4].
Eredmények és hatékonyság
A PoT módszer jelentős minőségjavulást mutatott többlépéses numerikus következtetést igénylő feladatokon. Az eredeti munkában nyolc matematikai és pénzügyi feladatgyűjteményen tesztelték, köztük a GSM8K, AQUA, SVAMP, FinQA és egyéb dataset-eken.
- Pontosság növekedése: Minden esetben a PoT felülmúlta az alap CoT megközelítést. Átlagosan ~12%-os relatív nyereséget értek el a helyes megoldások arányában.
- A népszerű GSM8K matematikai dataset-en a PoT-tal rendelkező modell pontossága elérte a 71,6%-ot, míg CoT-tal 63,1% volt.
- Pénzügyi feladatoknál a nyereség még jelentősebb volt: a FinQA dataset-en a pontosság 40,4%-ról (CoT) 64,5%-ra (PoT) nőtt[1].
- Kombináció Self-Consistency-vel: A PoT hatékonysága tovább javítható önkonzisztencia (self-consistency) módszerrel kombinálva. Ebben az esetben a modell több független megoldóprogram-változatot generál, és a végső választ a végrehajtásuk eredményeiből „többségi elv" alapján választják ki. A self-consistency-vel kombinált PoT a közzététel idején új state-of-the-art eredményt ért el az összes tesztelt matematikai és pénzügyi benchmark-on[1].
Előnyök és korlátok
Előnyök
- Számítási pontosság: A fő előny. Az aritmetikai műveletek külső értelmező általi végrehajtása kiküszöböli az LLM-ekre jellemző kerekítési hibákat és pontatlanságokat.
- Könyvtárak használatának lehetősége: A modell hatékony külső könyvtárakat vonhat be (például szimbolikus számításokhoz, statisztikai elemzéshez, dátumkezeléshez), megoldva korábban elérhetetlen feladatokat.
- Értelmezhetőség és hibakeresés: A programkód a megoldás logikájának formális és strukturált reprezentációja, ami megkönnyíti ellenőrzését és hibakeresését a természetes nyelvű következtetésekhez képest.
- Sokoldalúság: A megközelítés few-shot és zero-shot módban egyaránt hatékony, és különböző területeken alkalmazható (matematika, pénzügy, tudomány).
Korlátok
- Biztonság: A generált kód külső értelmezőn való végrehajtása biztonsági kockázatokat jelent. A modell elméletileg rosszindulatú kódot is generálhat (például fájlok törléséhez). Ezért a PoT gyakorlati alkalmazása a végrehajtási környezet izolálását (sandbox) és a kód gondos szűrését igényli[4].
- Korlátozott alkalmazási terület: A módszer leginkább olyan feladatoknál hatékony, amelyek algoritmus formájában egyértelműen formalizálhatók. A nyelvi árnyalatok megértését, józan ész alkalmazását vagy kreatív megközelítést igénylő feladatoknál a PoT közvetlen alkalmazása nehézkes.
- Függőség a kód minőségétől: A módszer hatékonysága közvetlenül függ az LLM azon képességétől, hogy szintaktikailag helyes és logikailag megfelelő kódot generáljon.
Kapcsolódó megközelítések
A kód LLM-ek következtetésének javítására való felhasználásának ötlete más hasonló megközelítésekben is továbbfejlődött.
- Program-Aided Language Models (PAL): A PoT-tal szinte egyidejűleg javasolt módszer, amely szintén Python-kód generálását alkalmazza a feladatok megoldásához[5]. Fogalmilag a PAL és a PoT nagyon közel áll egymáshoz, és mindkettő megerősíti a „következtetés kódon keresztül" stratégia hatékonyságát.
- Tree of Thoughts (ToT): Egy összetettebb módszer, amely a megoldási lépések lehetséges „fájának" generálását és feltárását javasolja, ami a lineáris gondolatlánc ötletének továbbfejlesztése. A PoT felhasználható e fa csomópontjain belül hipotézisek ellenőrzésére.
Hivatkozások
- Az eredeti tudományos cikk a Program of Thoughts Prompting-ról
- PoT útmutató a Learn Prompting portálon
Irodalom
- Chen, W. et al. (2023). Program of Thoughts Prompting: Disentangling Computation from Reasoning for Numerical Reasoning Tasks. arXiv:2211.12588.
- Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
- Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
- Gao, L. et al. (2022). PAL: Program-Aided Language Models. arXiv:2211.10435.
- Cobbe, K. et al. (2021). Training Verifiers to Solve Math Word Problems. arXiv:2110.14168.
- Chen, Z. et al. (2021). FinQA: A Dataset of Numerical Reasoning over Financial Data. arXiv:2109.00122.
- Zhu, F. et al. (2021). TAT-QA: A Question Answering Benchmark on a Hybrid of Tabular and Textual Content in Finance. arXiv:2105.07624.
- Patel, A. et al. (2021). Are NLP Models Really Able to Solve Simple Math Word Problems? (Introducing SVAMP). arXiv:2103.07191.
- Xu, F. et al. (2023). RECOMP: Improving Retrieval-Augmented LMs with Compression and Selective Augmentation. arXiv:2310.04408.
- Mu, J. et al. (2023). Learning to Compress Prompts with Gist Tokens. arXiv:2304.08467.
Jegyzetek
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Chen, W. et al. «Program of Thoughts Prompting: Disentangling Computation from Reasoning for Numerical Reasoning Tasks». arXiv:2211.12588, 2023. [1]
- ↑ Wei, J. et al. «Chain-of-Thought Prompting Elicits Reasoning in Large Language Models». arXiv:2201.11903, 2022. [2]
- ↑ «Program of Thoughts: Everything You Need to Know». The Ministry of AI. [3]
- ↑ 4.0 4.1 «Program of Thoughts Prompting: Enhancing Accuracy in Reasoning and Computation». Learn Prompting. [4]
- ↑ «PAL (Program-Aided Language Models)». Prompt Engineering Guide. [5]