close menu

לקט שבועי מתמלא של סקירות קצרות של #shorthebrewpapereviews, שבוע 09.09.23-03.09.23

03.09.2023: Any-Size-Diffusion: Toward Efficient Text-Driven Synthesis for Any-Size HD Images

https://arxiv.org/abs/2308.16582.pdf

אוקיי, אני חייב להתוודא בפניכם. למרות שעסקתי לא מעט במודלי דיפוזיה גנרטיביים לא ידעתי שהם מתקשים ליצור תמונות בגדלים שונים. אז היום גיליתי את זה דרך המאמר שאני הולך לסקור קצרות ב-#shorthebrewpapereviews. המאמר מציע גישה די פשוטה לאימון מודלים לגדלים שונים. קודם כל לוקחים דאטהסט עם תמונות (בעלות כותרת או תיאור) מכל מיני גדלים, ועבור כל תמונה מחשבים יחסי של אורך לרוחב (H/W). מגדירים את היחסים בין רוחב לגודל שהמודל מאומן עליהם ומחפשים את היחס הקרוב ביותר לזה של התמונה. אז עושים לתמונה סקיילינג לפי היחס הזה ומכניסים אותה למודל דיפוזיה מאומן (Stable Diffusion -SD). לאחר מכן מכיילים את המודל הזה (כמו שמאמנים מודל דיפוזיה רגיל) אבל בשיטת LoRA כאשר האנקודר והדקודר לא מתעדכנים (frozen). כלומר מאמנים מטריצת תוספות למטריצות משקלים של המודל המאומן (שנשאר מוקפא) כאשר מטריצת תוספת זו מאומנת בתור מכפלה של שתי מטריצות low-rank (לזירוז הכיול). איך מגנרטים תמונות לאחר מכן? יש להם שיטה מעניינת (הופתעתי קצת שהיא עובדת) – מחלקים תמונה לפאצ'ים זרים ואז בכל איטרציה של מודל דיפוזיה בוחרים כמה מהם, מזיזים אותם ברוחב ולאורך עם הזזה בגודל אקראי, משחזרים את הרעש הנוסף בפאצ'ים המוזזים ואת השאר מעתיקים מהאיטרציה הקודים. כאמור מפתיע שזה עובד כי זה קצת לא מתיישר עם אופן האימון של מודל דיפוזיה – כנראה מספר האיטרציות הוא די גבוה כאן.


04.09.2023: YaRN: Efficient Context Window Extension of Large Language Models

https://huggingface.co/papers/2309.00071

מכירים את בעיית הרחבת אורך ההקשר (CL=context length) של מודלי שפה? בגדול הסוגיה כאן איך להתאים מודל שפה לעבוד עם טקסטים ארוכים יותר מאלו שהוא אומן עליהם. בהקשר זה קיימות 2 בעיות שונות: איך לגרום למודל שפה לעבוד עם CL ארוך יותר ואיך לכיילו ל-CL ארוך יותר? אז היום ב-#shorthebrewpapereviews סוקרים מאמר המציע כמה גישות לפתרון של סוגיה זו. המאמר מציע לגשת לפתרון דרך התאמה של קידוד תלוי מיקום (positional encoding = PE) שבא לקודד מיקום של טוקנים בסדרת הפלט. המאמר מציע לשכלל שיטת PE הנקרא RoPE שמקודדת את מיקום התוכן יחד עם ייצוג הטוקן (embedding) כאשר כל מיקום מקודד עם וקטור של רכיבו הוא אקספוננט מרוכב (עם i בתוכו) מוכפל (איבר איבר) עם רכיבי וקטור ייצוג הטוקן עצמו. כלומר לכל רכיב של וקטור ייצוג התוכן מוספים פאזה (הזזה) שהיא תלויה במיקום הטוקן בסדרה וגם במיקום הרכיב בווקטור הייצוג. קודם כל המחברים שמו לב שבעיית ייצוג המיקום קשורה לתורת NTK (Neural Tangent Kernel)). תורה זו אומרת כי רשתות נוירונים מתקשות לקודד מידע בעלת תדרים גבוהים (כמו קצוות מובהקים בתמונות) עם הייצוג הקלט הוא בעל מימד נמוך יחסית וייצוגו לא מכיל תדרים גבוהים. במודלי שפה אנו מנסים לקודד את מיקום התוכן בסדרה עם וקטור מרוכב(סינוסים וקוסינוסים). המאמר מדגיש שהגישה הטריויאלית להרחבת חלון ההקשר על ידי הכפלה של כל התדרים של וקטורי הייצוג ביחס בין חלון ההקשר החדש לישן (היחס הזה גדול מ 1) גורמת להפסד של תדרים גבוהים שהרשת צריכה בשביל להבחין בין טוקנים קרובים בעלי ייצוגים קרובים. בגדול (מאוד) המאמר מציע לא למתוח את כל התדרים במידה שווה (הכפלה ביחס בין אורכי ההקשר) אלא לעשות זאת רק לתדרים נמוכים יחסית (טוקנים ראשונים) ולא לעשות זאת (הכפלה) לטוקנים בסוף הסדרה כאשר טוקנים באמצע נמתחים גם כן אבל עם מקדם יותר קטן מהיחס הזה. כמובן שזה ממש בגדול, מציע בחום לרקוא את המאמר הזה כי אני מרגיש שהוא עוד יעשה כותרות.


