רגרסיה לינארית ללימוד מכונה


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

הבסיס

הקדמה

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

  • T - איכות ביצוע המשימה ע"י המכונה,
  • P - שאותה נמדוד לפי הגדרת המשימה,
  • E - תשתפר ככל שהמכונה תקבל יותר נסיון.

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

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

שני סוגי הלמידה

ישנם שני סוגים של למידת מכונה,

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

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

למידה מפוקחת

למידה מפוקחת מתחלקת לשניים,

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

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

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

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

המודל

לאחר שהכרנו את הצורות השונות של למידת המכונה, כעת נבחן את המודל של התהליך ללימוד מכונה,



  1. Training set - אם הצלחתם להבין מהכתב הלא ברור שלי, השלב הראשון בבניית תהליך ל"מ (אקצר מכאן לימוד מכונה כך) הוא לאגד סט של דוגמאות, שאחריו ההליך יתחקה. הבנוי כך,
    מחיר במיליונים (y) מ"ר (x)
    1.0 10
    1.1 19
    2.0 23
    0.9 24
    1.8 36
    2.4 39
    1.3 43
    2.2 44
    3.0 50
    ומורכב מהרכיבים,
    • m - מספר הדוגמאות בסט, לדוגמא במקרה שלנו, 10.
    • x - הקלט, שעל בסיסו המודל יחזה את הפלט, לדוגמא במקרה שלנו, נתון המ"ר. אמנם בדוגמא זו קיים רק אחד, אך יכולים להיות נתוני קלט רבים, הנקראים גם features.
    • y - הפלט, לדוגמא במקרה שלנו, נתון המ"ר.
    במידה ונרצה להתייחס לדוגמא ספציפית מהסט נעשה זאת על ידי,

    כך שבמקום i נציב את אינדקס השורה, המתחיל מ1. עבור x באינדקס 1 נקבל 10, עבור 2, 19, ועבור y באינקס 1, 1.0.

  2. Learning algorithm - אלגוריתם הלמידה, המנתח את הTraining set ועל בסיסו מייצר Hypothesis. שהינה,

  3. Hypothesis - או בעברית, ההשערה, המיוצגת על ידי האות h, הינה השערה הנוצרת ע"י אלגוריתם הלמידה, אודות הקשר בין x , לy.
    • לאחר בניית מודל ההשערה על ידי אלגוריתם הלמידה, נזין למכונה קלט, והיא תחזיר לנו את הפלט הצפוי ע"ב אותו המודל.
    • לדוגמא, במקרה הבתים, אלגוריתם הלמידה מייצר השערה אודות הקשר בין גודל הדירה למחירה.
    • שימוש בהליך ל"מ הינו בבסיסו מימוש של מודל השערה על קלט כלשהו. ככל שאלגוריתם הלמידה יהיה מתוכנן טוב יותר, ההשערה תהיה קרובה יותר לייצוג המציאות, והנתונים הנגזרים ממנה - למציאות.

ההשערה

השערה כפונקצייה לינארית

אחת הדרכים לייצג את h היא כפונקצייה לינארית,



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

פונקציית העלות

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



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



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



  1. נקח x של דוגמא מסט האימונים, נזין אותו לפונקציית ההשערה, h, ונבדוק מה ההפרש המרובע בין התוצאה מהפונקצייה לבין תוצאת האמת מסט הדוגמאות, y.
  2. נבצע פעולה זו עבור כל דוגמא מסט הדוגמאות, ונסכום את התוצאה. שכן i מאותחל כ1, עד לm.
  3. נחלק את הביטוי במספר האיברים בסט הדוגמאות, m, כפול שניים. החילוק בשניים יעשה את המתמטיקה קדימה קצת יותר פשוטה, ואילו החילוק בm יעשה על מנת לקבל את הדיפרנציאל הממוצע.

אל המינימום ומעבר לו

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



כלומר, הגדרת פונקציית העלות כJ, המקבלת את θ0 וθ1 כפרמטרים. אך כיצד נמצא ערך מינימלי לפונקצייה המקבלת שני פרמטרים? קודם כל, נבין איך בכלל הפונקצייה הזו תראה בייצוג גרפי,



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



רוב הזמן יהיה יותר פשוט לעבוד עם ייצוג זה, המתפקד בפועל כמו מפת גבהים, ששמו הוא contour plot. ללימוד קריאת מפת גובה אני ממליץ יציאה לקצונת קמ"נים. נוכל לראות בשני התרשימים שעבור הפונקצייה המוצגת המינימום הינו בערך כשθ0 היא 1.75 וθ1 היא -2. ולכן אלו הינם האידיאליים להצבה בh. עכשיו נותר להבין כיצד נמצא את אותו המינמום של פונקצייה הלוקחת שני פרמטרים בצורה מתמטית. אחת הדרכים היא,


ירידה במדרון

ערבות רומניה

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



פתרון אחד לבעיה, יכול להיות,

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

פתרון זה, הינו הבסיס לאלגוריתם הGradient descent או בעברית אלגוריתם הירידה במדרון, בו נשתמש למציאת המינימום.

איך?

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



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

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

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

יישום מתמטי

הנוסחא

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



נעשה זאת ע"י שימוש בנוסחא,



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

  1. הסימן := מסמל בביטוי מתמטי כי הערך החדש של θj, יוגדר כערך הנמצא מימין. כמו שפעולת ה= עובדת ברוב שפות התכנות. כלומר, זהו יהיה הערך שבו θj תהיה בצעד הבא. מימין לסימן, נגדיר את הערך החדש של θj כערך הנוכחי שלה, פחות,

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

  3. כיוון הירידה, היתקבל מגזירת פונקציית העלות J, לפי θj, או במילים אחרות, לקיחת את הפונקצייה, וגזירתה כאילו שθj הוא הx, והצבה של θ0,θ1 באותה הנגזרת. לדוגמא אם תינתן לי הפונקצייה θ0+θ1x, פונקציית העלות שלה תהיה,

כעבור ארבעה חודשים

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




אין תגובות:

הוסף רשומת תגובה