RMSProp

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

הגדרה

RMSProp (ראשי-תיבות של Root Mean Square Propagation) הוא אלגוריתם-אופטימיזציה שג'פרי הינטון הציג ב-2012 בשקופיות-הרצאה מקוונות ולא במאמר-מדעי — משתמש בממוצע-נע דועך של ריבועי-הגרדיאנטים כדי לתקן את הפגם המרכזי של AdaGrad, שקצב-הלמידה שלו דועך בהדרגה לאפס. האלגוריתם השני ש-Adam שילב ב-2014.

מה זה RMSProp: קצב-למידה שמסתגל לפי זיכרון קצר-טווח

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

הפרסום היוצא-דופן: שקופית בקורס Coursera, לא מאמר-מדעי

בניגוד לרוב אלגוריתמי-האופטימיזציה החשובים בתחום, RMSProp מעולם לא פורסם כמאמר-מדעי עצמאי. ג'פרי הינטון הציג אותו לראשונה ב-2012, בשקופיות ההרצאה השישית ("Lecture 6e") של הקורס המקוון שלו "Neural Networks for Machine Learning" באתר Coursera, יחד עם ניטיש סריבסטבה וקווין סוורסקי. השקופית עצמה מייחסת את הרעיון של "חלוקת הגרדיאנט בממוצע-נע של גודלו" לטיימן טילמן, ומציינת אותו במפורש כ"בלתי-מפורסם" (unpublished). זו אחת הדוגמאות המוכרות ביותר בתולדות הלמידה-העמוקה לאלגוריתם-יסוד שהתפשט והשפיע עמוקות בלי שאי-פעם עבר תהליך של שיפוט-עמיתים רגיל.

הנוסחה: ממוצע-נע עם משקל-דעיכה של 0.9

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

איך זה פותר את הבעיה שהוריש AdaGrad

מכיוון שהממוצע-הנע דועך — כל צעד חדש מקבל משקל של 0.1 בלבד, וההשפעה של גרדיאנטים ישנים הולכת ונחלשת עם הזמן — המכנה בעדכון-המשקל של RMSProp לא ממשיך לגדול ללא הפסקה כמו ב-AdaGrad, ולכן קצב-הלמידה האפקטיבי לא דועך לאפס גם באימונים ארוכים. זה הופך את RMSProp למתאים במיוחד למשימות לא-קמורות ולא-סטציונריות — כאלה שבהן ה"נוף" שהאופטימיזציה נעה בו משתנה כל הזמן, כמו אימון רשתות-נוירונים-חוזרות (RNN). באותו זמן ובאופן בלתי-תלוי, פותח גם Adadelta — שהציג מתיו זיילר בדצמבר 2012 — לפתור בדיוק את אותה בעיה, בנוסחה כמעט זהה מבחינה מתמטית לזו של RMSProp.

RMSProp כמרכיב-הליבה של Adam

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

RMSProp בפני עצמו: עדיין בשימוש היום

למרות ש-Adam ו-AdamW הפכו לברירת-המחדל ברוב אימוני-הלמידה-העמוקה המודרניים, RMSProp נשאר מיושם כאופציה סטנדרטית בכל ספריות-הלמידה-העמוקה המרכזיות, כולל TensorFlow ו-PyTorch, ולעיתים עדיין נבחר במפורש לאימון רשתות-נוירונים-חוזרות ומודלים דומים שבהם הוכיח את עצמו במיוחד עוד לפני שקדם ל-Adam. הינטון עצמו, בסיכום הקורס שבו הציג אותו, המליץ עליו כאחת מכמה גישות סבירות למיני-אצוות גדולות, לצד מומנטום רגיל וגרסאות-מסתגלות נוספות — לא כפתרון-קסם יחיד, אלא כאחד מכמה כלים תלויי-משימה. הוא גם שימש לאימון ה-DQN המקורי של DeepMind ב-2015 — הרשת הראשונה שלמדה לשחק משחקי-אטארי ברמת-בני-אדם ישירות מפיקסלים גולמיים, עוד לפני ש-Adam הפך לברירת-המחדל הרווחת.

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

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

Root Mean Square Propagation — "הפצת שורש-ממוצע-הריבועים". האלגוריתם מחלק את הגרדיאנט של כל פרמטר בשורש-הריבועי של ממוצע-נע דועך של ריבועי-הגרדיאנטים האחרונים שלו.

מי המציא את RMSProp, ומתי, ולמה הוא מעולם לא פורסם כמאמר?

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

מה ההבדל בין RMSProp ל-AdaGrad?

AdaGrad צובר את סכום ריבועי-הגרדיאנטים ללא הפסקה לאורך כל האימון, כך שקצב-הלמידה שלו דועך בהדרגה לאפס. RMSProp מחליף את הצבירה הזו בממוצע-נע דועך (משקל של 0.9 לעבר, 0.1 לצעד החדש), כך שקצב-הלמידה שלו ממשיך להסתגל גם באימונים ארוכים.

איך RMSProp קשור ל-Adam?

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