ירידת גרדיאנט סטוכסטית (SGD)

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

הגדרה

Stochastic Gradient Descent (SGD) היא הגרסה הנפוצה ביותר בפועל של ירידת-גרדיאנט — מעדכנת את פרמטרי המודל לפי מדגם-אקראי קטן של הנתונים בכל צעד, במקום לפי כל מאגר-האימון בבת אחת.

מה זה SGD, ולמה לא לחשב את הגרדיאנט על כל הנתונים

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

מקור מתמטי מ-1951, עוד לפני רשתות-נוירונים

מקורות השיטה קדומים בהרבה לרשתות-הנוירונים המודרניות: הרברט רובינס וסאטון מונרו תיארו כבר ב-1951, במאמר "A Stochastic Approximation Method" בכתב-העת Annals of Mathematical Statistics, שיטה כללית למציאת נקודת-שורש של פונקציה על סמך מדידות רועשות בלבד — הרעיון המתמטי שביסוד SGD, יותר משבעים שנה לפני שהפך לכלי-העבודה היומיומי של כל מי שמאמן מודל למידה-עמוקה. השם "סטוכסטית" מתייחס לאקראיות שבבחירת המדגם בכל צעד, לא לתהליך-הלמידה עצמו שנשאר דטרמיניסטי בהינתן אותו מדגם.

מיני-אצווה, קצב-למידה, ומומנטום

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

רעש כתכונה: למה SGD לפעמים מכלילה טוב יותר

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

לוחות-זמנים של קצב-למידה: חימום ודעיכה

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

SGD מול Adam: מתי עדיין בוחרים בגרסה הפשוטה

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

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

מה ההבדל בין SGD לירידת-גרדיאנט הרגילה?

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

האם SGD או Adam — איזה אופטימייזר עדיף?

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

למה קוראים לשיטה 'סטוכסטית'?

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

מה זה 'קצב-למידה' ולמה הוא כל-כך חשוב ב-SGD?

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