Program of Thoughts Prompting (DE)
Program of Thoughts Prompting (PoT, engl. für „Gedankenprogramm“) ist eine Methode des Prompt Engineerings für große Sprachmodelle (LLMs), bei der das Modell Programmcode als Zwischenschritte zur Problemlösung generiert, anstatt einer textuellen Erklärung[1]. Dieser Ansatz ermöglicht es, die logische Schlussfolgerung von den mathematischen Berechnungen zu trennen: Das Sprachmodell erstellt einen Lösungsplan in Form eines Programms (z. B. in Python), während die Berechnungen von einem externen, deterministischen Code-Interpreter ausgeführt werden.
Die Methode wurde 2022 von einer Forschergruppe unter der Leitung von Wenhu Chen vorgeschlagen und zielt hauptsächlich auf Aufgaben numerischer oder logischer Natur ab (mathematische Probleme, Finanzberechnungen), bei denen traditionelle Schlussfolgerungsmethoden wie Chain-of-Thought auf Schwierigkeiten bei der Berechnungsgenauigkeit stießen[1].
Hintergrund und Konzept
Grenzen von Chain-of-Thought
Die PoT-Methode ist eine Weiterentwicklung des Konzepts von Chain-of-Thought (CoT) (Gedankenkette), das zuvor der primäre Ansatz zur Verbesserung der logischen Schlussfolgerungen von LLMs war[2]. Bei der CoT-Methode generiert das Modell eine Abfolge von Zwischenschritten in natürlicher Sprache. Trotz einer deutlichen Verbesserung der Schlussfolgerungsqualität hat dieser Ansatz eine grundlegende Einschränkung: Das Modell führt sowohl die Logik als auch die Berechnungen selbst in Textform durch. Dies führt häufig zu ungenauen arithmetischen Operationen, Rundungsfehlern und anderen Ungenauigkeiten, da Sprachmodelle von Natur aus keine präzisen Taschenrechner sind.
Grundidee von Program of Thoughts
Die Grundidee von PoT besteht darin, die Berechnungen an ein externes System (einen Code-Interpreter) zu delegieren und vom Sprachmodell lediglich die Formalisierung des Lösungsplans in Form eines ausführbaren Programms zu verlangen[1]. Das Modell agiert als „Programmierer“, nicht als „Rechner“.
Der Prozess sieht wie folgt aus:
- Das Modell erhält eine Aufgabe als Eingabe (z. B. ein mathematisches Textproblem).
- Anstelle von textbasierten Überlegungen generiert es ein Skript in einer Programmiersprache (z. B. Python), das diese Aufgabe löst.
- Der generierte Code wird an einen externen Interpreter übergeben, der ihn ausführt.
- Das Ergebnis der Code-Ausführung ist die endgültige Antwort.
Auf diese Weise werden komplexe und präzise Berechnungen (Operationen mit großen Zahlen, Aufruf spezialisierter Bibliotheken) nicht vom Modell selbst, sondern vom Programm ausgeführt, was Determiniertheit und hohe Genauigkeit gewährleistet[3].
Implementierung und Nutzung von Bibliotheken
Bei der Implementierung von PoT ist die Fähigkeit des LLM, korrekten und effizienten Code zu generieren, von entscheidender Bedeutung. Die Autoren des Ansatzes verwendeten das Modell OpenAI Codex, das speziell für Programmieraufgaben trainiert wurde. Der PoT-Ansatz ermöglicht es dem Modell, externe Bibliotheken zu nutzen, was die Klasse der lösbaren Probleme erheblich erweitert. Beispielsweise kann das Modell bei der Lösung von symbolischen Mathematikproblemen Code generieren, der die Bibliothek SymPy zur analytischen Lösung von Gleichungen verwendet, was über die Fähigkeiten rein sprachbasierter Methoden hinausgeht[1].
Der Prompt für PoT kann in zwei Modi bereitgestellt werden:
- Few-shot: Der Prompt enthält mehrere Beispiele von Paaren aus „Frage – Lösungsprogramm“.
- Zero-shot: Der Prompt enthält nur eine Anweisung, die die Aufgabe beschreibt, ohne Beispiele.
Selbst im Zero-Shot-Modus zeigt PoT eine hohe Effektivität dank der expliziten Struktur, die das Modell generieren muss[4].
Ergebnisse und Effektivität
Die PoT-Methode hat eine signifikante Verbesserung der Lösungsqualität bei Aufgaben gezeigt, die mehrstufiges numerisches Denken erfordern. In der ursprünglichen Arbeit wurde sie an acht Datensätzen mit mathematischen und finanziellen Aufgaben getestet, darunter GSM8K, AQUA, SVAMP, FinQA und andere.
- Gesteigerte Genauigkeit: In allen Fällen übertraf PoT den grundlegenden CoT-Ansatz. Im Durchschnitt wurde eine relative Verbesserung von ~12 % bei der Rate der korrekten Lösungen erzielt.
- Auf dem populären mathematischen Datensatz GSM8K erreichte die Genauigkeit des Modells mit PoT 71,6 %, während sie mit CoT bei 63,1 % lag.
- Bei Finanzaufgaben war der Vorteil noch deutlicher: Auf dem FinQA-Datensatz stieg die Genauigkeit von 40,4 % (CoT) auf 64,5 % (PoT)[1].
- Kombination mit Self-Consistency: Die Effektivität von PoT kann durch die Kombination mit der Methode der Selbstkonsistenz (self-consistency) weiter verbessert werden. In diesem Fall generiert das Modell mehrere unabhängige Lösungsprogramme, und die endgültige Antwort wird nach dem „Mehrheitsprinzip“ aus den Ergebnissen ihrer Ausführung ausgewählt. In Kombination mit self-consistency setzte PoT zum Zeitpunkt der Veröffentlichung einen neuen State-of-the-Art für alle getesteten mathematischen und finanziellen Benchmarks[1].
Vorteile und Grenzen
Vorteile
- Berechnungsgenauigkeit: Der Hauptvorteil. Die Ausführung arithmetischer Operationen durch einen externen Interpreter eliminiert Rundungsfehler und Ungenauigkeiten, die LLMs eigen sind.
- Nutzung von Bibliotheken: Das Modell kann leistungsstarke externe Bibliotheken (z. B. für symbolische Berechnungen, statistische Analysen, Datumsoperationen) einbeziehen und so Probleme lösen, die zuvor unzugänglich waren.
- Interpretierbarkeit und Debugging: Der Programmcode ist eine formale und strukturierte Darstellung der Lösungslogik, was seine Überprüfung und das Debugging im Vergleich zu Überlegungen in natürlicher Sprache erleichtert.
- Vielseitigkeit: Der Ansatz ist sowohl im Few-Shot- als auch im Zero-Shot-Modus effektiv und in verschiedenen Bereichen (Mathematik, Finanzen, Wissenschaft) anwendbar.
Grenzen
- Sicherheit: Die Ausführung des generierten Codes in einem externen Interpreter birgt Sicherheitsrisiken. Das Modell könnte theoretisch bösartigen Code generieren (z. B. zum Löschen von Dateien). Daher erfordert die praktische Anwendung von PoT eine isolierte Ausführungsumgebung (Sandbox) und eine sorgfältige Filterung des Codes[4].
- Begrenzter Anwendungsbereich: Die Methode ist am effektivsten für Probleme, die sich klar als Algorithmus formalisieren lassen. Für Aufgaben, die das Verständnis von Sprachnuancen, gesundem Menschenverstand oder Kreativität erfordern, ist die direkte Anwendung von PoT schwierig.
- Abhängigkeit von der Codequalität: Die Effektivität der Methode hängt direkt von der Fähigkeit des LLM ab, syntaktisch korrekten und logisch richtigen Code zu generieren.
Verwandte Ansätze
Die Idee, Code zur Verbesserung der Schlussfolgerungen von LLMs zu verwenden, wurde auch in anderen ähnlichen Ansätzen weiterentwickelt.
- Program-Aided Language Models (PAL): Eine Methode, die fast gleichzeitig mit PoT vorgeschlagen wurde und ebenfalls die Generierung von Python-Code zur Lösung von Aufgaben nutzt[5]. Konzeptionell sind PAL und PoT sehr ähnlich und bestätigen die Wirksamkeit der Strategie „Schlussfolgern durch Code“.
- Tree of Thoughts (ToT): Eine komplexere Methode, die vorschlägt, einen „Baum“ möglicher Lösungsschritte zu generieren und zu erkunden, was eine Weiterentwicklung der Idee einer linearen „Gedankenkette“ darstellt. PoT kann innerhalb der Knoten dieses Baumes zur Überprüfung von Hypothesen eingesetzt werden.
Weblinks
- Originale wissenschaftliche Arbeit über Program of Thoughts Prompting
- Anleitung zu PoT auf dem Portal Learn Prompting
Literatur
- 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.
Einzelnachweise
- ↑ 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]