Direct Preference Optimization (DPO) מאפשר למפתחים לבצע fine-tuning למודלי שפה גדולים ללא צורך באימון מודל תגמול (reward model) נפרד או בהרצת לולאת למידת חיזוק (RL), מה שמפחית משמעותית הן את עלויות המחשוב והן את חוסר היציבות המאפיין לעיתים קרובות תהליכי RL-from-human-feedback מסורתיים.
למה RL-from-Human-Feedback מרגיש כבד
המתכון הסטנדרטי של RL-from-human-feedback (RLHF) מורכב משלושה שלבים. ראשית, מודל בסיס עובר fine-tuning על סט נתונים שנבחר בקפידה. לאחר מכן, מודל תגמול (reward model) לומד לחזות העדפה אנושית בין זוגות של פלטים. לבסוף, אנשי מקצוע מריצים Proximal Policy Optimization (PPO) – אלגוריתם RL קלאסי – כדי לדחוף את המדיניות (policy) לעבר תגמולים גבוהים יותר כפי שנחזו, תוך שמירה על קרבה למודל המקורי.
המבנה בעל שלושת המודלים הזה יושב בזיכרון בו-זמנית ומכריח לולאת RL יקרה שדוגמת (samples) טקסט חדש בכל עדכון. צוותים נתקלים לעיתים קרובות במצב שבו המדיניות לומדת "לרמות" את התגמול (gaming the reward), ומפיקה פלטים שקיבלו ציון גבוה במדד המקביל (proxy) אך חסרים את האיכות המיועדת. התוצאה היא תהליך (pipeline) יקר, שביר וקשה להרחבה (scale).
הקיצור האלגברי של DPO
DPO מדלג על מודל התגמול לחלוטין. התצפית המרכזית היא שלמטרת ה-RLHF – מקסום התגמול הצפוי תוך הטלת עונש על סטייה ממודל ייחוס (reference model) – יש ביטוי סגור (closed-form expression). על ידי סידור מחדש של המתמטיקה, התגמול עבור כל טוקן (token) הופך להפרש בין ההסתברות הלוגריתמית (log-probability) שנקבעה על ידי המדיניות לבין זו שנקבעה על ידי מודל הייחוס.
בפועל, זה אומר שה"תגמול" חי בתוך המדיניות עצמה. האימון מצטמצם לפונקציית הפסד (loss) אחת של סיווג על זוגות העדפה: בהינתן תגובה שנבחרה ותגובה שנדחתה, המודל מקבל דחיפה להקצות הסתברות גבוהה יותר לטקסט שנבחר. ללא דגימה (sampling), ללא עדכוני PPO וללא מודל נוסף לאחסון.
איך נראית פונקציית ההפסד החדשה
פונקציית ההפסד משווה את ההסתברות הלוגריתמית של התשובה המועדפת תחת המדיניות הנוכחית לזו תחת מודל הייחוס, כאשר היא מוכפלת בהיפר-פרמטר $\beta$ הדומה לטמפרטורה. $\beta$ גבוה מכריח את המדיניות להישאר קרובה לייחוס, מה ששומר על שטף (fluency) ובטיחות. $\beta$ נמוך מאפשר למדיניות להתרחק יותר, ובכך מחדד את ההעדפה שלה לתשובה שנבחרה.
יתרונות שחשובים למפתחים
- ללא מודל תגמול – מבטל את הצורך באיסוף משוב אנושי נוסף עבור מנבא (predictor) נפרד.
- ללא דגימה (sampling) במהלך האימון – המודל לעולם אינו מייצר טקסט חדש כדי לחשב גרדיאנטים, מה שמפחית דרמטית את זמן ה-GPU.
- יציבות – פונקציית הפסד סטנדרטית מסוג binary-cross-entropy מחליפה את גרדיאנטים של ה-RL בעלי השונות הגבוהה, שלעיתים קרובות גורמים לחוסר יציבות (divergence).
- יעילות – צעד גרדיאנט בודד על כל זוג העדפה הוא מספיק; האימון מתכנס בהרבה פחות epochs מאשר PPO.
ניסויים מוקדמים מראים ש-DPO משתווה או אף עולה בביצועיו על PPO במאגרי נתונים של העדפות (benchmark preference datasets), תוך שימוש בשבריר מתקציב המחשוב. יתרון עלות זה מסביר מדוע פרויקטים רבים בקוד פתוח כבר אימצו את DPO או וריאציה קרובה אליו כשיטת ה-alignment ברירת המחדל שלהם.
הפשרות (Trade-offs)
DPO עובד על סט קבוע של זוגות העדפה. מכיוון שהוא לעולם אינו דוגם השלמות (completions) חדשות במהלך האימון, הוא אינו יכול לחקור מרחבי תשובות שלא היו קיימים בנתונים המקוריים. לעומת זאת, הרצה של PPO בשיטת online יכולה לגלות התנהגויות חדשות ובעלות תגמול גבוה יותר על ידי בדיקה מתמדת של המודל.
אם $\beta$ מוגדר נמוך מדי או שהאימון נמשך יותר מדי צעדים, המדיניות עלולה להתרחק ממודל הייחוס מספיק כדי לאבד שטף או להכניס ארטיפקטים (artefacts) לא רצויים.
שורה תחתונה
Direct Preference Optimization מחליף את ערימת ה-RLHF הכבדה והמורכבת (המורכבת משלושה מודלים) בפונקציית הפסד אחת ויציבה הלומדת ישירות מזוגות העדפה אנושיים. התוצאה היא נתיב זול וצפוי יותר לכיוונון (aligning) מודלי שפה — בתנאי שנתוני האימון לוכדים את ההתנהגויות הדרושות לכם ושאתם שומרים על פרמטר הסטייה (drift) תחת שליטה.