סקירה זו נכתבה על ידי עדן יבין

05.09.2023: G-EVAL: NLG Evaluation using GPT-4 with Better Human Alignment

https://github.com/nlpyang/geval/tree/main, https://arxiv.org/abs/2303.16634.pdf

תהליך אבלואציה של מודל עוסק בהערכת הביצועים שלו. אבל איך נוכל להעריך טקסט שנוצר על ידי מודל ג׳נרטיבי? מדדים שונים כגון BLEU, מאפשרים לבצע הערכה אך צורכים טקסט נוסף שנכתב על ידי אדם כרפרנס. בעיה, כי השגת טקסט שכזה הינו יקר, מה הפתרון אז? המאמר נכתב על ידי חוקרים ממייקרוסופט ומציג שיטה הנקראת G-EVAL. השיטה בבסיסה משתמשת ב-GPT כדי להעריך את ביצועי מודל השפה שיצר טקסט כל שהוא בהינתן איזו שהיא משימה. היא מדמה תהליך של מילוי שאלון הערכה בכך שמאפשרת להגדיר קריטריונים שונים שחשובים לנו, החוקרים, להערכת איכות הטקסט. איך השיטה עובדת:

  1. המשתמש יוצר prompt בו הוא מתאר מה המשימה שמודל אחר ביצע + הסבר על הקריטריונים להערכת הטקסט.
  2. שימוש במודל שפה נוסף כדי לפרק את שיטת האבלואציה לכמה צעדים, למשל: ״תקרא את כל הטקסט ושים לב לכמות מילות הקישור״, ״תקרא כל משפט ושים לב לכמות המילים במשפט״ וכדומה. שלב זה מבוצע על ידי שימוש ב-Chain of Thought (CoT) כדי לייצר את השלבים השונים האלו המדמים טופס הערכה עם תתי סעיפים.
  3. נותנים למודל השפה לתת את הציונים השונים לכל קריטריון שהגדרנו בשלב אחד לטקסט שנרצה להעריך. הציון צריך להיות מספר שלם משום שניסויים שערכו מראים שהם מתקשים עם float.
  4. מגדירים פונקציית ניקוד אשר משקללת גם את הניקוד יחד עם התפלגות הניקוד מהתפלגות הטוקנים של המודל. הסיבה היא למקרה ויהיה שיווין בין הניקוד של טקסטים שונים נוכל להתחשב בניקוד יחד עם שקלול ההסתברות לקבל את אותו ניקוד.

כדי להשיג את ההתפלגות של הטוקנים מ-GPT4 הם דגמו כל קריטריון 20 פעמים כדי לקבל את התפלגות הטוקנים והשתמשו בזה בפונקציית הניקוד (יכול להיות ש-20 לא מספיק לעניות דעתי). עם GPT3.5 ניתן ישירות להשיג את ההסתברות לכל טוקן אז אין צורך לבצע זאת עם מודל זה. את התוצאות הם השוו מול מדדים אחרים בתחום. התוצאות כולן הן מול הערכה שביצע אדם על הטקסט לפי הקריטריונים שהוגדרו מראש (אותם קריטריונים שהשתמש גם במודל). ניתן לראות שהשיטה של החוקרים הביאה לתוצאות טובות באופן ניכר ויותר קרובות להערכה שבוצעה על ידי אדם.


06.09.2023: Unsupervised Compositional Concepts Discovery with Text-to-Image Generative Models

https://arxiv.org/abs/2306.05357.pdf

