Program of Thoughts Prompting (TL)

From Systems analysis Wiki
Jump to navigation Jump to search

Program of Thoughts Prompting (PoT, Ingles: «programa ng mga kaisipan») — ito ay isang paraan ng prompt engineering para sa malalaking language model (LLM), kung saan ang modelo ay bumubuo ng program code bilang mga intermediate na hakbang sa paglutas ng gawain sa halip na tekstuwal na paliwanag[1]. Ang ganitong diskarte ay nagbibigay-daan na paghiwalayin ang lohikal na pangangatuwiran mula sa matematikal na pagkalkula: ang language model ay bumubuo ng plano ng solusyon sa anyo ng isang programa (halimbawa, sa Python), at ang mga kalkulasyon ay isinasagawa ng isang panlabas, deterministikong interpreter ng code.

Ang pamamaraan ay iminungkahi noong 2022 ng isang pangkat ng mga mananaliksik na pinamumunuan ni Wenhu Chen at nakatuon pangunahin sa mga gawaing may numerikal o lohikal na katangian (mga matematikal na problema, mga kalkulasyong pinansyal), kung saan ang mga tradisyonal na pamamaraan ng pangangatuwiran, tulad ng Chain-of-Thought, ay nakakaranas ng mga kahirapan sa katumpakan ng pagkalkula[1].

Mga Paunang Kondisyon at Konsepto

Mga Limitasyon ng Chain-of-Thought

Ang pamamaraang PoT ay isang pagpapaunlad ng ideya ng Chain-of-Thought (CoT) (kadena ng pangangatuwiran), na dating pangunahing diskarte para sa pagpapabuti ng lohikal na hinuha ng LLM[2]. Sa pamamaraang CoT, ang modelo ay bumubuo ng isang sunud-sunod na mga intermediate na hakbang sa natural na wika. Sa kabila ng makabuluhang pagpapabuti ng kalidad ng pangangatuwiran, ang diskarteng ito ay may pundamental na limitasyon: ang modelo ay nagsasagawa ng parehong lohika at mismong mga kalkulasyon sa anyo ng teksto. Ito ay kadalasang humahantong sa hindi tumpak na mga aritmetikang operasyon, mga pagkakamali sa pag-round at iba pang kawalan ng katumpakan, dahil ang mga language model sa kanilang kalikasan ay hindi tumpak na mga calculator.

Pangunahing Ideya ng Program of Thoughts

Ang pangunahing ideya ng PoT ay ang ipagkatiwala ang mga kalkulasyon sa isang panlabas na sistema (interpreter ng code), at hingin lamang sa language model ang pormalisasyon ng plano ng solusyon sa anyo ng isang maipapatakbong programa[1]. Ang modelo ay gumaganap bilang isang «programmer», at hindi bilang isang «calculator».

Ang proseso ng pagtatrabaho ay ganito:

  1. Ang modelo ay tumatanggap ng gawain bilang input (halimbawa, isang tekstuwal na matematikal na problema).
  2. Sa halip na mga tekstuwal na pangangatuwiran, bumubuo ito ng isang script sa programming language (halimbawa, Python), na naglulutas ng gawaing ito.
  3. Ang nabuong code ay ipinaabot sa isang panlabas na interpreter, na nagpapatakbo nito.
  4. Ang resulta ng pagpapatakbo ng code ay ang panghuling sagot.

Kaya, ang mga kumplikado at tumpak na kalkulasyon (mga operasyon sa malalaking numero, pagtawag ng mga espesyalisadong library) ay isinasagawa hindi ng mismong modelo, kundi ng programa, na tinitiyak ang determinismo at mataas na katumpakan[3].

Pagpapatupad at Paggamit ng mga Library

Sa pagpapatupad ng PoT, ang susi ay ang kakayahan ng LLM na bumuo ng tama at epektibong code. Ginamit ng mga may-akda ng diskarte ang modelong OpenAI Codex, na espesyal na sinanay sa mga gawaing programming. Ang diskarteng PoT ay nagbibigay-daan sa modelo na gumamit ng mga panlabas na library, na lubos na nagpapalawak ng klase ng mga gawaing maaaring malutas. Halimbawa, kapag naglulutas ng mga gawain ng simbolikong matematika, maaaring bumuo ang modelo ng code na gumagamit ng library na SymPy para sa analitikal na paglutas ng mga equation, na lumalagpas sa mga kakayahan ng purong language na mga pamamaraan[1].

Ang prompt para sa PoT ay maaaring ibigay sa dalawang mode:

  • Few-shot: Ang prompt ay naglalaman ng ilang halimbawa ng mga pares na «tanong — programa-solusyon».
  • Zero-shot: Ang prompt ay naglalaman lamang ng isang tagubilin na naglalarawan ng gawain, nang walang mga halimbawa.

Kahit sa zero-shot na mode, ang PoT ay nagpapakita ng mataas na kahusayan dahil sa malinaw na istraktura na dapat buuin ng modelo[4].

Mga Resulta at Kahusayan

