רגרסיה לינארית: ירידה בגרדינט

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

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

  1. מחשבים את האובדן עם המשקל וההטיה הנוכחיים.

  2. קובעים את הכיוון שבו צריך להזיז את המשקלים וההטיה כדי לצמצם את האובדן.

  3. מעבירים את ערכי המשקל וההטיה בכיוון שמקטין את האובדן.

  4. חוזרים לשלב אחד וחוזר על התהליך עד שהמודל לא יכול להפחית את האובדן יותר.

הדיאגרמה הבאה מתארת את השלבים האיטרטיביים שבהם מתבצעת ירידה בגרדינט כדי למצוא את המשקלים וההטיה שיוצרים את המודל עם האובדן הנמוך ביותר.

איור 12. איור של תהליך הירידה בגרדינט.

איור 12. ירידה בגרדינט היא תהליך איטרטיבי שמוצא את המשקלים וההטיה שיוצרים את המודל עם האובדן הנמוך ביותר.

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

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

פאונד באלפים (תכונה) מיילים לגלון (תווית)
3.5 18
3.69 15
3.44 18
3.43 16
4.34 15
4.42 14
2.37 24
  1. המודל מתחיל את האימון על ידי הגדרת המשקל וההטיה לאפס:
  2. $$ \small{Weight:\ 0} $$ $$ \small{Bias:\ 0} $$ $$ \small{y = 0 + 0(x_1)} $$
  3. מחשבים את אובדן ה-MSE באמצעות הפרמטרים הנוכחיים של המודל:
  4. $$ \small{Loss = \frac{(18-0)^2 + (15-0)^2 + (18-0)^2 + (16-0)^2 + (15-0)^2 + (14-0)^2 + (24-0)^2}{7}} $$ $$ \small{Loss= 303.71} $$
  5. מחשבים את השיפוע של המשיק לפונקציית האובדן בכל משקל ובשיפוע:
  6. $$ \small{Weight\ slope: -119.7} $$ $$ \small{Bias\ slope: -34.3} $$

    לוחצים על סמל הפלוס כדי לקבל מידע נוסף על חישוב שיפוע.

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

    נכתוב את המשוואה ליצירת תחזית כך:
    $ f_{w,b}(x) = (w*x)+b $.

    נכתוב את הערך בפועל כך: $ y $.

    נחשב את MSE באמצעות:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
    כאשר $i$ מייצג את הדוגמה ה-ith לאימון ו-M מייצג את מספר הדוגמאות.

    נגזרת המשקל

    הנגזרת של פונקציית האובדן ביחס למשקל נכתבת כך:
    $ \frac{\partial }{\partial w} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $

    והיא מקבלת את הערך:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2x_{(i)} $

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

    אם פותרים את המשוואה הזו עם משקל ונטייה שווים לאפס, מקבלים שיפוע של -119.7.

    נגזרת הטיה

    הנגזרת של פונקציית האובדן ביחס לשגיאת ההטיה נכתבת כך:
    $ \frac{\partial }{\partial b} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $

    והיא מקבלת את הערך:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2 $

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

    אם פותרים את המשוואה הזו עם משקל ונטייה שווים לאפס, מקבלים שיפוע של -34.3.

  7. זזים כמות קטנה בכיוון השיפוע השלילי כדי לקבל את המשקל וההטיה הבאים. בינתיים, נגדיר באופן שרירותי את 'הסכום הקטן' כ-0.01:
  8. $$ \small{New\ weight = old\ weight - (small\ amount * weight\ slope)} $$ $$ \small{New\ bias = old\ bias - (small\ amount * bias\ slope)} $$ $$ \small{New\ weight = 0 - (0.01)*(-119.7)} $$ $$ \small{New\ bias = 0 - (0.01)*(-34.3)} $$ $$ \small{New\ weight = 1.2} $$ $$ \small{New\ bias = 0.34} $$

משתמשים במשקל ובשיפוי החדשים כדי לחשב את האובדן וחוזר חלילה. אחרי שמשלימים את התהליך בשש חזרות, מקבלים את המשקלים, ההטיות והפסדים הבאים:

איטרציה משקל הטיה אובדן (MSE)
1 0 0 303.71
2 1.2 0.34 170.67
3 2.75 0.59 67.3
4 3.17 0.72 50.63
5 3.47 0.82 42.1
6 3.68 0.9 37.74

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

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

התכנסות של מודלים ועקומות אובדן

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

איור 13. תרשים של עקומת אובדן שבו מוצגת ירידה חדה ואז ירידה מתונה.

איור 13. עקומת אובדן שמראה את המודל מתכנס סביב סימן האיטרציה ה-1,000.

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

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

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

בתרשים הבא אפשר לראות שבסביבות האיטרציה השנייה המודל לא יעשה תחזיות טובות בגלל כמות ההפסד הגבוהה.

איור 14. עקומת אובדן ותרשים תואם של המודל, שמטה את עצמו מהנקודות על הגרף.

איור 14. עקומת אובדן ותמונת מצב של המודל בתחילת תהליך האימון.

בסביבות האיטרציה ה-400, אפשר לראות שהירידה בגרדינט מצאה את המשקל וההטיה שמניבים מודל טוב יותר.

איור 15. עקומת אובדן והתרשים התואם של המודל, שמחבר בין נקודות הנתונים אבל לא בזווית האופטימלית.

איור 15. עקומת אובדן ותמונת מצב של מודל באמצע האימון.

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

איור 16. עקומת אובדן וגרף תואם של המודל, שמתאים היטב לנתונים.

איור 16. עקומת אובדן ותמונת מצב של המודל לקראת סוף תהליך האימון.

תרגול: בדיקת ההבנה

מה התפקיד של ירידה בגרדינט ברגרסיה לינארית?
ירידה בגרדינט היא תהליך איטרטיבי שמוצא את המשקלים וההטיות הטובים ביותר שממזערים את האובדן.
ירידה בגרדינט עוזרת לקבוע איזה סוג אובדן יש להשתמש בו כשמאמנים מודל, למשל L1 או L2.
ירידה בגרדינט לא מעורבת בבחירת פונקציית אובדן (loss) לאימון המודל.
ירידה בגרדינט מסירה ערכים חריגים ממערך הנתונים כדי לעזור למודל לחזות טוב יותר.
ירידה בגרדינט לא משנה את מערך הנתונים.

פונקציות קונצ'וקסיות ופונקציות מתכנסות

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

אם נציג בתרשים את פני השטח של אובדן המודל עם מאפיין אחד, נוכל לראות את הצורה הקמורה שלו. זוהי פני השטח של אובדן נתוני המאגר של מייל לגלון ששימש בדוגמאות הקודמות. המשקל נמצא בציר ה-X, ההטיה נמצאת בציר ה-Y והאובדן נמצא בציר ה-Z:

איור 17. תרשים תלת-ממדי של פני השטח של האובדן.

איור 17. פני השטח של האובדן שמוצגת בו הצורה הקמורה שלו.

בדוגמה הזו, משקל של -5.44 וסטייה רגילה של 35.94 מניבים את האובדן הנמוך ביותר, 5.54:

איור 18. גרף תלת-ממדי של פני השטח של האובדן, עם (-5.44, 35.94, 5.54) בתחתית.

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

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

איור 19. פני שטח של אובדן 3-D קמור עם נקודות של ירידה בגרדינט שנע לכיוון הנקודה הנמוכה ביותר.

איור 19. תרשים אובדן שבו מוצגות נקודות של ירידה בגרדינט שמפסיקות בנקודה הנמוכה ביותר בתרשים.

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

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

בעזרת ערכי המשקל וההטיה שמניבים את האובדן הנמוך ביותר – במקרה הזה משקל של -5.44 והטיה של 35.94 – אפשר ליצור תרשים של המודל כדי לראות עד כמה הוא מתאים לנתונים:

איור 20. תרשים של קילוגרמים באלפים לעומת מיילים לגלון, עם המודל שתואמת לנתונים.

איור 20. מודל שמוצג בתרשים באמצעות ערכי המשקל וההטיה שמניבים את האובדן הנמוך ביותר.

זהו המודל הטוב ביותר למערך הנתונים הזה, כי אף ערך אחר של משקל ונטייה לא מניב מודל עם אובדן נמוך יותר.