מודלי דיפוזיה גנרטיביים מסוגלים ליצור תמונות (ולא רק) באיכות מרהיבה לבהתאם לתיאור טקסטואלי. עכשיו השאלה האם ניתן לגרום למודלי דיפוזיה לעשות את הפעולה ההפוכה (סוג של). כלומר להפיק קונספטים ויזואליים (כלב, מכונית וכאלו) מסט תמונות נתון. היום ב-#shorthebrewpapereviews אנחנו סוקרים מאמר שמציע שיטה אלגנטית אינטואיטיבית לכך. קודם כל המאמר מגדיר מושג ״מודל דיפוזיה מרוכב״ (composite diffusion model או CDM). אתם זוכרים שבמהלך הגנרוט של תמונה אם מודלי דיפוזיה רגילים אנו מתחילים מרעש טהור ואז מסירים מנות קטנות של רעש, המחושב עם מודל מאומן, באיטרציות עד שמגיעים לתמונה נקיה. המודל שמשערך את הרעש מקבל גם את התיאור של התמונה (ייצוגו הוקטורי). עם CDM אנו יוצרים תמונה עם יותר מקונספט ויזואלי אחד כאשר הרעש המנוקה הוא סכום של שערוכי הרעש בהינתן קונספט מינוס הרעש המשוערך ללא התניה בתיאור (unconditioned). זה די דומה (מקרה פרטי) של classifier-free guidance שיטה פופולרית לגנרוט תמונות עם מודלי דיפוזיה. אבל בואו נחזור לשאלה המקורית: איך ניתן להפיק קונספטים ויזואליים (או ייצוגם) מסט תמונות נתון? נניח שאנו רוצים ״ללמוד״ K קונספטים ויזואליים מסט של תמונות. אז כל תמונה ניתנת לייצוג בתור CDM כאשר במקום סכום של שערוכי הרעש בהינתן כל קונספט בונים את סכומם הקמור (סכום המקדמים שווה ל 1 וכולם אי שליליים) עם המקדמים נלמדים עבור כל תמונה (גם כאן מחסירים מהסכום את שערוך הרעש ה-unconditioned). אז בהינתן סט תמונות מכיילים מודל דיפוזיה כאשר המטרה ללמוד את ייצוגי הקונספטים הויזואיליים וגם המקדמים של כל קונספט בכל תמונה. הלוס מכמת עד כמה טוב הצלחנו לשחזר כל תמונה. לאחר מכן ניתן לגנרט תמונה עבור כל קונספט בנפרד או כל מיני שילובים שלהם.


 07.09.2023: 

https://huggingface.co/papers/2309.01826

ארכיטקטורת הטרנספורמרים היא המלכה הבלתי מעורעת של עולם AI. רוב המודלים כמו מודלי שפה או מודלי דיפוזיה גנרטייבים המככבים היום בחדשות AI בנויים על הארכיטקטורה הזו. כמובן שיש לא מעט מחקר גם באקדמיה וגם בתעשיה על שיפור ביצועי הטרנספורמרים. אז היום ב-shorthebrewpapereviews נסקור מאמר המנסה לשפר שני ההיבטים של הטרנספורמרים: נפח האחסון וכמות חישובים (בכיוון הקטנתם). קודם כל ניזכר שכל בלוק של טרנספורמר (שהוא גרעין של כל מודל המבוסס על הטרנספורמרים) בנוי ממנגנון של תשומת הלב (attention) ועוד שתי שכבות של fully-connected שאחת מהן עם ReLU והשנייה לינארית. לפי המאמר השכבות האלו מהוות 2/3 ממספר המשקלים (ב-BERT) וכמובן ״תורמים״ לעומס החישובי. המחברים שאולים מה יקרה עם נוותר על השכבות האלו או שנעשה אותם ״שיתופיים״ (shared) בין כל בלוקי הטרנספורמים של המודל. זה עתיד להקטין את כמות המשקלים במודל באופן משמעותי כי רוב המודלים מכילים עשרות רבות או מאות בלוקי הטרנספורמרים. המאמר גם מציע ״לשתף״ משקלים בין האנקודר לדקודר. אבל איך זה משפיע על ביצועים. המאמר מראה שהפגיעה בביצועים לא גדולה במיוחד (למרות שהם ביצעו מספר בדיקות די מצומצם והם בדקו זאת על מודלים די קטנים עם 6 בלוקי טרנסםומרים בלבד). הם גם השווה דמיון בין הייצוגים של משפטים עבור המודל המקורי והמודל ״הקל״ המוצע וגילו שהוא די גבוה. בנסוף הם השווה k משפטים הדומים ביותר מחינת הייצוג לשני המודלים וגילו גם כאן דמיון רב. נראה מבטיח אך נדרשות בדיקות מקיפות יותר על מודלים רציניים יותר.


 08.09.2023: DOLA: DECODING BY CONTRASTING LAYERS IMPROVES FACTUALITY IN LARGE LANGUAGE MODELS

https://huggingface.co/papers/2309.03883

