Backpropagation הוא אלגוריתם האימון הנפוץ ביותר לרשתות נוירונים. היא מאפשרת לבצע ירידה בגרדינט ברשתות נוירונים מרובות שכבות. ספריות רבות של קוד למידת מכונה (כמו Keras) מטפלות בהתפשטות לאחור באופן אוטומטי, כך שאין צורך לבצע בעצמכם את החישובים הבסיסיים. בסרטון הבא מוסבר באופן קונספטואלי איך פועלת החזרה לאחור:
שיטות מומלצות לאימון רשתות נוירונים
בקטע הזה מוסבר על מקרי כשל בהפצה האחורית והדרך הנפוצה ביותר להסדיר רשת נוירונים.
שינויים הדרגתיים בצבע שמתרחקים
ההדרגתיות של השכבות התחתונות של רשת הנוירונים (השכבות שקרובות יותר לשכבת הקלט) יכולות להיות קטנות מאוד. ברשתות עמוקות (רשתות עם יותר משכבה מוסתרת אחת), חישוב ההדרגתיות האלו עשוי לכלול שימוש במכפלה של מונחים קטנים רבים.
כשערכי העקומה מתקרבים ל-0 בשכבות התחתונות, העקומות "נעלמות". שכבות עם הדרגה נעלמת מאומנות לאט מאוד או לא מתקיימות בכלל.
פונקציית ההפעלה ReLU יכולה לעזור למנוע נטייה של שיפועים להיעלם.
הדרגתי ומתפוצץ
אם המשקלים ברשת גדולים מאוד, הנגזרות של השכבות התחתונות כוללות מוצרים של מונחים רבים גדולים. במקרה כזה, יכולים להיווצר גרדיאנטים מתפוצצים: גרדיאנטים שמתרחבים יותר מדי ולא מתכנסים.
נורמליזציה באצווה יכולה לעזור למנוע התפרצות של שיפועים, וכך גם הפחתת קצב הלמידה.
יחידות ReLU מושבתות
אם הסכום המשוקלל של יחידת ReLU יורד מתחת לאפס, יחידת ReLU עלולה להיתקע. הפלט שלו הוא 0, והוא לא תורם לתוצאה של הרשת, וגם לא ניתן יותר להעביר גרדיאנטים דרכו במהלך החזרה לאחור. אם מנתקים את מקור הגרדיאנטים, יכול להיות שהקלט ל-ReLU לא ישתנה מספיק כדי להחזיר את הסכום המשוקלל מעל 0.
הפחתת קצב הלמידה יכולה למנוע מיחידות של ReLU מוות.
רגולריזציה של Dropout
יש עוד סוג של רגולריזציה, שנקרא רגולריזציית נשירה, ששימושי לרשתות נוירונים. האופן שבו היא פועלת הוא על ידי 'השמטת' הפעלות של יחידות ברשת באופן אקראי בשלב אחד של שיפוע. ככל שמספר הנתונים שהמערכת משליכה גדול יותר, כך רגולריזציית הנתונים חזקה יותר:
- 0.0 = ללא רגולריזציה של dropout.
- 1.0 = השמטת כל הצמתים. המודל לא לומד כלום.
- ערכים בין 0.0 ל-1.0 = מועילים יותר.