AdamW

יסודות בינה מלאכותית

הגדרה

AdamW הוא גרסה של Adam מ-2017, שהציעו איליה לושצ'ילוב ופרנק הוטר, שמנתקת את רגולריזציית "דעיכת-המשקלים" (Weight Decay) מעדכון-הגרדיאנט האדפטיבי — תיקון שהוכיח שיפור-הכללה מדיד, והפך לאופטימייזר ברירת-המחדל בפועל לאימון מודלי-שפה-גדולים רבים.

הבעיה ש-AdamW פתר: L2 regularization אינה "דעיכת-משקלים" באלגוריתמים אדפטיביים

רוב ספריות הלמידה-העמוקה יישמו את מה שהן כינו "דעיכת-משקלים" (Weight Decay) של Adam בתור רגולריזציית L2 רגילה — הוספת עונש פרופורציוני-לגודל-המשקל ישירות לגרדיאנט לפני שהוא נכנס לחישוב האדפטיבי. איליה לושצ'ילוב ופרנק הוטר הראו ב-2017 שזו טעות: "רגולריזציית L2 ורגולריזציית דעיכת-משקלים שקולות עבור ירידת-גרדיאנט סטוכסטית סטנדרטית (כשמשנים-קנה-מידה לפי קצב-הלמידה), אך כפי שאנו מדגימים זה אינו נכון עבור אלגוריתמים אדפטיביים של גרדיאנט, כגון Adam" — כך נכתב במפורש בתקציר המאמר שלהם. כלומר, השם "weight decay" שהשתמשו בו ספריות כמו TensorFlow ו-PyTorch עבור Adam הרגיל היה, לפני AdamW, פשוט לא-מדויק. המאמר עצמו פותח בכך שאלגוריתמים אדפטיביים כמו AdaGrad, RMSProp ו-Adam כבר הפכו ל"שיטת ברירת-המחדל לאימון רשתות-הזנה-קדימה ורשתות-חוזרות" — ולמרות זאת, התוצאות המובילות במערכי-נתונים לסיווג-תמונות כמו CIFAR-10 ו-CIFAR-100 עדיין הושגו בעיקר עם SGD ומומנטום, פער שהניע את המחקר הזה מלכתחילה.

למה ההבדל בכלל משנה: משקלים עם גרדיאנט-היסטורי גדול נענשים פחות

כשה-L2 מתערבב לתוך הגרדיאנט לפני חלוקתו בממוצע-הנע האדפטיבי של Adam (בדיוק אותו מנגנון שהגיע מ-RMSProp), גם עונש-הרגולריזציה עצמו מתחלק באותו קנה-מידה כמו הגרדיאנט של פונקציית-האובדן. התוצאה: משקל שצבר היסטוריית-גרדיאנטים גדולה מקבל בפועל פחות רגולריזציה יחסית ממשקל עם היסטוריה קטנה — אפקט לא-מכוון שלא היה קיים כלל ב-SGD הרגילה, ששם L2 ודעיכת-משקלים שקולות במדויק. לושצ'ילוב והוטר מראים שזה בדיוק אחד הגורמים שבגללם Adam הרגיל נוטה להכליל פחות טוב מ-SGD עם מומנטום על חלק ממשימות-הראייה-הממוחשבת.

הפתרון: לנתק את דעיכת-המשקלים מהעדכון האדפטיבי

הפתרון שהציעו פשוט מבחינה מבנית: להשאיר את חישובי-הממוצע-הנע (המומנטום והרגע-השני) תלויים אך ורק בגרדיאנט של פונקציית-האובדן, ולהחיל את דעיכת-המשקלים כצעד נפרד לגמרי — ישירות על המשקל עצמו, לא דרך הגרדיאנט. באלגוריתם AdamW, שורת-העדכון הסופית של כל פרמטר מורכבת משני איברים נפרדים: העדכון האדפטיבי הרגיל של Adam, ועוד מכפלה ישירה של המשקל בגורם-הדעיכה, ללא תלות בהיסטוריית-הגרדיאנטים שלו. השינוי הזה "מנתק את הבחירה האופטימלית של גורם-דעיכת-המשקלים מכיוונון קצב-הלמידה", כלשון המאמר עצמו — ומקל משמעותית על חיפוש-ההיפר-פרמטרים.

פרסום: מ"תיקון Adam" ב-2017 ל-ICLR 2019

איליה לושצ'ילוב ופרנק הוטר, מאוניברסיטת פרייבורג בגרמניה, העלו את המאמר לראשונה ל-arXiv בנובמבר 2017, תחת הכותרת המקורית "Fixing Weight Decay Regularization in Adam". הגרסה הסופית, בכותרת "Decoupled Weight Decay Regularization", התקבלה כמאמר-כנס רשמי ל-ICLR 2019. הקוד המלא של הניסויים פורסם בפומבי, וכתבו המחברים עצמם שדעיכת-המשקלים-המנותקת שהם הציעו "כבר אומצה על-ידי חוקרים רבים, והקהילה יישמה אותה ב-TensorFlow וב-PyTorch" עוד לפני שהמאמר עצמו התקבל רשמית לכנס.

