מה לומדים מודלי שפה? ניסיון פרשנות ליצוג הפנימי של GPT
אמבדינגס -> בלוק אטנשן -> בלוק אטנשן -> … בלוק אטנשן -> אנ-אמבדינגס (Unembeddings).
זה לא לגמרי נכון: GPT לומד "להזיז את המשפט אחורה" והמילה האחרונה במשפט "מגיעה מהעתיד" – לאחר שהמשפט זורם בשכבות המודל, במקום המילה במיקום הi המודל מנסה להציב את המילה במיקום i+1. (התפלגות על המילה במיקום i+1.)
עליו גם מבוצעים כל הניסויים בפוסט זה
-
הטל את הקלט למרחב נסתר בגודל 1600.
-
עשה "כל מיני דברים" לווקטור הזה ב-בגודל 1600.
-
הטל את הווקטור האחרון חזרה אל מרחב הטקסט.
ואז כתוב בטוויטר: "AYE GEE EYE"
-
על הקלט: וקטורי הקלט הראשונים ישוחזרו חזרה לקלט.
-
על הפלט: ווקטורי הפלט האחרונים ישוחזרו לפלט המודל.
-
על כל דבר אחר: ?!
כן.
הפתעה.
-
תצפית: התצפית הראשונה היא שלעתים קרובות ההתפלגות מתקרבת להתפלגות הסופית הרבה לפני סוף המודל.
-
תצפית: (תופעה מוזרה): לאורך המודל לא נלמדת פונ' "רציפה". רק הקלט נראה כמו הקלט.
בשפה פשוטה: אם המודל נתקל במילה בעלת הסתברות נמוכה, אפשר לנחש שהמודל ילמד "לשמור אותה בצד" כדי ששכבות מאוחרות יותר יוכלו להשתמש בה ולהעתיק אותה. אבל זה לא קורה.
אפילו כשמדובר במשפט החוזר על עצמו כולו ומסתיים במילה נדירה: המודל לא לומד ש "אם נראה שהקלט חוזר על עצמו, המשך לחזור עליו גם אתה". במקום, המודל זורק את יצוג תבנית הקלט ואז משחזר אותה בשלב מאוחר הרבה יותר.
-
טרנספורמרים הם רשתות Resnet. כל חיבור בהם מהצורה x + f(x) כאשר f היא הפונקציה הנלמדת. קל מאוד ללמוד את פונ' הזהות.
-
טרנספורמרים מאומנים בדרך כלל עם Weight Decay (רגולריזצית L2) שדוחף את המשקולות לנורמת L2 קטנה. אז המדל ינסה "לפזר" חישוב על פני כמה שיותר שכבות (סכום הריבועים קטן מריבוע הסכומים).
בתמונה: השכבות הראשונות מנחשות "לGPT3 יש 175 מיליארד דולר" והשכבות האחרונות מנחשות "לGPT3 יש 175 מיליארד פרמטרים"