Program of Thoughts Prompting (FA)

From Systems analysis Wiki
Jump to navigation Jump to search

Program of Thoughts Prompting (PoT، به انگلیسی: «برنامه‌ی افکار») — روشی در مهندسی prompt برای مدل‌های زبانی بزرگ (LLM) است که در آن مدل به جای توضیح متنی، کد برنامه‌نویسی را به عنوان گام‌های میانی حل مسئله تولید می‌کند[1]. این رویکرد امکان جداسازی استدلال منطقی از محاسبات ریاضی را فراهم می‌آورد: مدل زبانی طرح حل را به صورت یک برنامه (مثلاً به زبان Python) می‌سازد و محاسبات توسط یک مفسر کد خارجی و قطعی انجام می‌شوند.

این روش در سال ۲۰۲۲ توسط گروهی از پژوهشگران به رهبری وِنهو چِن (Wenhu Chen) پیشنهاد شد و عمدتاً برای مسائل عددی یا منطقی (مسائل ریاضی، محاسبات مالی) طراحی شده است؛ جایی که روش‌های سنتی استدلال مانند Chain-of-Thought در دقت محاسبات با دشواری مواجه بودند[1].

پیش‌زمینه و مفهوم

محدودیت‌های Chain-of-Thought

روش PoT بسط‌یافتهٔ ایدهٔ Chain-of-Thought (CoT) (زنجیرهٔ استدلال) است که پیش‌تر رویکرد اصلی برای بهبود استنتاج منطقی LLMها به شمار می‌رفت[2]. در روش CoT، مدل یک توالی از گام‌های میانی به زبان طبیعی تولید می‌کند. با اینکه این رویکرد کیفیت استدلال را به‌طور چشمگیری بهبود می‌بخشد، یک محدودیت بنیادی دارد: مدل هم منطق و هم محاسبات را در قالب متن انجام می‌دهد. این امر اغلب به عملیات حسابی نادقیق، خطاهای گرد کردن و سایر نادقیقی‌ها منجر می‌شود، زیرا مدل‌های زبانی ذاتاً ماشین‌حساب‌های دقیقی نیستند.

ایدهٔ اصلی Program of Thoughts

ایدهٔ اصلی PoT این است که محاسبات به یک سیستم خارجی (مفسر کد) واگذار شود و از مدل زبانی تنها فرمال‌سازی طرح حل به صورت یک برنامهٔ قابل اجرا خواسته شود[1]. مدل نقش «برنامه‌نویس» را ایفا می‌کند، نه «محاسبه‌گر».

فرآیند کار به شکل زیر است:

  1. مدل یک مسئله (مثلاً یک مسئلهٔ ریاضی متنی) را به عنوان ورودی دریافت می‌کند.
  2. به جای استدلال متنی، یک اسکریپت به زبان برنامه‌نویسی (مثلاً Python) تولید می‌کند که آن مسئله را حل می‌کند.
  3. کد تولیدشده به مفسر خارجی ارسال می‌شود که آن را اجرا می‌کند.
  4. نتیجهٔ اجرای کد، پاسخ نهایی است.

بدین ترتیب، محاسبات پیچیده و دقیق (عملیات روی اعداد بزرگ، فراخوانی کتابخانه‌های تخصصی) نه توسط خود مدل، بلکه توسط برنامه انجام می‌شود که قطعیت و دقت بالایی را تضمین می‌کند[3].

پیاده‌سازی و استفاده از کتابخانه‌ها

در پیاده‌سازی PoT، توانایی LLM در تولید کد صحیح و کارآمد کلیدی است. نویسندگان این رویکرد از مدل OpenAI Codex که به‌طور ویژه برای وظایف برنامه‌نویسی آموزش دیده بود، استفاده کردند. رویکرد PoT به مدل امکان می‌دهد از کتابخانه‌های خارجی بهره ببرد که این امر طیف مسائل قابل حل را به‌طور قابل توجهی گسترش می‌دهد. برای مثال، در حل مسائل ریاضیات نمادین، مدل می‌تواند کدی تولید کند که از کتابخانهٔ SymPy برای حل تحلیلی معادلات استفاده می‌کند، که این از توانایی‌های روش‌های صرفاً زبانی فراتر می‌رود[1].

prompt برای PoT می‌تواند در دو حالت ارائه شود:

  • Few-shot: در prompt چند نمونه از جفت‌های «سؤال — برنامهٔ حل» وجود دارد.
  • Zero-shot: در prompt تنها دستورالعملی که مسئله را توصیف می‌کند بدون هیچ نمونه‌ای آمده است.

حتی در حالت zero-shot، PoT به دلیل ساختار صریحی که مدل باید تولید کند، کارایی بالایی نشان می‌دهد[4].

نتایج و کارایی

روش PoT بهبود قابل توجهی در کیفیت حل مسائل نیازمند استدلال عددی چندمرحله‌ای نشان داد. در کار اصلی، این روش روی هشت مجموعه‌دادهٔ مسائل ریاضی و مالی از جمله GSM8K، AQUA، SVAMP، FinQA و غیره آزمایش شد.

  • افزایش دقت: در تمام موارد، PoT از رویکرد پایهٔ CoT پیشی گرفت. به‌طور میانگین، بهبود نسبی حدود ~۱۲٪ در نسبت پاسخ‌های صحیح حاصل شد.
    • در مجموعهٔ محبوب ریاضی GSM8K، دقت مدل با PoT به ۷۱٫۶٪ رسید، در حالی که با CoT برابر ۶۳٫۱٪ بود.
    • در مسائل مالی، بهبود چشمگیرتر بود: در dataset FinQA دقت از ۴۰٫۴٪ (CoT) به ۶۴٫۵٪ (PoT) افزایش یافت[1].
  • ترکیب با Self-Consistency: کارایی PoT می‌تواند با ترکیب با روش خودسازگاری (self-consistency) بیشتر بهبود یابد. در این حالت مدل چند برنامهٔ حل مستقل تولید می‌کند و پاسخ نهایی بر اساس «اصل اکثریت» از نتایج اجرای آن‌ها انتخاب می‌شود. PoT در ترکیب با self-consistency در زمان انتشار برای تمام benchmark‌های ریاضی و مالی آزمایش‌شده، وضعیت هنر (state-of-the-art) جدیدی برقرار کرد[1].

مزایا و محدودیت‌ها

مزایا

  • دقت محاسبات: مهم‌ترین مزیت. اجرای عملیات حسابی توسط مفسر خارجی، خطاهای گرد کردن و نادقیقی‌های ذاتی LLMها را از بین می‌برد.
  • امکان استفاده از کتابخانه‌ها: مدل می‌تواند از کتابخانه‌های خارجی قدرتمند (مثلاً برای محاسبات نمادین، تحلیل آماری، کار با تاریخ) بهره بگیرد و مسائلی را که پیش‌تر حل‌ناپذیر بودند، حل کند.
  • تفسیرپذیری و اشکال‌زدایی: کد برنامه‌نویسی یک بازنمایی رسمی و ساختاریافته از منطق حل است که بررسی و اشکال‌زدایی آن را در مقایسه با استدلال به زبان طبیعی آسان‌تر می‌کند.
  • همه‌کاره‌بودن: این رویکرد هم در حالت few-shot و هم در حالت zero-shot کارآمد است و در حوزه‌های مختلف (ریاضیات، مالی، علوم) کاربرد دارد.

محدودیت‌ها

  • امنیت: اجرای کد تولیدشده روی مفسر خارجی، خطرات امنیتی ایجاد می‌کند. مدل از نظر تئوری می‌تواند کد مخربی (مثلاً برای حذف فایل‌ها) تولید کند. بنابراین کاربرد عملی PoT نیازمند جداسازی محیط اجرا (sandbox) و فیلتر دقیق کد است[4].
  • محدودیت حوزهٔ کاربرد: این روش برای مسائلی که می‌توان آن‌ها را به‌صورت الگوریتم فرمال‌سازی کرد، مؤثرترین است. برای مسائل نیازمند درک ظرافت‌های زبانی، عقل سلیم یا رویکرد خلاقانه، کاربرد مستقیم PoT دشوار است.
  • وابستگی به کیفیت کد: کارایی این روش مستقیماً به توانایی LLM در تولید کد از نظر نحوی صحیح و از نظر منطقی درست بستگی دارد.

رویکردهای مرتبط

ایدهٔ استفاده از کد برای بهبود استدلال LLMها در سایر رویکردهای مشابه نیز توسعه یافته است.

  • Program-Aided Language Models (PAL): روشی که تقریباً همزمان با PoT پیشنهاد شد و نیز از تولید کد Python برای حل مسائل استفاده می‌کند[5]. از نظر مفهومی، PAL و PoT بسیار به هم نزدیک‌اند و هر دو اثربخشی راهبرد «استدلال از طریق کد» را تأیید می‌کنند.
  • Tree of Thoughts (ToT): روشی پیشرفته‌تر که پیشنهاد می‌کند «درختی» از گام‌های ممکن حل ایجاد و کاوش شود، که بسط ایدهٔ «زنجیرهٔ» خطی افکار است. PoT می‌تواند در گره‌های این درخت برای آزمون فرضیه‌ها به کار رود.

پیوندها

  • مقالهٔ علمی اصلی دربارهٔ Program of Thoughts Prompting
  • راهنمای PoT در پورتال Learn Prompting

منابع

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

یادداشت‌ها

  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. [۱]
  2. Wei, J. et al. «Chain-of-Thought Prompting Elicits Reasoning in Large Language Models». arXiv:2201.11903, 2022. [۲]
  3. «Program of Thoughts: Everything You Need to Know». The Ministry of AI. [۳]
  4. 4.0 4.1 «Program of Thoughts Prompting: Enhancing Accuracy in Reasoning and Computation». Learn Prompting. [۴]
  5. «PAL (Program-Aided Language Models)». Prompt Engineering Guide. [۵]