התוצאה הנמדדת: שיפור-הכללה של 15% ותחרותיות מול SGD

במאמר עצמו נמדדה השפעת התיקון על משימות סיווג-תמונות סטנדרטיות (CIFAR-10 ו-ImageNet בגודל 32×32), על-פני טווח רחב של תקציבי-אימון (מ-100 עד 1,800 אפוכות) ולוחות-זמנים שונים של קצב-למידה. לפי המאמר, AdamW "משיג שיפור יחסי של 15% בשגיאת-המבחן" לעומת Adam הרגיל עם L2 regularization, ומאפשר לגרסאות של Adam "להתחרות עם SGD עם מומנטום על מערכי-נתונים לסיווג-תמונות (שעליהם הוא בעבר בדרך-כלל הפסיד לו)" — משפט מפורש מתוך תקציר המאמר.

AdamW היום: ברירת-המחדל בפועל לאימון מודלי-שפה-גדולים רבים

טבלת-תצורות-האימון המפורטת בסקר האקדמי המקיף "A Survey of Large Language Models" מראה ש-AdamW הוא האופטימייזר המדווח עבור מודלים בולטים כמו LLaMA, LLaMA 2, Falcon, GLM, OPT, Chinchilla ו-Galactica. עם זאת, אותה טבלה עצמה מראה ש-GPT-3, BLOOM, Gopher ו-MT-NLG מדווחים כמאומנים עם Adam הרגיל בלבד — כך שהתמונה מדויקת יותר כ"ברירת-המחדל בפועל אצל רוב המודלים הפתוחים-והגדולים המובילים", ולא כ"שימוש אוניברסלי גורף". בכל מקרה, AdamW הוא כיום אחד משני האופטימייזרים הנפוצים ביותר (יחד עם Adam הרגיל) לאימון טרנספורמרים בקנה-מידה גדול.

ארבעה דורות של אופטימייזר-גרדיאנט מסתגל
AdaGradRMSPropAdamAdamW
שנת-פרסום2011 (JMLR)2012 (הרצאת-Coursera, לא מאמר)2014/2015 (arXiv / ICLR)2017/2019 (arXiv / ICLR)
איך נצברת היסטוריית-הגרדיאנטים?סכום מצטבר בלתי-מוגבל של ריבועי-גרדיאנטיםממוצע-נע דועך (משקל-דעיכה 0.9)ממוצע-נע דועך + מומנטום (β1=0.9, β2=0.999)זהה ל-Adam
בעיה מרכזית שפתר לעומת קודמוקצב-למידה אחיד לכל הפרמטריםקצב-הלמידה של AdaGrad דועך לאפסחוסר-מומנטום ב-RMSProp/AdaGradרגולריזציית L2 שגויה באלגוריתמים אדפטיביים
טיפול ב"דעיכת-משקלים" (Weight Decay)אין מנגנון מובנהאין מנגנון מובנהמעורבבת בתוך הגרדיאנט (כ-L2)מנותקת — מוחלת ישירות על המשקל

שאלות נפוצות ❓

מה ההבדל בין Adam ל-AdamW?

ב-Adam הרגיל, רגולריזציית L2 מעורבבת בתוך הגרדיאנט לפני שהוא מחולק בממוצע-הנע האדפטיבי — מה שגורם למשקלים בעלי היסטוריית-גרדיאנט גדולה להיענש פחות. AdamW מנתק את דעיכת-המשקלים לצעד נפרד שמופעל ישירות על המשקל, בלי תלות בהיסטוריית-הגרדיאנטים שלו.

מי המציא את AdamW, ומתי?

איליה לושצ'ילוב ופרנק הוטר מאוניברסיטת פרייבורג, שהעלו את המאמר ל-arXiv בנובמבר 2017 תחת הכותרת "Fixing Weight Decay Regularization in Adam", ופרסמו אותו בגרסתו הסופית כמאמר-כנס ב-ICLR 2019.

האם AdamW הוא ברירת-המחדל של כל מודלי-השפה-הגדולים?

לא באופן אוניברסלי. לפי טבלת-תצורות-אימון בסקר אקדמי מקיף, מודלים כמו LLaMA, Falcon, GLM ו-OPT מדווחים כמאומנים עם AdamW, בעוד GPT-3, BLOOM ו-Gopher מדווחים כמאומנים עם Adam הרגיל — AdamW נפוץ מאוד, אך לא בלעדי.

כמה AdamW משפר את ביצועי-ההכללה לעומת Adam הרגיל?

במאמר המקורי נמדד שיפור יחסי של 15% בשגיאת-המבחן על משימות סיווג-תמונות כמו CIFAR-10 ו-ImageNet בגודל מוקטן — מספר שנמדד על אותם מבחני-השוואה ספציפיים, לא ערך אוניברסלי לכל משימה.