Program of Thoughts Prompting (RO)
Program of Thoughts Prompting (PoT, engl. «program of thoughts») — este o metodă de inginerie a prompt-urilor pentru modele lingvistice mari (LLM), în care modelul generează cod de programare ca pași intermediari de rezolvare a unei sarcini, în loc de explicații textuale[1]. Această abordare permite separarea raționamentului logic de calculele matematice: modelul lingvistic construiește un plan de soluție sub forma unui program (de exemplu, în Python), iar calculele sunt efectuate de un interpretor extern, determinist, de cod.
Metoda a fost propusă în 2022 de un grup de cercetători condus de Wenhu Chen și vizează în primul rând sarcinile de natură numerică sau logică (probleme matematice, calcule financiare), unde metodele tradiționale de raționament, precum Chain-of-Thought, întâmpinau dificultăți în precizia calculelor[1].
Premise și concept
Limitările Chain-of-Thought
Metoda PoT reprezintă o dezvoltare a ideii Chain-of-Thought (CoT) (lanț de raționament), care anterior constituia principala abordare pentru îmbunătățirea inferenței logice a LLM[2]. În metoda CoT, modelul generează o secvență de pași intermediari în limbaj natural. În ciuda îmbunătățirii semnificative a calității raționamentului, această abordare are o limitare fundamentală: modelul efectuează atât logica, cât și calculele propriu-zise în formă textuală. Aceasta conduce frecvent la operații aritmetice inexacte, erori de rotunjire și alte imprecizii, deoarece modelele lingvistice nu sunt prin natura lor calculatoare precise.
Ideea de bază a Program of Thoughts
Ideea de bază a PoT constă în delegarea calculelor către un sistem extern (interpretorul de cod), cerând de la modelul lingvistic doar formalizarea planului de soluție sub forma unui program executabil[1]. Modelul acționează în rolul unui «programator», nu al unui «calculator».
Procesul de funcționare este următorul:
- Modelul primește la intrare o sarcină (de exemplu, o problemă matematică în formă textuală).
- În loc de raționamente textuale, generează un script într-un limbaj de programare (de exemplu, Python), care rezolvă această sarcină.
- Codul generat este transmis unui interpretor extern, care îl execută.
- Rezultatul execuției codului reprezintă răspunsul final.
Astfel, calculele complexe și precise (operații cu numere mari, apeluri la biblioteci specializate) sunt efectuate nu de modelul însuși, ci de program, ceea ce asigură determinism și precizie ridicată[3].
Implementare și utilizarea bibliotecilor
În implementarea PoT, esențială este capacitatea LLM de a genera cod corect și eficient. Autorii abordării au utilizat modelul OpenAI Codex, special antrenat pe sarcini de programare. Abordarea PoT permite modelului să folosească biblioteci externe, ceea ce extinde semnificativ clasa sarcinilor rezolvabile. De exemplu, la rezolvarea problemelor de matematică simbolică, modelul poate genera cod care utilizează biblioteca SymPy pentru rezolvarea analitică a ecuațiilor, depășind astfel limitele metodelor pur lingvistice[1].
Prompt-ul pentru PoT poate fi furnizat în două moduri:
- Few-shot: Prompt-ul conține câteva exemple de perechi «întrebare — program-soluție».
- Zero-shot: Prompt-ul conține doar instrucțiunea care descrie sarcina, fără exemple.
Chiar și în modul zero-shot, PoT demonstrează eficiență ridicată datorită structurii explicite pe care modelul trebuie să o genereze[4].
Rezultate și eficiență
Metoda PoT a demonstrat o îmbunătățire semnificativă a calității soluțiilor pentru sarcinile ce necesită raționament numeric în mai mulți pași. În lucrarea originală, a fost testată pe opt seturi de probleme matematice și financiare, inclusiv GSM8K, AQUA, SVAMP, FinQA ș.a.
- Creșterea preciziei: În toate cazurile, PoT a depășit abordarea de bază CoT. În medie, s-a obținut un câștig relativ de ~12% în ponderea soluțiilor corecte.
- Pe popularul set matematic GSM8K, precizia modelului cu PoT a atins 71,6%, în timp ce cu CoT era de 63,1%.
- În problemele financiare, câștigul a fost și mai semnificativ: pe dataset-ul FinQA, precizia a crescut de la 40,4% (CoT) la 64,5% (PoT)[1].
- Combinarea cu Self-Consistency: Eficiența PoT poate fi îmbunătățită suplimentar prin combinarea cu metoda auto-consistenței (self-consistency). În acest caz, modelul generează mai multe programe-soluție independente, iar răspunsul final este ales prin «principiul majorității» din rezultatele execuției acestora. Combinat cu self-consistency, PoT a stabilit un nou state-of-the-art la momentul publicării pentru toate benchmark-urile matematice și financiare testate[1].
Avantaje și limitări
Avantaje
- Precizia calculelor: Principalul avantaj. Efectuarea operațiilor aritmetice de către un interpretor extern elimină erorile de rotunjire și impreciziile proprii LLM.
- Posibilitatea utilizării bibliotecilor: Modelul poate apela la biblioteci externe puternice (de exemplu, pentru calcul simbolic, analiză statistică, lucru cu date calendaristice), rezolvând sarcini care anterior nu erau accesibile.
- Interpretabilitate și depanare: Codul de programare reprezintă o formalizare structurată și formală a logicii soluției, facilitând verificarea și depanarea acestuia față de raționamentele în limbaj natural.
- Universalitate: Abordarea este eficientă atât în modul few-shot, cât și zero-shot, și se aplică în domenii diverse (matematică, finanțe, știință).
Limitări
- Securitate: Execuția codului generat pe un interpretor extern creează riscuri de securitate. Modelul poate teoretic genera cod malițios (de exemplu, pentru ștergerea fișierelor). De aceea, aplicarea practică a PoT necesită izolarea mediului de execuție (sandbox) și filtrarea atentă a codului[4].
- Domeniu de aplicabilitate limitat: Metoda este cea mai eficientă pentru sarcinile care pot fi formalizate clar sub forma unui algoritm. Pentru sarcinile ce necesită înțelegerea nuanțelor limbajului, bun-simț sau abordare creativă, aplicarea directă a PoT este dificilă.
- Dependența de calitatea codului: Eficiența metodei depinde direct de capacitatea LLM de a genera cod sintactic corect și logic valid.
Abordări înrudite
Ideea utilizării codului pentru îmbunătățirea raționamentului LLM a fost dezvoltată și în alte abordări similare.
- Program-Aided Language Models (PAL): Metodă propusă aproape simultan cu PoT, care utilizează de asemenea generarea de cod Python pentru rezolvarea sarcinilor[5]. Conceptual, PAL și PoT sunt foarte apropiate și confirmă eficiența strategiei «raționament prin cod».
- Tree of Thoughts (ToT): O metodă mai complexă, care propune generarea și explorarea unui «arbore» de pași posibili de soluție, reprezentând o dezvoltare a ideii de «lanț» liniar de gânduri. PoT poate fi utilizat în cadrul nodurilor acestui arbore pentru verificarea ipotezelor.
Referințe
- Articolul științific original despre Program of Thoughts Prompting
- Ghid privind PoT pe portalul Learn Prompting
Bibliografie
- 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.
Note
- ↑ 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]