הכללה (generalization): היכולת של המודל להפיק תוצאות טובות גם על דגימות אשר לא הופיעו במדגם.
Overfitting (התאמת יתר): כאשר המודל לומד מאפיינים אשר מופיעים רק במדגם ולא מייצגים את הפילוג האמיתי.
Overfitting פוגע ביכולת ההכללה.
הערכת הביצועים / הציון של חזאי (יכולת הכללה):
הערכת המחיר המתקבל בעבור חזאי נתון על הפילוג האמיתי.
יכולת הביטוי (expressiveness) של מודל:
היכולת של מודל פרמטרי לייצג מגוון רחב של מודלים.
Hyper parameters:
הפרמטרים שמשפיעים על המודל או האלגוריתם, אך אינם חלק מהפרמטרים שעליהם אנו מבצעים את האופטימיזציה.
דוגמאות:
סדר הפולינום שבו אנו משתמשים
גודל הצעד η באלגוריתם ה gradient descent.
פרמטרים אשר קובעים את המבנה של רשת נוירונים.
סדר המודל: גודל ששולט ביכולת הביטוי של המודל הפרמטרי.
הערכת ביצועים בעזרת test set (סט בחן)
לרוב, ניתן לשערך אך את ביצועיו של חזאי מסויים על ידי שימוש בתוחלת אמפירית ומדגם נוסף.
לשם כך נפצל את המודל שני תתי מדגמים:
Train set (סט אימון): משמש ללימוד/בניית החזאי.
Test set (סט בחן): משמש להערכת ביצועים.
גודלו של ה- test set
סט בוחן גדול מאפשר להעריך את ביצועי האלגוריתם בצורה מדוייקת.
במידה ומספר הדגימות מוגבל, נפריש דוגמאות מסט האימון.
מקובל להשתמש בפיצול של 80% train ו- 20% test.
פירוק שגיאת החיזוי
בקורס זה נציג שני פירוקים נפוצים של שגיאת החיזוי בבעיות supervised learning.
Approximation-estimation decomposition
Noise - ה"רעש" של התויות: השגיאה שהחזאי האופטימאלי צפוי לעשות. שגיאה זו נובעת מהאקראיות של התויות y.
Approximation error - שגיאת קירוב: נובעת מבחירת משפחה של מודלים (לרוב למודל פרמטרי), ומוגדרת לפי ההבדל בין המודל האופטימאלי h∗ לבין המודל הפרמטרי האופטימאלי h∗(⋅,θ).
Estimation error - שגיאת השיערוך: נובעת מהשימוש במדגם כתחליף לפילוג האמיתי וחוסר היכולת שלנו למצוא את המודל הפרמטרי האופטימאלי. שגיאה זו נובעת מההבדל בין המודל הפרמטרי האופטימאלי h∗(⋅,θ) למודל הפרמטרי המשוערך על סמך המדגם hD∗(⋅,θ).
Approximation-estimation decomposition
Bias-variance decomposition
פירוק זה מתייחס למקרים שבהם פונקציית המחיר הינה MSE.
המדגם D שאיתו אנו עובדים הוא אקראי (משום שהוא אוסף של דגימות אקראיות) ולכן גם החזאי hD שאותו נייצר על סמך המדגם הוא אקראי.
נגדיר את החזאי הממוצע hˉ כחזאי המתקבל כאשר לוקחים תוחלת על החזאים המיוצרים על ידי אלגוריתם מסויים על פני כל המדגמים האפשריים.
hˉ(x)=ED[hD(x)]
הערה: נשתמש בסימון ED בכדי לציין תוחלת על פני המדגמים האפשריים. (תוחלת ללא סימון E תהיה לפי x ו y).
Bias-variance decomposition
בעבור המקרה של MSE אנו יודעים כי החזאי האופטימאלי הינו: h∗(x)=E[y∣x]. ניתן לפרק התוחלת על שגיאת ה MSE של אלגוריתם נתון באופן הבא:
variance מודד את השונות של התוצאות החיזוי המתקבלות סביב החזאי הממוצע. התוחלת היא על המדגמים שניתן לקבל וגם על פני x. זהו האיבר היחיד בפירוק אשר תלוי בפילוג של המדגם.
ה- bias מודד את ההפרש הריבועי בין החיזוי של החזאי הממוצע לבין החיזוי של החזאי האופטימאלי.
ה noise מודד את השגיאה הריבועית המתקבלת מהחזאי האופטימאלי (אשר נובעת מהאקראיות של y).
אילוסטרציה של bias ו- variance:
Tradeoffs
מודל בעל יכולת ביטוי גבוהה:
שגיאת קירוב / bias נמוכה
שגיאת שיערוך / variance גבוהה
מודל בעל יכולת ביטוי נמוכה:
שגיאת קירוב / bias גבוהה
שגיאת שיערוך / variance נמוכה
שימוש ב validataion set לקביעת hyper-parameters
ה hyper-parameters אינם חלק מבעיית האופטימיזציה.
לרוב לנאלץ לקבוע את הפרמטרים האלו בשיטה של ניסוי וטעיה.
מכיוון שאנו לא יכולים להשתמש ב test set בכדי לבנות את המודל שלנו, יש צורך במדגם נפרד שעליו נוכל לבחון את ביצועי המודל בעבור ערכים שונים של ה hyper-parameters.
דבר זה יתבצע ע"י חלוקה נוספת של ה- train set. למדגם הנוסף נקרא validation set.
הערה: לעיתים קרובות, לאחר קביעת ה- hyper-parmaeters, נאחד חזרה את ה- validation set וה- train set ונאמן מחדש את המודל על המדגם המאוחד (כל הדגימות מלבד ה test set).
רגולריזציה
דרך להקטין את ה overfitting של המודל.
מטרת איבר הרגולריזציה הינה להשתמש בידע מוקדם שיש לנו על אופי הבעיה לצורך בחירת המודל.
כאשר λ אשר קובע את המשקל שאנו מעוניינים לתת לרגולריזציה.
רגולריזציות נפוצות:
l1 - אשר מוסיפה איבר רגולריזציה של g(θ)=∥θ∥1.
l2 - (Tikhonov regularizaion) אשר מוסיפה איבר רגולריזציה של g(θ)=∥θ∥22.
רגולריזציות אלו מנסות לשמור את הפרמטריים כמה שיותר קטנים.
המוטיבציה מאחורי הרצון לשמור את הפרמטרים קטנים הינה העובדה שבמרבית המודלים ככל שהפרמטרים קטנים יותר המודל הנלמד יהיה בעל נגזרות קטנות יותר ולכן הוא ישתנה לאט יותר ופחות "ישתולל".
הערה:λ הוא hyper-parameter של האלגוריתם שאותו יש לקבוע בעזרת ה validation set.
דוגמא: בעיות LLS עם רגולריזציה
Ridge regression: LLS + l2 regularization
θ=θargminN1i∑(x(i)⊤θ−y(i))2+λ∥θ∥22
גם לבעיה זו יש פתרון סגור והוא נתון על ידי:
θ∗=(X⊤X+λI)−1X⊤y
אנו נראה את הפיתוח של פתרון זה בתרגיל 3.2.
LASSO: LLS + l1 regularization
(LASSO = Linear Absolute Shrinkage and Selection Opperator)
θ=θargminN1i∑(x(i)⊤θ−y(i))2+λ∥θ∥1
לבעיה זו אין פתרון סגור ויש צורך להשתמש באלגוריתמים איטרטיביים כגון gradient descent.
תרגיל 3.1 - Bias-variance decomposition
סעיף 1:
הראו כי בעבור משתנה אקראי כל שהוא x וקבוע a ניתן לפרק את התוחלת של המרחק הריבועי בין a לבין a באופן הבא:
E[(x−a)2]==Var(x)E[(x−E[x])2]+(biasE[x]−a)2
פתרון:
זהות זו היא הכללה של הקשר הבא למשתנים אקראיים:
נוכיח את הזהות על ידי הוספה והחסרה של E[x] בתוך הסוגריים:
האיבר הראשון הוא למעשה השגיאה הנובעת מההבדל בין החיזוי של המודל האידאלי לבין החיזוי של מודל ספציפי שנוצר ממדגם מסויים. נשים לב שאיבר זה לא תלוי בכלל בפילוג של y.
האיבר השני בביטוי שקיבלנו הוא השגיאה של החזאי האופטימאלי והוא נובע מחוסר היכולת לחזות את y במדוייק. נשים לב כי איבר זה לא תלוי כלל במדגם.
שלב שני
על פי ההדרכה נפרק את התוחלת הבאה על ידי החלפת סדר התוחלות ושימוש בזהות מסעיף 1 על התוחלת לפי D:
ניתן כמובן "לבלוע" את הN בתוך הפרמטר λ, אך שינוי זה מצריך להתאים את הפרמטר λ לגודל המדגם ולעדכנו כאשר גודל המדגם משתנה (נגיד במקרה בו מפרישים חלק מהמדגם ל validation set).
2) נסתכל כעת על וריאציה של Ridge regression שבה אנו נותנים משקל שונה wi לרגולריזציה של כל פרמטר:
i=1∑Dwiθi2
(כאן D הוא מספר הפרמטרים של המודל).
הדרכה: הגדירו את מטריצת המשקלים W=diag({wi}), רשמו את הבעיה בכתיב מטריצי ופתרו אותה בדומה לסעיף הקודם.
פתרון:
בעיית האופטימיזציה כעת תהיה
θ∗=θargminN1∥Xθ−y∥22+λi=1∑Dwiθi2
נפעל על פי ההדרכה. נגדיר את המטריצה:
W=⎣⎢⎢⎢⎢⎡w10⋮00w2……⋱00⋮wD⎦⎥⎥⎥⎥⎤
בעזרת מטריצה זו ניתן לרשום את בעיית האופטימיזציה באופן הבא:
3) נסתכל כעת על אלגוריתם כללי שבו הפרמטרים של המודל נקבעים על פי בעיית האופטימיזציה הבאה
θ∗=θargminf(θ)
רשמו את בעיות האופטימיזציה המתקבלות לאחר הוספת איבר רגולריזציה מסוג l1 ו l2.
פתרון:
בעיית האופטימיזציה בתוספת רגולריזציית l2 תהיה:
θ∗=θargminf(θ)+λ∥θ∥22
בעיית האופטימיזציה בתוספת רגולריזציית l1 תהיה:
θ∗=θargminf(θ)+λ∥θ∥1
4) רשמו את כלל העדכון של אלגוריתם הגרדיאנט בעבור כל אחד משני הרגולריזציות:
כלל העדכון של gradient descent הינו:
θ(t+1)=θ(t)−η∇θg(θ(t))
כאשר g(θ) היא פונקציית המטרה של בעיית האפטימזציה.
בעבור רגולריזציית ה l2 נקבל:
θ(t+1)=θ(t)−η∇θf(θ(t))−2ηλθ(t)
בעבור רגולריזציית ה l1 נקבל:
θ(t+1)=θ(t)−η∇θf(θ(t))−2ηλ⋅sign(θ(t))
כאשר פונקציית הsign פועלת איבר איבר.
5) על סמך ההבדל בין שני כללי העדכון, הסבירו מה הבדל בין האופן שבו שני הרגולריזציות מנסות להקטין את הפרמטרים.
שני האיברים שנוספו לכלל העדכון מנסים בכל צעד להקטין את וקטור הפרמטריים ולקרב אותו ל-0.
ברגולרזציית l2 האיבר המתקבל פרופורציוני לגודל של האיברים בוקטור הפרמטרים.
ככל שפרמטר מסויים גדול יותר כך הרגולריזציה תתאמץ יותר להקטין אותו וההשפעה על הפרמטרים הקטנים תהיה פחותה.
ברגולריזציית l1 האיבר המתקבל הוא קבוע (עד כדי סימן).
רגולריזציה זו פועלת להקטין את כל האיברים (במידה שווה) ללא קשר לגודלם.
6) על סמך שני כללי העדכון הסבירו מדוע רגולריזציית l1 נוטה יותר לאפס פרמטרים מאשר רגולריזציית l2. (הניחו שצעדי העדכון קטנים מאד)
כפי שציינו בסעיף הקודם, רגולריזציית ה l2 תשפיע באופן מועט יחסית על האיברים הקטנים ולא תתאמץ להקטין אותם ובעיקר תפעל להקטין את האיברים הגדולים. מנגד, רגולריזציית ה l1 תמשיך ולנסות להקטין את האיברים כל עוד הם שונים מ-0 ולכן בפועל היא תטה לאפס יותר איברים.
הערה: בפועל בגלל שגודלו של איבר הרגולריזציה בגרדיאנט של l1 קבוע הוא יקטין את האיברים לערכים קרובים ל-0 ואז יתחיל להתנדנד סביב ה-0.
K-fold cross validation
כשהמדגם קטן, לא ניתן להקצות הרבה דגימות לטובת ה validation set.
במצב כזה, הערכת הביצועים יכולה להיות לא מדוייקת ולפגוע בבחירה של ה hyper-parmeters.
שיטת ה K-fold cross validataion מציעה שיטה לשפר הדיוק על הערכת הביצועים על ידי מיצוע על כמה validation sets.
בשיטה זו נחלק את ה train set שלנו ל K קבוצות ונבצע את הערכת הביצויים K פעמים באופן הבא:
בכל פעם נבחר (על פי הסדר) אחת הקבוצות לשמש כ validation set הנוכחי.
בניה של מודל על סמך K−1 הקבוצות האחרות
חישוב הביצועים של המודל על סמך הקבוצה שנבחרה.
הביצועיים הכוללים יהיו הממוצע של התוצאות אשר התקבלו ב K החזרות.
גדולים אופיינים ל K הינם בין 5 ל10.
להלן סכימה של החלוקה של המדגם בעבור בחירה של K=5 :
Leave-one-out cross validation
במקרים מסויימים (בעיקר כשאר ה train set מאד קטן) אנו נבחר לקחת את K להיות שווה למספר האיברים שב train set. במקרה זה גודלה של כל קבוצה יהיה 1. מקרה זה מוכנה לרוב Leave-one-out cross validation.
תרגיל 3.3 - בחירת סדר המודל
נתון המדגם הבא:
D={{6,4},{1,2},{4,5},{5,2}}
ננסה להתאים למדגם הנתון אחד משני מודלים: מודל לינארי מסדר 0 (פונקציה קבועה) או מסדר ראשון (פונקציה לינארית עם היסט). בתרגיל זה נבחן דרכים לקביעת סדר המודל.
נפצל את המדגם כך ששלושת הדגימות הראשונות יהיו הtrain set והאחרונה תהיה ה test set.
1) השתמשו ב LLS על מנת להתאים כל אחד משני המודלים המוצעים ל train set.
העריכו את ביצועי החזאי על פי שגיאת החיזוי המתקבל על הנקודה שב test set.
מי מהמודלים נותן ביצועים טובים יותר?
נחלק את המדגם ל train set ו test set:
Dtrain={{6,4},{1,2},{4,5}}Dtest={{5,2}}
סדר 0
מודל מסדר 0 (פונקציה קבועה) הוא כמובן מקרה מנוון של מודל לינארי עם מאפיין יחיד של φ(x)=1. במקרה זה אנו מצפים כי המודל אשר ימזער את השגיאה הריבועית יהיה פשוט פונקציה קבועה אשר שווה ל y הממוצע על ה train set. נראה כי זה אכן הפתרון המתקבל מתוך הפתרון הסגור. בעבור מודל זה המטריצה X והוקטור y יהיו:
X=[1,1,1]⊤,y=[4,2,5]⊤
הפרמטר האופטימאלי θ∗ יהיה:
θ∗=(X⊤X)−1X⊤y=N∑i=1Ny(i)=332
שגיאת החיזוי תהיה במקרה זה ∣2−332∣=132.
סדר ראשון
מודל זה הינו מודל לינארי עם המאפיינים:
φ1(x)=1,φ2(x)=x
המטריצה X והוקטור y יהיו:
X=⎣⎢⎡111614⎦⎥⎤y=[4,2,5]⊤
הפרמטרים האופטימאלים θ∗ יהיו:
θ∗=(X⊤X)−1X⊤y=[77,17]⊤/38
שגיאת החיזוי תהיה במקרה זה ∣3877+3817⋅5−2∣=2.263.
על סמך שיגאת החיזוי על ה test set נראה שהמודל מסדר 0 עדיף.
2) מדוע לא נרצה לבחור את סדר המודל על סמך ההשוואה שעשינו על ה test set?
משלב זה והלאה נשכח שביצענו את הערכת הביצועים על ה test set וננסה לקבוע את סדר המודל על סמך validation set.
תפקידו של ה test set הינו להעריך את ביצועי המודל הסופי לאחר שסיימנו את כל השלבים של בניית המודל כולל בחירת hyper parameters כגון סדר המודל.
כאשר אנו מקבלים החלטה כל שהיא או קובעים פרמטר כל שהוא על סמך ה test set אנו למעשה גורמים למודל שלנו להתחיל לעשות overfitting ל test set הספציפי שבידינו ולכן לא נוכל להשתמש בו יותר על מנת לקבל הערכה בלתי מוטית של ביצועי המודל שלנו.
3) הפרישו מתוך ה train set את הדגימה השלישית על מנת שתשמש כ validation set. התאימו כעת את שני המודלים ל train set החדש והעריכו את ביצועיהם על ה validation set.
נקצה את הדגימה השלישית במדגם לטובת ה validation set:
נתאים שוב את שני המודלים על סמך ה train set החדש ונעריך את שגיאת החיזוי על ה validation set:
סדר 0
X=[1,1]⊤,y=[4,2]⊤θ∗=N∑i=1Ny(i)=3
שגיאת החיזוי על ה validation set תהיה במקרה זה
∣3−5∣=2.
סדר ראשון
X=[1161]y=[4,2]⊤
הפרמטרים האופטימאלים θ∗ יהיו:
θ∗=(X⊤X)−1X⊤y=[8,2]⊤/5
שגיאת החיזוי על ה validation set תהיה במקרה זה
∣58+52⋅4−5∣=9/5.
כעת נראה כי דווקא המודל מסדר ראשון הוא המודל העדיף. מכיוון ש ה validation set שלנו במקרה זה קטן מאד הוא לא מאד מייצג.
סיכוי סביר שתוצאה זו התקבלה במקרה שעל הפילוג האמיתי דווקא המודל מסדר 0 יכליל יותר טוב.
4) במקום להשתמש ב validation set קבוע, השתמשו ב leave-one-out על מנת לבחור מבין שני המודלים.
נחזור על הבחירה של סדר המודל בעזרת leave-one-out cross validation.
במקרה זה אנו נחזור על החישוב של הסעיף הקודם 3 פעמים.
בכל פעם נבחר נקודה אחרת מה train set שתשמש כ validation set.
את הביצועים של כל אחד מהמודלים נחשב בתור הממוצע על שלושת החזרות.
סדר 0
Fold 1: θ∗=3.5. שיגאת חיזוי: 0.5
Fold 2: θ∗=4.5. שיגאת חיזוי: 2.5
Fold 3: θ∗=3. שיגאת חיזוי: 2
שגיאת חיזוי ממוצעת: 5/3
סדר ראשון
Fold 1: θ∗=[1,1]⊤. שיגאת חיזוי: 3
Fold 2: θ∗=[7,−0.5]⊤. שיגאת חיזוי: 4.5
Fold 3: θ∗=[1.6,0.4]⊤. שיגאת חיזוי: 1.8
שגיאת חיזוי ממוצעת: 3.1
על פי leave-one-out נראה שוב כי המודל מסדר 0 הוא העדיף.
מכיוון ששיטה זו לא מסתמכת על נקודה אחת לקביעת סדר המודל ישנו סיכוי טוב יותר שה hyper-parameters אשר נבחרים בשיטה זו יניבו מודל אשר מכליל בצורה טובה יותר.