אנחנו משתמשים במודלי שפה למשימות רבות אבל האם לסמוך על הפלטיהם? עם כל הצער עדיין לא. יש תופעה הנקראת הזיות (hallucinations) של מודלי שפה כאשר מודלי שפה מדברים שטויות. זו בעיה מאוד רצינית בטח אם אתם רוצים לשים מודל שפה בפרודקשן. אז היום ב- #shorthebrewpapereviews אנחנו סוקרים מאמר המציע פתרון לבעיה החמורה הזו. המחברים מבססים את שיטתם על התכונה המעניינת של מודלי שפה שניתן לצפותה כאשר מוספים שכבת סופטמקס המחשבת את התפלגות הטוקנים אחרי כל בלוק הטרנספורמר. למעשה יש כאן שתי תופעות נפרדות. עבור טוקנים קלים (יחסית) לניחוש (הנובעים מכללי הדקדוק למשל) אז התפלגות טוקנים משכבות האמצע בערך לא משתנה ושווה להתלפגות הסופית של הטוקנים. בטוקנים היותר קשים ההתפלגות משתנה משמעתית כמעט עד השכבה האחרונה – כלומר בשכבה לפני האחרונה התפלגות הטוקנים עשויה להים שונה מאוד מהשכבה הסופית. אחד ההסברים לכך הוא ״שואב את ״הידע העובדתי מהזכרון שלו״ (סליחה על הנפנופי הידיים אבל ככה כתוב במאמר). המחברים מציעים לנרמל את הסופטמקס הסופי עם הסופטמקס של השכבה בעלת שוני הגבוה ביותר (מבחינת התפלגות הטוקנים). כלומר הסתברות התוקן פרופורציאונלית להשתנות המקסימלית של ההסתברות של הטוקן הזה (= ״כמות הלמידה״?). עושים זאת רק לטוקנים בעלי הסתברות גבוהה מספיק בשכבת סופטמקס האחרונה – השכבות עם שוני מקסימלי נבחרות על סט הולידציה. השוני נמדד במונחי Jensen-Shannon Divergence או JSD (גרסה סחמטרית של KL) בין התפלגויות הטוקנים. מכיוון שנרמול זה עלול לדפוק את הדקדוק מוסיפים ״קנס על חזרתיות״ (שלא יפלוט את אותו הטקסט יותר מפעם אחת).


 09.09.2023: LARGE LANGUAGE MODELS AS OPTIMIZERS

https://huggingface.co/papers/2309.03409

מודלי שפה נמצאים היום כמעט בכל מקום: הם עוזרים לנו לכתוב תוכן, לבצע מגוון משימות הקשורות לשפה טבעית כמו תרגום, ניתוח סנטימנט, אנו מנהלים איתם דיאלוגים מעניינים להנאתנו. אבל האם הם מסוגלים לפתור בעיות אופטימיזציה כמו רגרסיה לינארית או בעיית איש המכירות המטייל? היום ב-#shorthebrewpapereviews אנו סוקרים קצרות מאמר שמראה שמודלי שפה כן מסוגלים לפתור בעיות אופטימיזציה הנ״ל, כמובן אם מדברים איתם יפה (כלומר מהנדסים פרומפטים בצורה מתאימה) אז הם מצליחים לפתור בעיות רגרסיה לינאריים (במימד אחד, כלומר למצוא שני מקדמים של הישר) וגם בעיית איש המכירות המטייל (למצוא מסלול הקצר ביותר המבקר בסט נקודת – כאן על המישור). במקרה של רגרסיה בוחרים ערכים של שני המקדמים (w,b) של הרגרסיה דוגמים 50 נקודות x ומחשבים בהם את ערך הפונקציה בתוספת רעש גאוסי. מתחילים כמה זוגות אקראיים של w ו- b, מחשבים את השגיאות על הדאטהסט עבור הערכים הנבחרים של w ו- b שנדגמו. נותנים את השגיאות האלו למודל שפה ומבקשים ממנו לתת ערכים של w ו- b שממזערים את ההפרש הזה. המודל מנחש ואז מספקים לו כמה זוגות של ערכי w ו- b המוצלחים ביותר. והמודל מצליח די מהר להגיע די קרוב לתשובה הנכונה. דבר דומה עושים לבעיית איש המכירות המטייל וגם שם מודל שפה די מצליח. אציין לי שלא ברור לי איך מעבירים את הדאטהסט למודל. אחר כך המחברים ביצועי אופוימיזציה של הפרומפט (נקרא meta-prompt) במטרה למזער את השגיאה על הטסט סט. מטה-פרומפט זה מורכב משני דברים:

  1.  הפרומפטים הקודמים שנוסו והדיוקים של הפתרונות (שערוכי המקדמים) שהמודל סיפק באיטרציות הקודמות.
  2. תיאור הבעיה יחד עם הדגימות מהטריין סט (ממש בחירת מיניבאטץ')

התוצאות די נחמדות…

עוד בנושא: