Program of Thoughts Prompting — توجيه برنامج الأفكار

From Systems analysis wiki
Jump to navigation Jump to search

Program of Thoughts Prompting (PoT, وتعني بالإنجليزية "برنامج الأفكار") — هو أسلوب في هندسة الموجهات لـنماذج اللغة الكبيرة (LLM)، حيث يقوم النموذج بتوليد شيفرة برمجية كخطوات وسيطة لحل المشكلة بدلاً من تقديم تفسير نصي[1]. يسمح هذا النهج بفصل الاستدلال المنطقي عن الحسابات الرياضية: إذ يقوم نموذج اللغة ببناء خطة الحل على شكل برنامج (على سبيل المثال، بلغة Python)، بينما تُنفّذ الحسابات بواسطة مفسّر شيفرة خارجي وحتمي.

تم اقتراح هذا الأسلوب في عام 2022 من قبل مجموعة من الباحثين بقيادة وينهو تشين (Wenhu Chen)، وهو يستهدف بشكل أساسي المهام ذات الطابع العددي أو المنطقي (مثل المسائل الرياضية والحسابات المالية)، حيث واجهت أساليب الاستدلال التقليدية مثل "سلسلة الأفكار" (Chain-of-Thought) صعوبات في دقة الحسابات[1].

الخلفية والمفهوم

قيود سلسلة الأفكار (Chain-of-Thought)

يُعد أسلوب PoT تطويراً لفكرة سلسلة الأفكار (Chain-of-Thought أو CoT)، التي كانت النهج الرئيسي سابقاً لتحسين الاستدلال المنطقي في نماذج اللغة الكبيرة[2]. في أسلوب CoT، يقوم النموذج بتوليد سلسلة من الخطوات الوسيطة باللغة الطبيعية. على الرغم من التحسن الكبير في جودة الاستدلال، فإن لهذا النهج قيداً جوهرياً: يقوم النموذج بتنفيذ كل من المنطق والحسابات الفعلية في شكل نصي. وهذا يؤدي غالباً إلى عمليات حسابية غير دقيقة، وأخطاء في التقريب، وغيرها من الأخطاء، لأن نماذج اللغة بطبيعتها ليست آلات حاسبة دقيقة.

الفكرة الأساسية لبرنامج الأفكار

تكمن الفكرة الرئيسية لأسلوب PoT في تفويض الحسابات إلى نظام خارجي (مفسّر شيفرة)، بينما يُطلب من نموذج اللغة فقط صياغة خطة الحل في شكل برنامج قابل للتنفيذ[1]. يعمل النموذج هنا بدور "المبرمج" وليس "الحاسب".

تبدو عملية العمل كما يلي:

  1. يتلقى النموذج المسألة كمدخل (على سبيل المثال، مسألة رياضية نصية).
  2. بدلاً من الاستدلال النصي، يقوم بتوليد نص برمجي (سكريبت) بلغة برمجة (مثل Python) لحل هذه المسألة.
  3. يتم تمرير الشيفرة المولّدة إلى مفسّر خارجي يقوم بتنفيذها.
  4. تكون نتيجة تنفيذ الشيفرة هي الإجابة النهائية.

بهذه الطريقة، لا يتم تنفيذ الحسابات المعقدة والدقيقة (مثل العمليات على الأعداد الكبيرة واستدعاء المكتبات المتخصصة) بواسطة النموذج نفسه، بل بواسطة البرنامج، مما يضمن الحتمية والدقة العالية[3].

التنفيذ واستخدام المكتبات البرمجية

في تنفيذ أسلوب PoT، تعتبر قدرة نموذج اللغة الكبير على توليد شيفرة صحيحة وفعالة أمراً أساسياً. استخدم مبتكرو النهج نموذج OpenAI Codex، وهو نموذج مدرب خصيصاً على مهام البرمجة. يتيح أسلوب PoT للنموذج الاستفادة من المكتبات البرمجية الخارجية، مما يوسع بشكل كبير فئة المشاكل التي يمكن حلها. على سبيل المثال، عند حل مسائل الرياضيات الرمزية، يمكن للنموذج توليد شيفرة تستخدم مكتبة SymPy للحل التحليلي للمعادلات، وهو ما يتجاوز قدرات الأساليب اللغوية البحتة[1].

يمكن تقديم الموجه لأسلوب PoT في وضعين:

  • Few-shot: يحتوي الموجه على عدة أمثلة لأزواج "سؤال - برنامج حل".
  • Zero-shot: يحتوي الموجه على تعليمات تصف المهمة فقط، دون أمثلة.

حتى في وضع zero-shot، يُظهر أسلوب PoT فعالية عالية بفضل البنية الواضحة التي يجب على النموذج توليدها[4].

النتائج والفعالية

أظهر أسلوب PoT تحسناً كبيراً في جودة الحلول للمسائل التي تتطلب استدلالاً عددياً متعدد الخطوات. في الورقة البحثية الأصلية، تم اختباره على ثماني مجموعات من المسائل الرياضية والمالية، بما في ذلك GSM8K، وAQUA، وSVAMP، وFinQA وغيرها.

  • زيادة الدقة: في جميع الحالات، تفوق أسلوب PoT على النهج الأساسي CoT. في المتوسط، تم تحقيق مكسب نسبي يبلغ ~12% في نسبة الإجابات الصحيحة.
    • في مجموعة البيانات الرياضية الشهيرة GSM8K، بلغت دقة النموذج مع PoT 71.6%، بينما كانت مع CoT 63.1%.
    • في المسائل المالية، كان التحسن أكثر أهمية: في مجموعة البيانات FinQA، زادت الدقة من 40.4% (CoT) إلى 64.5% (PoT)[1].
  • الدمج مع التناسق الذاتي (Self-Consistency): يمكن تحسين فعالية PoT بشكل أكبر عند دمجه مع أسلوب التناسق الذاتي (self-consistency). في هذه الحالة، يقوم النموذج بتوليد عدة برامج حل مستقلة، ويتم اختيار الإجابة النهائية بناءً على "مبدأ الأغلبية" من نتائج تنفيذها. بالاقتران مع self-consistency، سجل أسلوب PoT أحدث ما توصل إليه العلم (state-of-the-art) وقت النشر لجميع معايير الأداء الرياضية والمالية التي تم اختبارها[1].

المزايا والقيود

المزايا

  • دقة الحسابات: الميزة الرئيسية. إن تنفيذ العمليات الحسابية بواسطة مفسر خارجي يزيل أخطاء التقريب وعدم الدقة المتأصلة في نماذج اللغة الكبيرة.
  • إمكانية استخدام المكتبات البرمجية: يمكن للنموذج الاستفادة من مكتبات خارجية قوية (على سبيل المثال، للحسابات الرمزية، والتحليل الإحصائي، والتعامل مع التواريخ)، مما يسمح بحل مشاكل لم تكن متاحة من قبل.
  • القابلية للتفسير والتصحيح: تمثل الشيفرة البرمجية تمثيلاً رسمياً ومنظماً لمنطق الحل، مما يسهل التحقق منه وتصحيحه مقارنة بالاستدلال باللغة الطبيعية.
  • الشمولية: النهج فعال في وضعي few-shot و zero-shot على حد سواء، وهو قابل للتطبيق في مجالات مختلفة (الرياضيات، التمويل، العلوم).

القيود

  • الأمان: إن تنفيذ الشيفرة المولّدة على مفسر خارجي يخلق مخاطر أمنية. من الناحية النظرية، يمكن للنموذج توليد شيفرة ضارة (على سبيل المثال، لحذف الملفات). لذلك، يتطلب التطبيق العملي لأسلوب PoT عزل بيئة التنفيذ (sandbox) والقيام بترشيح دقيق للشيفرة[4].
  • محدودية نطاق التطبيق: يكون الأسلوب أكثر فعالية للمشاكل التي يمكن صياغتها بوضوح في شكل خوارزمية. أما بالنسبة للمهام التي تتطلب فهماً لدقائق اللغة، أو الحس السليم، أو نهجاً إبداعياً، فإن التطبيق المباشر لأسلوب PoT يكون صعباً.
  • الاعتماد على جودة الشيفرة: تعتمد فعالية الأسلوب بشكل مباشر على قدرة نموذج اللغة الكبير على توليد شيفرة صحيحة من الناحية النحوية والمنطقية.

الأساليب ذات الصلة

تطورت فكرة استخدام الشيفرة لتحسين استدلال نماذج اللغة الكبيرة في أساليب أخرى مشابهة.

  • Program-Aided Language Models (PAL): أسلوب تم اقتراحه في نفس وقت اقتراح PoT تقريباً، ويستخدم أيضاً توليد شيفرة Python لحل المشكلات[5]. من الناحية المفاهيمية، فإن PAL و PoT متقاربان جداً ويؤكدان على فعالية استراتيجية "الاستدلال عبر الشيفرة".
  • Tree of Thoughts (ToT): أسلوب أكثر تعقيداً يقترح توليد واستكشاف "شجرة" من خطوات الحل الممكنة، وهو تطوير لفكرة "السلسلة" الخطية للأفكار. يمكن استخدام PoT داخل عُقد هذه الشجرة للتحقق من الفرضيات.

روابط خارجية

المراجع

  • 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. [٥]