Angpamamaraang PoT ay nagpakita ng makabuluhang pagpapabuti ng kalidad ng mga solusyon sa mga gawaing nangangailangan ng multi-step na numerikal na pangangatuwiran. Sa orihinal na gawain, ito ay nasubok sa walong set ng mga matematikal at pinansyal na gawain, kabilang ang GSM8K, AQUA, SVAMP, FinQA at iba pa.

  • Pagpapabuti ng katumpakan: Sa lahat ng kaso, nalampasan ng PoT ang base na diskarteng CoT. Sa karaniwan, nakamit ang relatibong pakinabang na ~12% sa bahagi ng mga tamang solusyon.
    • Sa popular na matematikal na set na GSM8K, ang katumpakan ng modelo na may PoT ay umabot sa 71.6%, samantalang sa CoT ito ay 63.1%.
    • Sa mga gawaing pinansyal, ang pakinabang ay mas kapansin-pansin pa: sa dataset na FinQA, ang katumpakan ay tumaas mula 40.4% (CoT) hanggang 64.5% (PoT)[1].
  • Kombinasyon sa Self-Consistency: Ang kahusayan ng PoT ay maaari pang mapabuti kapag pinagsama sa pamamaraang self-consistency (pagkakatugma sa sarili). Sa kasong ito, bumubuo ang modelo ng ilang independyenteng programa-solusyon, at ang panghuling sagot ay pinipili ayon sa «prinsipyo ng karamihan» mula sa mga resulta ng kanilang pagpapatakbo. Sa kombinasyon sa self-consistency, ang PoT ay nagtakda ng bagong state-of-the-art sa oras ng publikasyon para sa lahat ng nasubok na matematikal at pinansyal na benchmark[1].

Mga Kalamangan at Limitasyon

Mga Kalamangan

  • Katumpakan ng mga kalkulasyon: Ang pangunahing kalamangan. Ang pagpapatakbo ng mga aritmetikang operasyon ng panlabas na interpreter ay inaaalis ang mga pagkakamali sa pag-round at mga kawalan ng katumpakan na likas sa LLM.
  • Posibilidad ng paggamit ng mga library: Maaaring gumamit ang modelo ng mga makapangyarihang panlabas na library (halimbawa, para sa simbolikong pagkalkula, estadistikal na pagsusuri, pagtatrabaho sa mga petsa), na naglulutas ng mga gawaing hindi dati posible.
  • Interpretability at pag-debug: Ang program code ay isang pormal at nakaayos na representasyon ng lohika ng solusyon, na nagpapadali ng pag-verify at pag-debug nito kumpara sa mga pangangatuwiran sa natural na wika.
  • Unibersalidad: Ang diskarte ay epektibo sa parehong few-shot at zero-shot na mga mode at naaangkop sa iba't ibang larangan (matematika, pananalapi, agham).

Mga Limitasyon

  • Seguridad: Ang pagpapatakbo ng nabuong code sa isang panlabas na interpreter ay lumilikha ng mga panganib sa seguridad. Ang modelo ay maaaring theoretically bumuo ng mapanganib na code (halimbawa, para sa pagtanggal ng mga file). Samakatuwid, ang praktikal na paggamit ng PoT ay nangangailangan ng paghihiwalay ng kapaligiran ng pagpapatakbo (sandbox) at maingat na pag-filter ng code[4].
  • Limitadong saklaw ng pagiging angkop: Ang pamamaraan ay pinaka-epektibo para sa mga gawaing maaaring malinaw na ma-pormalisado sa anyo ng isang algorithm. Para sa mga gawaing nangangailangan ng pag-unawa sa mga nuances ng wika, common sense o malikhain na diskarte, ang direktang paggamit ng PoT ay mahirap.
  • Pag-asa sa kalidad ng code: Ang kahusayan ng pamamaraan ay direktang nakasalalay sa kakayahan ng LLM na bumuo ng syntactically tama at lohikal na wastong code.

Mga Kaugnay na Diskarte

Ang ideya ng paggamit ng code para sa pagpapabuti ng pangangatuwiran ng LLM ay nabuo rin sa iba pang katulad na mga diskarte.

  • Program-Aided Language Models (PAL): Isang pamamaraan na iminungkahi nang halos sabay-sabay sa PoT, na gumagamit din ng pagbuo ng Python code para sa paglutas ng mga gawain[5]. Konseptyuwal, ang PAL at PoT ay napakalapit at nagpapatunay ng kahusayan ng estratehiya ng «pangangatuwiran sa pamamagitan ng code».
  • Tree of Thoughts (ToT): Isang mas kumplikadong pamamaraan na nagmumungkahi ng pagbuo at pag-explore ng isang «puno» ng mga posibleng hakbang sa solusyon, na isang pagpapaunlad ng ideya ng linear na «kadena» ng mga kaisipan. Ang PoT ay maaaring gamitin sa loob ng mga node ng punong ito para sa pag-verify ng mga hypothesis.

Mga Sanggunian

  • Orihinal na siyentipikong artikulo tungkol sa Program of Thoughts Prompting
  • Gabay sa PoT sa portal na Learn Prompting

Panitikan

  • 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.

Mga Tala

  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]