Program of Thoughts Prompting (HU)

From Systems analysis wiki
Jump to navigation Jump to search

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:

  1. A modell bemenetként megkapja a feladatot (például egy szöveges matematikai feladatot).
  2. Szöveges következtetés helyett egy programozási nyelven (például Pythonban) generál egy szkriptet, amely megoldja a feladatot.
  3. A generált kód átkerül a külső értelmezőhöz, amely végrehajtja azt.
  4. 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. 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]
  2. Wei, J. et al. «Chain-of-Thought Prompting Elicits Reasoning in Large Language Models». arXiv:2201.11903, 2022. [2]
  3. «Program of Thoughts: Everything You Need to Know». The Ministry of AI. [3]
  4. 4.0 4.1 «Program of Thoughts Prompting: Enhancing Accuracy in Reasoning and Computation». Learn Prompting. [4]
  5. «PAL (Program-Aided Language Models)». Prompt Engineering Guide. [5]