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

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

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

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

  2. מצאו את הכיוון של הזזת המשקולות וההטיה שמפחיתות את הירידה.

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

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

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

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

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

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

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

לירה 2000 ש"ח (תכונה) מיילים לגלון (תווית)
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)} $

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

    אם פותרים את המשוואה הזו עם משקל ונטייה שווים לאפס, מקבלים שיפוע של -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 חזרות, אפשר להיות בטוחים כמעט בוודאות שהמודל הגיע לפתרון.

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

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

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

איור 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. מודל שמוצג בתרשים באמצעות ערכי המשקל וההטיה שמניבים את האובדן הנמוך ביותר.

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