Program of Thoughts Prompting (NL)
Program of Thoughts Prompting (PoT, Engels: «programma van gedachten») — een methode van prompt engineering voor grote taalmodellen (LLM), waarbij het model programmacode genereert als tussenliggende stappen bij het oplossen van een taak, in plaats van een tekstuele uitleg[1]. Deze aanpak maakt het mogelijk logisch redeneren te scheiden van wiskundige berekeningen: het taalmodel bouwt een oplossingsplan in de vorm van een programma (bijvoorbeeld in Python), terwijl de berekeningen worden uitgevoerd door een externe, deterministische code-interpreter.
De methode werd in 2022 voorgesteld door een groep onderzoekers onder leiding van Wenhu Chen en is primair gericht op taken van numerieke of logische aard (wiskundige vraagstukken, financiële berekeningen), waarbij traditionele redeneerbenaderingen zoals Chain-of-Thought moeite hadden met de nauwkeurigheid van berekeningen[1].
Achtergrond en concept
Beperkingen van Chain-of-Thought
De PoT-methode is een verdere ontwikkeling van het idee van Chain-of-Thought (CoT) (redeneerketen), dat eerder de belangrijkste aanpak was voor het verbeteren van logische gevolgtrekkingen bij LLM[2]. Bij de CoT-methode genereert het model een reeks tussenliggende stappen in natuurlijke taal. Ondanks de aanzienlijke verbetering van de redenerkwaliteit heeft deze aanpak een fundamentele beperking: het model voert zowel de logica als de berekeningen zelf uit in tekstvorm. Dit leidt vaak tot onnauwkeurige rekenkundige bewerkingen, afrondingsfouten en andere onnauwkeurigheden, omdat taalmodellen van nature geen exacte rekenmachines zijn.
Kernidee van Program of Thoughts
Het kernidee van PoT is om berekeningen te delegeren aan een extern systeem (een code-interpreter), en van het taalmodel alleen te vereisen dat het het oplossingsplan formaliseert in de vorm van een uitvoerbaar programma[1]. Het model fungeert als «programmeur», niet als «berekenaar».
Het werkproces ziet er als volgt uit:
- Het model ontvangt een taak als invoer (bijvoorbeeld een tekstueel wiskundig vraagstuk).
- In plaats van tekstuele redenering genereert het een script in een programmeertaal (bijvoorbeeld Python), dat de taak oplost.
- De gegenereerde code wordt doorgegeven aan een externe interpreter, die deze uitvoert.
- Het resultaat van de code-uitvoering is het definitieve antwoord.
Zo worden complexe en nauwkeurige berekeningen (bewerkingen met grote getallen, aanroepen van gespecialiseerde bibliotheken) niet door het model zelf uitgevoerd, maar door het programma, wat determinisme en hoge nauwkeurigheid garandeert[3].
Implementatie en gebruik van bibliotheken
Bij de implementatie van PoT is het vermogen van de LLM om correcte en efficiënte code te genereren van cruciaal belang. De auteurs van de aanpak gebruikten het model OpenAI Codex, dat speciaal getraind was op programmeertaken. De PoT-aanpak stelt het model in staat externe bibliotheken te benutten, wat de klasse van oplosbare taken aanzienlijk uitbreidt. Bij het oplossen van symbolisch-wiskundige taken kan het model bijvoorbeeld code genereren die de SymPy-bibliotheek gebruikt voor het analytisch oplossen van vergelijkingen, wat buiten de mogelijkheden van puur taalkundige methoden valt[1].
De prompt voor PoT kan in twee modi worden aangeboden:
- Few-shot: De prompt bevat enkele voorbeelden van paren «vraag — oplossende programma».
- Zero-shot: De prompt bevat alleen een instructie die de taak beschrijft, zonder voorbeelden.
Zelfs in de zero-shot-modus toont PoT hoge effectiviteit dankzij de expliciete structuur die het model moet genereren[4].
Resultaten en effectiviteit
De PoT-methode heeft een aanzienlijke verbetering van de oplossingskwaliteit aangetoond bij taken die meerstaps numeriek redeneren vereisen. In het oorspronkelijke onderzoek werd het getest op acht verzamelingen wiskundige en financiële vraagstukken, waaronder GSM8K, AQUA, SVAMP, FinQA en andere.
- Verbeterde nauwkeurigheid: In alle gevallen overtrof PoT de basisaanpak CoT. Gemiddeld werd een relatieve winst van ~12% behaald in het aandeel correcte oplossingen.
- Op de populaire wiskundige dataset GSM8K bereikte de nauwkeurigheid van het model met PoT 71,6%, terwijl dit met CoT 63,1% was.
- Bij financiële vraagstukken was de winst nog groter: op de dataset FinQA steeg de nauwkeurigheid van 40,4% (CoT) naar 64,5% (PoT)[1].
- Combinatie met Self-Consistency: De effectiviteit van PoT kan verder worden verbeterd in combinatie met de methode van zelfconsistentie (self-consistency). In dit geval genereert het model meerdere onafhankelijke oplossende programma's, en het uiteindelijke antwoord wordt gekozen op basis van het «meerderheidsprincipe» uit de resultaten van hun uitvoering. In combinatie met self-consistency vestigde PoT ten tijde van publicatie een nieuwe state-of-the-art voor alle geteste wiskundige en financiële benchmarks[1].
Voordelen en beperkingen
Voordelen
- Nauwkeurigheid van berekeningen: Het grootste voordeel. Het uitvoeren van rekenkundige bewerkingen door een externe interpreter elimineert afrondingsfouten en onnauwkeurigheden die eigen zijn aan LLM.
- Mogelijkheid tot gebruik van bibliotheken: Het model kan krachtige externe bibliotheken inzetten (bijvoorbeeld voor symbolische berekeningen, statistische analyse, datumverwerking) en zo taken oplossen die voorheen onmogelijk waren.
- Interpreteerbaarheid en foutopsporing: Programmacode is een formele en gestructureerde weergave van de oplossingslogica, wat verificatie en foutopsporing vergemakkelijkt in vergelijking met redenering in natuurlijke taal.
- Veelzijdigheid: De aanpak is effectief in zowel de few-shot- als de zero-shot-modus en is toepasbaar in verschillende domeinen (wiskunde, financiën, wetenschap).
Beperkingen
- Veiligheid: Het uitvoeren van gegenereerde code op een externe interpreter brengt veiligheidsrisico's met zich mee. Het model kan theoretisch schadelijke code genereren (bijvoorbeeld voor het verwijderen van bestanden). Praktische toepassing van PoT vereist daarom isolatie van de uitvoeringsomgeving (sandbox) en zorgvuldige filtering van code[4].
- Beperkt toepassingsgebied: De methode is het meest effectief voor taken die duidelijk te formaliseren zijn in de vorm van een algoritme. Voor taken die begrip van taalnuances, gezond verstand of creativiteit vereisen, is directe toepassing van PoT moeilijk.
- Afhankelijkheid van codekwaliteit: De effectiviteit van de methode hangt rechtstreeks af van het vermogen van de LLM om syntactisch correcte en logisch juiste code te genereren.
Verwante benaderingen
Het idee om code te gebruiken voor het verbeteren van redenering bij LLM is ook uitgewerkt in andere vergelijkbare benaderingen.
- Program-Aided Language Models (PAL): Een methode die vrijwel gelijktijdig met PoT werd voorgesteld en die eveneens gebruikmaakt van het genereren van Python-code voor het oplossen van taken[5]. Conceptueel zijn PAL en PoT zeer verwant en bevestigen zij de effectiviteit van de strategie «redeneren via code».
- Tree of Thoughts (ToT): Een complexere methode die voorstelt een «boom» van mogelijke oplossingstappen te genereren en te verkennen, wat een verdere ontwikkeling is van het idee van een lineaire «keten» van gedachten. PoT kan worden toegepast binnen de knooppunten van deze boom voor het toetsen van hypothesen.
Verwijzingen
- Origineel wetenschappelijk artikel over Program of Thoughts Prompting
- Handleiding over PoT op het portaal Learn Prompting
Literatuur
- 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.
Noten
- ↑ 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]