Adam Optimizer — אלגוריתם-אופטימיזציה של קינגמה ובא; AdamW מאמן מודלי-שפה

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

הגדרה

Adam (ראשי-תיבות של Adaptive Moment Estimation) הוא אלגוריתם האופטימיזציה הנפוץ ביותר לאימון רשתות-נוירונים כיום — מכוונן קצב-למידה נפרד לכל פרמטר לפי היסטוריית-הגרדיאנטים שלו.

מה זה Adam: שילוב מומנטום וקצב-למידה מסתגל

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

מי פרסם את Adam, ומתי בדיוק — 2014 או 2015

האלגוריתם פורסם לראשונה בדצמבר 2014 על ידי דידריק פ. קינגמה וג'ימי בא, במאמר "Adam: A Method for Stochastic Optimization", שהתקבל רשמית לכנס ICLR ב-2015 — לכן מקובל להתייחס לפרסום כ-2014/2015, לפי אם מציינים את תאריך-ההעלאה הראשוני ל-arXiv או את תאריך-הכנס הרשמי. אין כאן שני מאמרים או שתי גרסאות שונות של השיטה — זהו אותו מאמר יחיד, שהוגש והתקבל בפער של כשנה.

איך זה עובד: שני 'זיכרונות' רצים ותיקון-הטיה

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

מגבלה שהתגלתה: הכללה לעומת SGD

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

AdamW ותפקיד Adam באימון מודלי-שפה-גדולים

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

Adam בתעשייה: ברירת-מחדל כמעט בכל ספריית-למידה-עמוקה

כמעט כל אימון LLM מודרני משתמש בגרסה כלשהי של Adam או AdamW, לא בגרסת 2014 המקורית ולא ב-SGD הבסיסית — הסטת-בחירה הדרגתית שהפכה את Adam, פחות מעשור מפרסומו הראשון, לכלי-העבודה הכמעט-ברירת-מחדל של כל מי שמאמן רשת-נוירונים גדולה. כל ספריות הלמידה-העמוקה המרכזיות, כולל TensorFlow ו-PyTorch, כוללות מימוש מוכן שלו כאופציה סטנדרטית.

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

מה המשמעות של ראשי-התיבות Adam?

Adam הוא קיצור של Adaptive Moment Estimation ('הערכת-רגע מסתגלת') — לא שם של אדם, אלא תיאור-שיטה: האלגוריתם מעריך לכל פרמטר בנפרד את הרגעים הסטטיסטיים (הממוצע והשונות) של הגרדיאנטים שלו, ומתאים לפיהם קצב-למידה אישי.

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

דידריק קינגמה וג'ימי בא פרסמו את השיטה בדצמבר 2014 (העלאה ל-arXiv), והמאמר התקבל רשמית לכנס ICLR ב-2015 — לכן מקובל לראות את שתי השנים יחד כתאריך-הפרסום, לפי אם מציינים העלאה ראשונית או קבלה רשמית.

האם Adam תמיד עדיף על SGD?

לא בהכרח. Adam מתכנס בדרך כלל מהר יותר ודורש פחות כיוונון-ידני, אך מחקרים הראו שבמשימות ראייה-ממוחשבת מסוימות SGD עם מומנטום מכליל טוב יותר על נתונים חדשים — הבחירה נשארת תלוית-משימה.

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

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