לקט שבועי מתמלא של סקירות קצרות של #shorthebrewpapereviews, שבוע 21.09.23-28.09.23
21.09.2023: Language Modeling Is Compression
https://huggingface.co/papers/2309.10668
מאמר זה משך את ליבי מייד כשראיתי את הכותרת. הרי יש לא מעט קשרים בין מודלי חיזוי לבין מודלי כניסה. מאוד מאוד בגדול מודל חיזוי חזק אמור להפיק את פיצ'רים המהותיים ביותר של הדאטה הנחוצים לחיזוי ואותם הפיצ'רים ניתן לנצל לדחיסת הדאטה. היום ב-#shorthebrewpapereviews סוקרים מאמר מרתק של דיפמיינד שמראה שניתן להשתמש במודלי שפה מאומנים בתור דוחסי דאטה. איך הם בכלל ניגשו לבעיה הזו הרי זה לא לגמרי טריוויאלי איך ניתן להשתמש במודלי שפה לדחיסת דאטה. הרי מה שמודלי שפה (דקורר) יודעים לעשות הוא לחזות את התלפגות הסתברויות הטוקנים בהינתן הטוקנים הקודמים בסדרה. אז מתברר שקיימת שיטת דחיסה שמנצלת הסתברויות אלו לדחיסת דאטה. השיטה נקראת קידוד אריתמטי(arithmetic encoding). עבור פיסת דאטה נתון השיטה מתחיל מאינטרוול [0,1]. בהגעה של הטוקן הבא מחלקים את האינטרוול לפי ההסתברויות בהתלפגות הטוקן הבא(בהינתן הקודמים) ולוקחים את האינטרוול המתאים לטוקן הבא בדאטה. לאחר הגעת הטוקן האחרון לוקחים את האינטרוול שהתקבל ולוקחים ממנו מספר שניתן לייצגו במספר המינימלי של ביטים. סדרת ביטים זו תהווה את הדחיסה של פיסת הדאטה שלנו. אז המחברים לקחו את השיטה ובדקו עד כמה ניתן לדחוס דאטהסטים שונים מ 3 דומיינים (טקסט, תמונות, אודיו) ודחסו אותם עם הגישה הזו. לאחר מכן הם השוו את התוצאה עם הדוחסים הקלאסיים כמו gzip, LZMA2 ו- PNG((יש פרטים מעניינים איך המחברים התמודדו עם אורכי ההקשר השונים בין מודלי שפה לדוחסים הקלאסיים) ויצא שמודלי שפה מצליחים להביא קצב דחיסה גבוה יותר ב 3 הדומיינים האלו. אבל תזכרו שיש כאן קאטץ' קטן. דוחסים אלו לא לוקחים בחשבון את גודל המודל שנצטרך לשמור אותו אם נרצה לפענח את הדאטה). הדוחסים הקלאסיים הם מאוד קטנים ושם זה פחות רלוונטי. זה למעשה מביא אותנו לקונספט מתמטי מורכב הנקרא סיבוכיות קולמוגורוב שמודד את ״מורכבות״ הדאטה בתור סכום של תוכנה (המודל) לדחיסת הדאטה וגודל הדאטה אחרי הדחיסה. הם מדברים על זה קצת במאמר – ממליץ להעיף מבט
22.09.2023: FreeU: Free Lunch in Diffusion U-Net
https://huggingface.co/papers/2309.11497
אם אתם אוהבים מודלי דיפוזיה אתם תאהבו את המאמר החמוד הזה המציע שינוי קטן די פשוט למודלי דיפוזיה גנרטיביים שמביא איתו שיפור ניכר באיכות התמונות המגונרטות. אז היום ב-#shorthebrewpapereviews סוקרים מאמר שחוקר מה קורה בתוך המודל לשערוך הרעש המהווה לב של מודלי זיפוזיה גנרטיביים. אזכיר כי מודל דיפוזיה מאומן לגנרט דאטה מרעש טהור על ידי הסרה מנות קטנות של רעש כל פעם (איטרציה). הקלט למודל הזה הוא הפלט של האיטרציה וקודמת ומספר האיטרציה (שעוברת קידוד לפני). המודל שחוזה את הרעש הוא כמובן רשת נוירונים בסגנון UNet עם כל מיני שכלולים קלים (כמו הוספת attention). UNet לוקח את הייצוג הלטנטי של הדאטה, דוחס אותו עוד יותר ואז מחזיר את הדאטה לגודל המקורי. וכמובן יש שם את skip-connection שמעתיק את הדאטה משלב הקטנת המימד לשלב הגדלת המימד של UNet. אז המחברים שמו לב שהדאטה שמגיע מה skip connection אחראי על התדרים הגבוהים בתמונה כלומר על הפרטים הקטנים של התמונה כאשר החלק השני (backbone) אחראי על פרטים משמעותיים יותר של התמונה. המחברים מצאו כי הגברת רכיב ה-backbone לצד החלשת רכיב הskip-connection מוביל לשיפור איכות התמונה המגנרטת. אבל מתברר שכאשר ההגברה מתבצעת בכל הערוצים (channels) אז איכות התמונה נפגעת המגבירים רק על חצי (אין לי מושג למה) של הערוצים. לגבי התוכן של skip-connection ההחלשה מתבצעת לתדרים הגבוהים בו. כלומר עושים התמרת פוריה מחלישים את התדרים הגבוהים ועושים התמרת פוריה הפוכה. זה כל הרעיון: פשוט ואלגנטי שניתן לממשו בכמה שורות קוד בודדות.
23.09.2023: FreeU: Free Lunch in Diffusion U-Net
https://arxiv.org/abs/2309.08646.pdf
זה לא סוד שאחד המרכיבים החשובים בטרנספורמרים הינו קידוד תלוי המיקום (positional encoding) או PE. תפקיד PE הוא לקודד מיקום הטוקנים בסדרה והשיטת קידוד שהפכה להיות מאוד פופולרית לאחרונה נקראת (RoPE (rotary PE. אז היום ב-#shorthebrewpapereviews אנו סוקרים מאמר שמצא מקום בו ניתן לשפר (לפי המאמר) את RoPE ומציע דרך לפתור אותה. אז קודם כל מה זה RoPE? זו שיטה שלמעשה לוקחת וקטורי שאילתה ומפתח (query and key) ומכפילה אותם (איבר איבר) בווקטור מרוכב בעל נורמה יחידה שהתדר שלו פרופורציאנלי למיקום של טוקן בסדרה (כל איבר בווקטור זה מוכפל גם במימד שלו במרחב הייצוג). כלומר ככל שהטוקן נמצא יותר רחוק מהתחלת הסדרה התדר שלו (מקדם מעריכי במספר המרוכב הזה) הינו גבוה יותר. צריך לציין שוקטורי המפתח והשאילתה מיוצגים כוקטורים מרוכבים גם כן. כאשר מחשבים את ה-attention בין וקטורים אלו יוצא כי יש פונקצית ה-attention תלויה באופן מפורש במרחק בין וקטורים אלו (נמצא בתוך אקספוננטה מרוכבת). ניתן להוכיח ככל שעבור מרחק גדול בין הטוקנים ה-attention ביניהם שואף לאפס. עכשיו המחברים שמו לב שעבור מימדים מסוימים במרחב הייצוג ציוני ה-attention בין מקדמי שאילתה ומפתח (עבור כל מימד מדובר בשני זוגות של מספרים מרוכבים) עלולים לקטון כאשר מרחק בין מיקומי הטוקנים קטן (בגלל המבנה של RoPE). כמובן שזה לא רצוי ולמרות שזה קורה רק למימדים מסוימת המחברים מוכיחים שזה משפיע לרעה על יעילות הקידוד המיקומי. הסיבה לכך (הנובעת מאריתמטיקה די פשוטה) היא הזווית שהיא לא אפס בין וקטורי השאילתה והמפתח. אז המחברים מציעים שיטה ההופכת וקטורי שאילתה להיות קולינאריים כלומר הזווית ביניהם הופכת להיות 0 והבעיה נעלמת. יש שיפור מסוים בביצועים אך המחברים עצמם אומרים שטרם סיימו לבדוק את כל ההיבטים של הגישה המוצעת.
24.09.2023: FOLEYGEN: VISUALLY-GUIDED AUDIO GENERATION
https://huggingface.co/papers/2309.10537
בחרתי לסקור את המאמר הזה כי למדתי ממנו שיש משימה שלא הכרתי בראייה ממוחשבת והיא הפקה סדרת אודיו מסרטון וידאו נתון. מתברר שמדובר במשימה לא טריוויאלית והמאמר מציע גישה אלגנטית ודי פשוטה לבעייה זו. אז היום ב- #shorthebrewpapereviews סוקרים מאמר המציע שיטה להפקה אודיו מוידאו. בהינתן דאטהסט המכיל זוגות של סרטוני וידאו או האודיו המתאים המחברים משתמשים באנקודר מאומן של אודיו EnCodec שהופך את האודיו לייצוגו הלטנטי. מה זה ייצוג לטנטי של אות אודיו? למשעה זו סדרה של וקטורים שכל אחד מהם הוא השיכון (embedding) של מקטע (בזמן) של האות. בנוסף יש ל-EnCodec דקודר שמשחזר את האות מהייצוג הלטנטי שלו. המאמר גם משתמש במודלים שמטרתם להפיק ייצוג של וידאו (של כל פריים) כמו CLIP, ImageBind ו- ViT. אז מה בעצם הארכיטקטורה של FoleyGen ואיך מאמנים את המודל הזה? לכל זוג של וידאו ואודיו מעבירים את האודיו דרך האנדקור של EnCodec ואת הודיאו דרך האנקודר של דאטה ויזואלי (נגיד CLIP). כלומר כאן אודיו ווידאו מויצגים באמצעות סדרה של וקטורי הייצוג של ״הטוקנים״ שמרכיבים אותם (פריים לוידאו ומקטע זמן לאודיו). לאחר מכן מאמנים טרנספורמר (מורכב מדקודר בלבד) כשמטרתו לשחזר את ייצוג הטוקן הבא של אות האודיו בהינתן ייצוגי הטוקנים (של אודיו) הקודמים וייצוגי של טוקני הווידאו. הם בחנו כמה אופציות לגבי טוקנים של הווידאו של הטקנספומר יכול לגשת: כל הטוקנים, רק הטוקנים שבאו לפני הזמן או את טוקני הווידאו הסמוכים בזמן. וזה וזה – פשוט ואלגנטי.
26.09.2023: Context is Environment
סקירה זו נכתבה על ידי עדן יבין
27.09.2023: CHAIN-OF-VERIFICATION REDUCES HALLUCINATION IN LARGE LANGUAGE MODELS
https://arxiv.org/abs/2309.09888.pdf
מכירים את בעיית ההזיות (hallucinations)במודלי שפה? בגדול זה קורה כאשר מודל שפה מספק לנו תשובות לא נכונות לשאלות לפעמים יחסית פשוטות. סוגיה זו קיבלה התיחסות רבה לאחרונה במספר עבודות ומאמר שנסקור היום ב-#shorthebrewpapereviews מציע גישה נוספת לפתרונה. הרעיון של עליו מתבססת השיטה המוצעות במאמר הוא פשוט ומאוד אינטואטיבי ומסתמך על האובסרבציה הבאה: יש לא מעט מקרים שמודלי שפה מספקים לנו תשובות לא נכונות אך כאשר מבקשים ממנו לבדוק את התשובה הוא חוזר בו ונותן תשובה נכונה (אציין שלא תמיד זה קורה מסיבות טובות אלא נובע מאופן האימון שלו הגורם למודל להיות קצת ״yesman" עם האנשים. אבל אולי כדאי לנו לבקש מהמודל לבדוק את תשובתו על ידי גנרוט שאלות רלוונטיות לתשובה. למשל אם המודל עונה על שאלה איזה פוליטיקאים ידועים נולדו בשנות השישים, והוא עונה X אז אחת משאלות הבדיקה יכולה להיות "מתי נולד פוליטיקאי X". על סמך תשובות על השאלות אלו (שכמובן יכולת להיות רבות ומגוונות) המודל משנה את תשובתו והופך אותה למדויקת יותר. וזה וזה – כל השאר זה הנדסת פרומפרטים ל- 5 השלבים הבאים:
- שאלה מקורית
- תשובה התחלתית של מודל שפה
- גנרוט שאלות וריפיקציה לשאלה ההתחלתית וגנרוט תשובות עליהם (מתבצע בשני שלבים)ֿ
מודיפיקציה של התשובה הסופית בהתבסס על התוצאה של השלב הקודם
28.09.2023: LONGLORA: EFFICIENT FINE-TUNING OF LONG CONTEXT LARGE LANGUAGE MODELS
https://arxiv.org/abs/2309.12307.pdf
כל מי שעוסק במודלי שפה בטח שמע על סוגיית אורך ההקשר (context length). אנו רוצים שהמודלים שלנו יהיו מסוגלים ״להחזיק בבטן״ כמות כמה שיותר גדולה של טקסט. אולם הקשר ארוך דורש כמות עצומה של מאשבים לאימון ולאינפרנס. אז היום ב-#shorthebrewpapereviews אנו סוקרים מאמר שמציע גישת כיול שמגדילה את אורך ההקשר של מודל שפה. כלומר אם מודל שפה היה מאומן באימון מקדים (pretraining) עם אורך הקשר של 2048, השיטה המוצעת מאפשרת להאריכו פי 4 ל-8192. כמו שאתם רואים השם של השיטה מכיל את המילה LoRA שהיא שיטה מאוד פופולרית לכיול של מודלי שפה. במקום לכייל (לשנות) את כל המשקלים של מודל השפה המכויל LoRA מעדכנת רק את התוספת למשקלי המודל (כמו ResNet). בנוסף התוספת למשקלים מיוצגת על ידי מטריצה עם רנק נמוך שניתן לתאר אותה על ידי מכפלה של מטריצות בעלות מימד נמוך יחסית. אז מה מציע LongLoRA בנוסף? כדי להגדיל את אורך הקשר נגיד מ- 2048 ל-8192 היא מחלקת את 8192 טוקנים ל-4 קבוצות בעלות 2048 טוקנים כל אחת שעבור כל אחת מהם ציוני ה-attention מחושבים בנפרד (חסכון פי 16 בחישובים). את זה עושים בחצי מהראשים. בשאר הראשים פשוט מזיזים את הקבוצות האלו בחצי גודל כלומר הקבוצה הראשונה תכילי טוקנים מ-1024 עד 3071, השניה מ 3072 ל 5195 וכדומה. טריק פשוט מאוד אבל מביא תוצאות לא רעות בכלל.