לקט מתמלא של סקירות קצרות של #shorthebrewpapereviews, החל מ- 05.12.23
TeacherLM: Teaching to Fish Rather Than Giving the Fish, Language Modeling Likewise
https://huggingface.co/papers/2310.19019
היום שום מדברים על מודלי שפה ענקיים שהולכים ונהיים משוכללים יותר ויותר. היום אנחנו משתמשים בהם בשביל משימות הדורשות יכולות reasoning משוכללות. לא כל מודל שפה אפילו הגדולים והחזקים יודעים לבצע reasoning המורכב מכמה שלבים בצורה חלקה. גם למידת few shot כלומר כשנותנים למודל שפה מספר מצומצם של שאלות הכוללת reasoning מתוכחם והתשובה לא תמיד מספיק כדי ״לכוונן אותם״ בצורה מספיק טובה.
אוקיי, אז נשמע שאנחנו בכיוון של לכייל מודל שפה על דאטהסט גדול ומגוון המכיל זוגות של שאלות ותשובות מנומקות עליהם מוסברות בשלבים (או בהרחבה). דאטהסטים כאלו לא קיימים בכמות גדולה מספיק ויצירתם דורשת מאמץ גדול ויקר. אז המאמר המסוקר מציע לבנות דאטהסט כזה מדאטהסטים המכילים רק זוגות של שאלות ותשובות. בשביל כך המחברים לקחו הרבה מאוד דאטהסטים מגוונים (כמה מאות אם לא אלפים) וכיילו מודל שפה גדול (הם לקחו את BLOOM) על דאטהסטים אלו.
הם אימנו 3 מודלים נפרדים ממודל שפה הבסיסי הזה. הראשון הוא מיועד ללמידה עקרונית (learning fundamentals), השני למה שנקרא Chain-Of-Thought (COT), השלישי מתמחה בהוצאה טענות שגויות הנפוצות ביותר שעלולות להביא לתשובה לא נכונה בשאלה. אחרי שיש לנו ביד 3 מודלים אלה ניתן לעשות אוגמנטציה של דאטהסטים המכילים שאלות ותשובות בלבד ולהוסיף להם שלבי reasoning וגם הרשימה של הטעיות הנפוצות. אז כרגע ניתן לקחת מודל שפה יחסית קטן, להעשיר את הדאטהסט לכיול שיש לנו ולכייל את מודל השפה הקטן עם הדאטהסט זה. למשימות מאוד מיוחדות ולא שגרתיתות ניתן לכייל את 3 מודלי שפה (המורים) עליהם לשיפור בביצועים.
CAPSFUSION: Rethinking Image-Text Data at Scale
https://huggingface.co/papers/2310.19019
הרבה דובר לאחרונה על איך ניתן לשפר מודלים מולטימודליים (אלו שיודעים לעבוד עם כמה סוגים של דאטה, נגיד שפה ותמונות). רוב מודלים אלו אומנו על שדאטהסטים גדולים מהאינטרנט המכילים תמונות והכותרת שלהם. המודל הראשון המפורסם שאימן מודל כזה היה כמובן CLIP. מכיוון שמודלים אלו מאומנים עם כמות עצומה (עשרות מיליונים של תמונות או יותר) של דאטה בדיקה של איכות הדאטה אינה אפשרית. אז איך ניתן לשפר את איכות ההתאמה בין התמונה לכותרת שלה ללא שימוש בבודקים אנושיים. ניחשתם נכון – ניתן להשתמש ב-ChatGPT. איך עושים זאת? לוקחים מודל שמאומן לתת כותרות לתמונות ויוצרים כותרת לתמונה איתו. לאחר מכן לוקחים את הכותרת המקורית ומבקשים מ- ChatGPT למזג אותן יחד לכותרת אחת עם איזה פרומפט מהונדס היטב. ד״א הפרומפט מכיל הוראה המונעת מ-ChatGPT מיזוג של שתי הכותרות. באמצעות פעולה פשוטה שכזו איכות הכותרת ויישורה לתמונה משתפרת מאוד. בסוף לוקחים את הדאטה עם הכותרות החדשות ומכיילים על זה מודל מולטימודאלי. לפי התותאות במאמר עובד לא רע.
UNLEASHING THE POWER OF PRE-TRAINED LANGUAGE MODELS FOR OFFLINE REINFORCEMENT LEARNING
https://huggingface.co/papers/2310.20587
המאמר הזה משך את עיני כי אני מאוד אוהב שילובים של מודלי שפה (וגם מודלי דיפוזיה) למשימות מהעולם של למידה עם חיזוקים (Reinforcement Learning). המאמר הזה עשה את זה בצורה מאוד אלגנטית כל כך אחרי שרפרפתי בו 5 דקות לא הבנתי חשבתי שזה די בלתי אפשרי. אבל אחרי הקצת צללתי לעומק הבנתי שכדאי לתת לזה צ'אנס ולסקור אותו במדורנו.
אז מה המאמר עשה בעצם? בגדול הם לקחו מודל שפה וכיילו אותו לבצע למשימות של RL. כלומר בהינתן של פעולות ומצבים קודמים המטרה של המודל היא לחזות את הפעולה הבאה. במקרה הזה מדובר באופליין RL כלומר המטרה של המודל היא לחקות כמה שיותר טוב את הפעולות המוצחלות מהדאטהסט (בהינתן הפעולות והמצבים הקודמים). במשימות שנדונו במאמר הפעולות מתוארות מילולית.
כבר מריחים את מודלי השפה מתקרבים? אוקיי, קודם המחברים לקחו מודל שפה מאומן (GPT2) וכיילו אותו על הדאטהסט הנקרא WiKiText. בשלב השני מוסיפים למודל שפה כמה שכבות של MLP ומאמנים אותו על הדאטה של המשימה (נגיד משחק אטארי) ובנוסף מכיילים מודל שפה עם LoRA (זוכרים מה זה?). תוך כדי התהליך הזה מוסיפים איבר רגולריזציה המכיל לוס על הדאטה של WikiText כנראה כדי לגרום למודל לא לשכוח את המיומנויות הקודמות שלו. וזה וזה מקבלים מודל ל-RL כלומר decision transformer עם ביצועים טובים.
Learning From Mistakes Makes LLM Better Reasoner
https://huggingface.co/papers/2310.20689
טוב, שוב בשבת אנחנו במאמר קליל וקצר על מודלי שפה גדולים. מתברר שמודלי שפה בדומה לבני אנוש מסוגלים ללמוד מהטעויות שלהם. כלומר אם אנו נכייל מודל שפה על הדאטה המכיל תיקונים של טעיות חשיבה המודל ילמד יותר טוב. כלומר המאמר לוקח מספר דוגמאות ומבקש ממודל שפה לבנות שרשראות חשיבה (Chain-of-Thought- CoT) עבורן. לאחר מכן ומפעילים על שרשראות חשיבה אלו מודל שפה חזק (כמו GPT4) ומבקשים ממנו לחפש שגיאות. המודל מתבקש לאתר שלבים המכילים שגיאות ולתקן אותם עד הפתרון. המחברים מצאו ש-GPT4 די טוב במשימה הזו והצליח למצוא שלבים בעייתים ברוב שרשראות החשיבה. אז מה שהמחברים עשו הם לקחו דאטהסט של (שאלות, תשובות), הפעילו את GPT4 עליו כדי לבנות שרשרת חשיבה. הם יצרו כמה שרשראות חשיבה לכל שאלה ופלטרו שרשאות על תשובות לא נכונות. לאחר מכן הם כיילו מודל שפה(פחות חזק מ-GPT4) על הדאטה הזה. בשלב הבא הם הפעילו את GPT4 כדי לתקן שגיאות בשרשראות הלא נכונות וכיילו את המודל עליו. כתוצאה מכך הביצועים של המודל במשימה השתפרו. זהו זה – קליל וקצר לשבת.
Smooth Diffusion: Crafting Smooth Latent Spaces in Diffusion Models
https://huggingface.co/papers/2312.04410
בסקירתנו היום נדבר איך אנחנו יכולים ״לסדר״ את המרחב הלטנטי של מודלי דיפוזיה גנרטיביים. המאמר מנסה ״לסדר״ את המרחב הלטנטי של מודלי דיפוזיה. בשביל להבין מה זה המרחב הלטנטי של מודלי דיפוזיה הוא למעשה מרחב של וקטורים גאוסיים סטנדרטים שהמימד שלהם שווה למימד שאנקודר מקודד כל תמונה אליו. למי שכח על מה אני מדבר כאן אזכיר כי מודלי דיפוזיה לטנטיים מייצרים ייצוג לטנטי של תמונה על ידי ניקוי הדרגתי (באיטרציות) של הרעש מוקטור גאוסי סטנדרטי (backward process). לאחר השלמת תהליך מעביר את הווקטור שנוצר דרך רשת הדקודר ליצירת תמונה. המאמר מנסה לגרום לכך ששינוי קטן בוקטור הלטנטי שנוצר על ידי מודל דיפוזיה יוביל לשינוי קטן בתמונה הנוצרת. זה חשוב כי זה נותן לנו אפשרות לשלוט בצורה יותר טובה במה אנחנו מייצרים עם המודל וגם מאפשר לנו ליצור ״מעברים חלקים״ בין התמונות השונות. אז מה הם עשו? בעצם הרעיון שהזזה למרחק d של הוקטור הלטנטי תרגום להזזה שהיא לכל היותר cd בתמונה שנוצרת ממנו כאשר c הוא קבוע (לא תלוי בתמונה). מכיוון שקשה לכפות את זה באופן ישיר במהלך אימון המודל המאמר בחר להשתמש בטכניקה נפוצה של רגולריזציה מעולם הגאנים(GANs). ניתן להראות כי פונקציית לוס האוכפת יעקוביאן (מטריצה נגזרות) ביחס לווקטור לטנטי מוכפל בשינוי בתמונה הנוצרת(J*dx) להיות קבוע משיגה את המטרה המיוחלת. למעשה זה קירוב טיילור מסדר ראשון של התמונה הנוצרת על ידי הזזה של וקטור לטנטי. מעשית מוסיפים איבר לפונקציית לוס הרגילה של מודל דיפוזיה שקונס על אי התאמה J*dx לממוצע המעריכי שלו על פני האיטרציות הקודמות של gradient descent. זה נשמע קצת לא פשוט אבל הנוסחאות במאמר לא מורכבות יותר מדי…
Beyond Human Data: Scaling Self-Training for Problem-Solving with Language Models
https://arxiv.org/abs/2312.06585
היום אנו מדברים על אימון של מודלי שפה. באחת הסקירות האחרונות הסברתי לכם איך מאמנים מודל שפה עם RLHF (למידה עם חיזוקים המשולבת עם משוב אנושי) ולמה זה נחוץ. אזכיר לכם כי צריך להשתמש בטכניקות של RL כדי לאמן מודל בתנועה כלומר לעדכן משקלים של המודל על הדאטה שנוצר אחרי העדכון האחרון של המודל. במונחי RL הדאטה נדגם לפי ה-policy הכי מעודכן (כלומר למידה on-policy). אימון מודלי שפה עם RLHF בצורת on-policy הוא יקר (כל הזמן צריך ליצור דאטה) ולא תמיד יציב ולכן הוצעו מספר שיטות חלופיות פחות כבדות כמו DPO ו-REST. הרעיון ב-REST הוא לא ליצור דאטה חדש בצורה on-policy אלא:
- ליצור דאטהסט באמצעות מודל התחלתי ולשלב אותו עם דאטה המתויג על ידי בני אדם
- לבחור את הדאטה בעלת ערכי פונקציית תגמול גבוהים מעל סף התחלתי
- לאמן את המודל עם הדאטה הזה
- ליצור עוד דאטה עם המודל המעודכן (כל I איטרציות אחרת לדלג על השלב)
- ליצור(לסנן) דאטה עם ערך(תגמול) גדול מסף גדול יותר
- לאמן מודל עם דאטה חדש…
המחברים לקחו את הרעיון הזה ושכללו אותו (מבחינת הביצועים) בהתבסס על הרעיון של (Expectation-Maximization(EM ולייתר שימוש בדאטה הנוצר על ידי בני אדם. הרעיון ב-EM הוא למקסם נראות מירבת של פונקציית הסתברות p ביחס לפרמטרים כאשר הדאטה נדגם מהתפלגות אחרת q. זה מורכב משני שלבים איטרטיביים:
- E: מקרבים את q מבחינת KL Divergence (אופטימיזציה)ֿ
- M: ממקסים את נראות המירבית (עם דאטה הנדגמת עם q) ביחס לפרמטרים.
אז המחברים לקחו את הרעיון הזה והפעילו אותו על RL בצורה הבא:
- ליצור דאטה מהמודל
- עד שהתגמול בסט הולידציה עולה:
- לאמן מודל בסיס (תמיד מאמנים מודל בסיס להבדיל מ-REST) כאשר כל דגימה בדאטהסט ממושקלת עם ערך התגמול. מכיוון שפונקציית התגמול במאמר היא בינארית זה שקול לאי התחשבות בדוגמאות בעלי ערך פונקציית תגמול 0
- חוזרים לשלב 1 מספר איטרציות
WEAK-TO-STRONG GENERALIZATION: ELICITING STRONG CAPABILITIES WITH WEAK SUPERVISION
https://openai.com/research/weak-to-strong-generalization, https://cdn.openai.com/papers/weak-to-strong-generalization.pdf
אוקיי, הסקירה של היום על מחקר מאוד מעניין מבית לא אחר אלא OpenAI. המאמר מנסה לפתח שיטות אימון (כיול) למודלים חזקים עם מודל פיקוח חלש. מה זה בעצם אומר? נניח שיש לנו מודל S בעל יכולות חזקות יותר (נגיד במספר פרמטרים) ממודל חלש יותר W ובנוסף יש לנו דאטהסט לא מתויג שאנחנו רוצים לכייל על מודל S. פיקוח חלש אומר שאנו קודם כל מתייגים את הדאטה עם W ואז מאמנים מודל חזק S עם הדאטהסט המתויג הזה. למה זה בעצם חשוב? המאמר מדבר בעתיד הקרוב יחסית אנו נגיע לאימון של מודלים בעלי יכולות superhuman למשימות שאנו בני אדם לא מסוגלים לבצע באיכות טובה ואז אנחנו בעצם מהווים את המודל החלש W.
השאלה עד כמה אימון מודל בפיקוח חלש עובד גרוע יחסית לכיול של מודל S עם דאטה מתויג נכון (על ידי בני אדם)? מתברר שההפרש בביצועים הוא די גדול למרות שאימון בפיקוח חלש כן מצליח לשפר את הביצועים של המודל החזק.
השאלה בעצם האם יש שיטות שמשיגות ביצועים טובים יותר מאשר אימון בפיקוח חלש? המאמר מציע שתי שתי משפחות של שיטות. השיטה הראשונה היא אימון הדרגתי של המודל החזק. מתחילים ממודל חלש וכל פעם ״מחזקים״ אות בקצת (בכמות הפרמטרים למשל) כאשר המודל מהאיטרציה הקודמת משרת בתור מודל פיקוח חלש. הגישה השנייה (consistency loss)היא לתת פחות לקנוס את המודל החזק על אי התאמה עם המודל החלש כאשר המודל החזק מאוד בטוח בתוצאה שלו.
יש תוצאות מעניינות…