Program of Thoughts Prompting (HE)

From Systems analysis Wiki
Jump to navigation Jump to search

Program of Thoughts Prompting (PoT, באנגלית: «program of thoughts») — שיטת prompt engineering עבור מודלי שפה גדולים (LLM), שבה המודל מייצר קוד תכנותי כצעדי ביניים לפתרון הבעיה במקום הסבר טקסטואלי[1]. גישה זו מאפשרת להפריד בין ההיגיון הלוגי לבין החישובים המתמטיים: מודל השפה בונה תוכנית פתרון בדמות תוכנית מחשב (לדוגמה, ב-Python), והחישובים מבוצעים על ידי מפרש קוד חיצוני ודטרמיניסטי.

השיטה הוצעה בשנת 2022 על ידי קבוצת חוקרים בראשות 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 הבסיסית. בממוצע הושג רווח יחסי של ~12% בשיעור הפתרונות הנכונים.
    • במערך המתמטי הפופולרי GSM8K הגיע דיוק המודל עם PoT ל-71.6%, בעוד שעם CoT עמד על 63.1%.
    • בבעיות פיננסיות היה הרווח משמעותי עוד יותר: ב-dataset FinQA עלה הדיוק מ-40.4% (CoT) ל-64.5% (PoT)[1].
  • שילוב עם Self-Consistency: יעילות PoT ניתנת לשיפור נוסף בשילוב עם שיטת עקביות עצמית (self-consistency). במקרה זה המודל מייצר מספר תוכניות פתרון עצמאיות, והתשובה הסופית נבחרת על פי «עקרון הרוב» מתוצאות הרצתן. בשילוב עם self-consistency קבעה PoT state-of-the-art חדש במועד הפרסום לכל benchmark המתמטי והפיננסי שנבדק[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. [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]