close menu

סיכום מאמר: Self-Refine

מודלים שמשפרים את עצמם – משוב עצמי במודלי שפה

בדיונים על הסכנה הקיומית בבינה מלאכותית מתוארת נקודת האל-חזור כרגע בו נוצר "AI שיכול לשפר את עצמו"

היום נעשה בדיוק את זה! ונשפר את GPT-4 ב40%!

———-

סיכום מאמר: Self-Refine

אמ;לק: 1. מודל עונה לשאלה כתובה. | 2. המודל כותב "נקודות לשיפור" בתשובה שכתב קודם. | 3. בהנתן שאלה+תשובה+הסבר לתיקון: המודל עונה תשובה טובה יותר. | 4. חזור ל1.

מאמר זה עוקף את GPT-4 "הרגיל" ב5% – 40% בכל המדדים.

המספר המדויק תלוי מבחן.

בהינתן טקסט כלשהו ומודל ראשוני "מספיק סבבה" – המטרה היא לשפר את המודל בביצוע הוראות כתובת תוך כדי שימוש באותו המודל בלבד.

ללא שימוש במשוב אנושי: המטרה היא לחדד את תשובות המודל למשימות השונות ללא מגע יד אדם.

בכל שלב:

  • המודל עונה תשובה לשאלה.
  • המודל מסביר בעצמו "איך היה אפשר לענות לשאלה יותר טוב? מה צריך לשפר בתשובה?"
  • המודל עונה תשובה חדשה "יותר טובה" מהקודמת.

לאחר מספר חזרות המודל מגיע לתוצאות טובות משמעותית כמעט בכל מדד וכמעט בכל משימה: מסיכום לכתיבת שירים ואפילו תכנות.

מעניין! משוב עצמי נראה כקונספט מבטיח במיוחד…

משוב עצמי במודלי שפה

שיטה זו ממשיכה את קו המחשבה של שתי עבודות מעניינות אחרות המשתמשות במודלים עם משוב עצמי.

הראשונה: FeedME מבית OpenAI

אמ;לק: 1. המודל מקבל משימה כתובה ועונה לה מספר פעמים. | 2. נבחרת התשובה המועדפת בכל צעד על ידי מודל אחר. | 3. אימון רגיל מתבצע על המשימה + תשובה זו.

  • מאמר: Training language models to follow instructions with human feedback
  • לינק: https://arxiv.org/abs/2203.02155
  • מודל: GPT-3 002 (בסלנג: InstructGPT)

לגבי השם: FeedME = Feedback Made Easy

במאמר זה המודל מאומן לבצע הוראות בשפה אנושית צעד אחרי צעד.

בכל צעד, ניתנת למודל משימה כתובה, ואז:

  • המודל מייצר כמה אפשרויות תגובה למשימה.
  • מודל דירוג נפרד (המאומן ממשוב אנושי) מדרג את התגובות לפי "מה שהאנשים כנראה היו אומרים שהם מעדיפים".
  • המודל מאומן על הטקסט המדורג כ"מועדף ביותר" (רגיל לגמרי. בלי RL.)

שיפור שלי לשיטה! הוספת לוס שלילי לטקסטים הגרועים ביותר: למשקל את הטקסטים ביחס לדירוגם, משפר ומאיץ מאוד את האימון.

השניה: Self-Instruct

אמ;לק: יצירה של המשימות עצמן עם מודל

המשך לאותו הרעיון הוא כמובן ליצור את המשימות עצמן באמצעות המודל. במידה ויש לנו דאטהסט מספיק גדול ומגוון ניתן באמצעות Fewshot לייצר משימות רבות מגוונות נוספות עליהן ניתן לאמן את המודל.

במאמר זה הכותבים ממשיכים את אותו קו המחשבה: הם מאמנים מודלים לענות "נכון" – לבצע את ההוראות שניתנו להם.

אבל בנוסף הם גם משתמשים באותם המודלים על מנת לייצר:

  • הרבה הוראות חדשות בנושאים אחרים (עם Fewshot)
  • קלטים שונים לאותן המשימות שנאספו. [דוגמה: משימה: "סכם את הטקסט" | קלט: הטקסט. | לאותה משימה יכולים להיות קלטים שונים].

המשימות עצמן מחולקות לשני סוגים עיקריים:

  • משימות המתחילות ב"קלט נוסף"

דוגמה:

– משימה: האם הטקסט הבא נכתב על ידי אדם שמבין מה טוב בחיים האלה?

– תשובה: כן.

– קלט נוסף: בהתבסס על ניסיון חיי והשכלתי הפורמלית אני מאמין שגלידת בייגלה מלוח ברוטב בייגלה מלוח היא הטעם הטעים ביותר שיש בגולדה.

  • משימות המסתיימות ב"קלט נוסף"

דוגמה:

– משימה: כתוב ציטוט מפורסם מהעבר.

– קלט נוסף: שגם לא נכון.

– תשובה: "אין אפילו אינדיקציה קלה לכך שאי פעם ניתן יהיה להשיג אנרגיה גרעינית." – אלברט איינשטין.

המשימות עצמן מסווגות לאחר שנוצרות על ידי נוסף סיווג קטן נוסף המחליט על סדר הופעת הקלט הנוסף.

שימו לב: סדר הופעת הקלט הנוסף חשוב במיוחד מכיוון שמודלי שפה ליצירת טקסט מסוגלים לייצר טקסט רק לכיוון אחד: קדימה. לכן על מנת לשלוט בהם לצורך יצירת דאטהסט עלינו "להפוך" ולהנדס קצת את הדוגמאות שלנו על מנת שנוכל לקבל שליטה על אופן יצירת הנתונים.

דגש חשוב מאוד מהמאמר: לכל משימה נוצרים כמה סוגי קלט שונים. זאת על מנת לאפשר למודל ללמוד את הדקויות קטנות הגורמות בסוף להבדלים גדולים ו"טמטום של מודלים" – דוגמה: "ענה באופן חיובי" מול "ענה באופן שלילי".

בנוסף: כל משימה חדשה שנוצרת על ידי המודל עוברת מודל נוסף שמטרתו "לסנן" משימות כפולות או משימות שיצאו גרוע.

בכל זאת.. AI וזה.. אבל בסוף מודל "מחרטט" את המשימות האלה.

לסיכום:

לא נכנס לפרטים הקטנים במאמר אבל בשורה אחת: במאמר זה הכותבים משתמשים בכמה מודלים מפורסמים לביצוע הוראות (GPT-3 002, T0, tk-instruct-11b-def), מחלצים מהם עוד הוראות ואז מאמנים אותם על אותן ההוראות (גם את GPT-3 בכמה גרסאות שונות על דאטה מכמה מודלים שונים).

מאמר מעניין מאוד למי שמתעניין בתחום, מכיל הרבה דאטה מהמרבה ניסויים וגם בודק כיצד אימון לביצוע משימות משפיע על מודלים ביצירת "עוד משימות!".

עיקר המאמר פשוט מאוד (אבל גם מוביל למסקנה מעניינת!):

  • לייצר משימות ותשובות באמצעות מודל (Fewshot) על מנת לאמן מודל לבצע הוראות..
  • כלומר: כל מודל כללי שמסוגל לפעול בFewshot יכול להפוך למודל Fine-Tuned באמצעות מסווג נוסף בלבד.

ישנן חשדות בכמה דיונים ברדיט שOpenAI גם הם משתמשים בטכניקות דומות.

הדאטהסט המלא שנאסף במסגרת המחקר: https://github.com/…/batch_221203/all_instances_82K.jsonl

רוצים לנסות בבית?

דאטהסטים בנושא, אוספי משימות ותגובות:

בחזרה למאמר החדש..

האלגוריתם עצמו בנוי מארבעה שלבים עיקריים המופעלים בלולאה:

  • שלב א' – ביצוע משימה כתובה.
  • שלב ב' – המודל בעצמו כותב משוב שמטרתו "להסביר למודל" במה ב-ד-י-ו-ק עליו להשתפר (בשפה כתובה), למשל "התשובה אמנם נכונה אך לא מנוסחת מספיק חיובי כמו שביקשו ממך. המילה "בסדר" יכולה להוחלף ליותר חיובית."
  • שלב ג' – המודל כותב תשובה חדשה "טובה יותר" בהתבסס על השאלה, התשובה, המשוב בשלב הקודם.
  • שלב ד' – חזור לשלב א' כשהמודל רואה את כל ההיסטוריה.

תוצאות: באותן לא מפתיע, המודל משתפר בהכל.

שלב ה' – ארנולד שוורצנגר מחפש את שרה קונור

עוד בנושא: