למה Few Shot בכלל עובד?
מודלי שפה לומדים לפתור משימות שבכלל לא לימדנו אותם לפתור
למה Few Shot בכלל עובד?
מאמר: Why Can GPT Learn In-Context? Language Models Secretly Perform Gradient Descent as Meta-Optimizers
מאמר מעניין עלה שלשום לרשת.
המאמר דן בשאלה: איך Few Shot עובד?
איך יכול להיות שמודלי שפה מבינים מה אנחנו רוצים על סמך כמה דוגמאות פשוטות. לא לימדנו אותם מפורשות לעשות את זה.
לפני שנתחיל: קצת סדר.
כמו בנושאים אחרים עליהם דיברנו בימים האחרונים: גם הנושא הזה "מגניב" ולכן יש סביבו די הרבה רעש ומידע לא כל כך מדויק.
הטענות הרגילות: מודל גדול <=> AGI..
-
נטען בכל מיני מקומות שFew Shot הוא תופעה שנבעה מעצמה (Emergent) במודלי שפה גדולים כמו GPT-3.
-
קודם כל היא לא הגיעה מהאוויר: היא הגיעה מהדאטהסטים עליהם אומן GPT-3. מפורטת רשימה גדולה של דאטהדסטים במאמר של InstructGPT ואיזה Preprocessing מבוצע לכל אחד מהם כדי להפוך את הדוגמאות בו ל"יותר Few shot learning".
-
אז אמנם אין לנו מידע מדויק על מה GPT-3 התאמן ואילו בדיוק הכנות הדאטה עליו הוא אומן עבר אבל אני מוכן לקחת את הסיכון ולנחש ש: GPT-3 למד לבצע Few-shot מהדאטה. כנראה שלא מהאוויר.
-
גם מודלים קטנים מצליחים לבצע משימות שנכתבות כFew Shot: אתם יכולים לנסות בעצמכם לעבוד עם GPT-J למשל ליצירת רעיונות לחברות סטארטאפ או לתרגם משפטים לאימוג'י (ואפילו בלתכנת הוא לא רע). הוא עובד ואפילו לא רע.
-
יאללה. אני זורם. חייזרים אימנו את GPT-3: גם אם מודלי שפה לומדים לבד איך לפתור משימות Few Shot: זה מסתדר.
למידת Few Shot == למידת מבנה מחזורי בטקסט
טרנספורמרים בכל הגדלים לומדים מצוין בלמידת מבנה-תבניות וחוקים כמו "אם יש משפט שחוזר על עצמו, חזור עליו גם אתה".
גם לחלק גדול מאד מהטקסט האנושי יש מבנה מחזורי. פסקאות המאמרים, רשימות בטבלות..
המודל פשוט לוכד את התופעה הזו בצורה מכלילה ולכן היא נראת "כמו קסם". הוא מציב לתוך התבנית הזו מה שהוא רוצה תוך כדי השיחה ולכן המחזוריות נשמרת אבל המילים עצמן אחרות.
אז למה Few Shot עובד?
במאמר זה החוקרים ניסו להבין מה המודל עושה כשהוא עונה על משימות In Context (בתוך הפרומפט של הטקסט). החידוש במאמר הוא שהחוקרים מפרמלים את In Context Learning בצורה כזו שניתן לחשוב עליו כשקול ללמידת גרדיאנט (האיטרציות הן לאורך עומק המודל). הם מראים שהאטנשן מתנהג זהה גם באימון אמיתי Fine Tuning וגם בIn Context Learning ולטענתם: טרנספורמרים לומדים לבצע אופטימיזציצ מטא-גרדיאנט: הם מריצים "סימולצית אופטימיזציה" הם ממשיכים ומציעים מנגנון אטנשן עם מומנטום (כן מומנטום כמו שאתם מכירים: כדי לעזור ל"אופטימייזר" לייצר גרדינטים טובים). האטנשן החדש משפר ביצועים! (ממש מגניב!)
זווית הסתכלות שונה:
-
כל העניין הזה נותן פרספקטיבה החדשה להבנת הIn Context Learning: ניתן לראות למידה זו כצורה Fine-Tuning שבו GPT משתמש כמטא-אופטימיזר ומייצר מטא-גרדיאנטים באמצעות מעבר בין השכבות השונות.
-
לאחר האופטימיזציה, מטא גרדיאנטים אלו משפיעים על משקולות האטנשן שהן בתורן מבצעות את החישוב "האמיתי" ברשת ומחזירות את התוצאה. גישה זו נתמכת על ידי ניסויים מקיפים על שש משימות סיווג שונות אותם ביצעו החוקרים.
התפוצץ לכם המוח כשChatGPT המציא מכונה וירטואלית?! חדש! GPT שממציא מכונה וירטואלית וגם מסמלת ומריץ אימון מודל שפה גם מטא-גרדיאנטים.
עוד במאמר: החוקרים ממשיכים ובודקים האם In Context Learning ו Fine-Tuning שקולים בכוחם ועל אילו בעיות. אם מעניין אתכם: ממצליץ לקרוא.
למה מודלים ליצור תמונה גרועים בכתיבה?
מאמר: Character-Aware Models Improve Visual Text Rendering
יצאנו בוטים רציניים.. פישלנו קצת בעניין הזה..
במאמר היסטורי מלפני ארבעה ימים מדובר על בעיה שכולנו כנראה כבר ראינו אותה: מודלים ליצירת תמונה לא חזקים מי יודע מה בכתיבת טקסט בתוך התמונה.
הטוקנייזר
כל המודלים המודנים עובדים עם טוקניזרים שאינם ברמת המילים: רוב מודלי השפה הנפוצים כיום עיוורים לאותיות בודדות. הם פשוט לא מודעים לאותיות הבודדות: הם רואים או BytePairs או SentencePiece (או גם כמה אחרים), כך או כך אין להם ידע על אותיות בודדות.
הפתרון לכך הוא כמובן:
פ-ר-מ-ט-ר-י-ם!! אין מה לעשות. כך כולם עשו כל השנה האחרונה. יותר פרמטרים עוזרים למודל להצליח יותר בקלות להסיק איך נראות האותיות בתוך המילים שהמודל מעולם לא שמע על כיומן
להשתמש בטוקנייזר ברמת האותיות
הפתרון המשעמם יותר: פשוט להכניס אל המודל גם אתם הטקסט תו תו. בנוסף. יש לנו כבר מודל שעובד ברמה נמוכה מאד היום:ByT5 שעובד ברמת הבתים הבודדים.
בנצ'מרק פירוק מילים לאותיות
החוקרים משחררים דאטהסט מיוחד של טקסט, תמונה שבתוכה יש טקסט מצויר (כדי שהמודל ילמד לכתוב בתוך התמונה!.).
מי המודלים הפגיעים למצב:
-
החוקרים בדקו כמה מודלים שונים פגיעים לעניין תיקון בטוקנייזר והגיעו למסקנה שהבעיה לא קשורה לזמן: הם גילו שמודלים שעיוורים לתווים, כמו T5 ו-mT5, הפגינו ביצועים משמעותית גרועים באיות, וביצועים רק קצת טובים יותר עבור הגרסאות הגדולות יותר שלהם (ההגדלה לא עזרה) גדול יותר.
-
ומנגד מודלים שיכלו לראות תווים כגון ByT5 הגיעו ללא פחות מ100% דיוק בולידציה בחלק מהמקרים ByT5. (זאת לא חוכמה, הוא לא צריך באמת ללמוד בהרבה מהמקרים)
איך דוחפים את אמבדינגס ברמת אות בודדת עכשיו למודל?
פתרון: הם פשוט שרשרו את האמבדינגס של ByT5 לאמבדיגנס של המודל שהם רצו ללמוד ואז אימנו את הכל End2End.
כן כן: לבעיות מטומטמות ניגשים עם פתרונות מטומטמים.
התוצאות: זה עובד יפה! נראה שזה עוזר מאד למודל! מוזמנים להסתכל במאמר.
עוד במאמר: החוקרים יצרו דאטהסט לבדיקת יכולות מודלים לשחזר אותיות מתוך הדוגמאות.
הדאטהסט מורכב מרצפי קלט:
-
פשוטים
ורצפי פלט:
-
ל א פ ש ו ט י ם (הם פשוט מפרידים את כל האותיות ברווח כי זה מה שיגרום לטוקנייזקר לפרק את הממילה עד סוף.
זה קל מידי, היתי חיב לנסות: מודל עם הטריק הזה כבר על האש ללילה קרוב. תוצאות מחר.
בתמונה: DALL-E 2 כותב במדויק "בננה"
אינטיליגנציה אכן מלאכותית.
"as darns"