מבוא ללמידת מכונה

·

6 דקות קריאה

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

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

כל התוכן של הפוסט הזה מבוסס על הקורס הנהדר של Andrew Ng

מה זה למידת מכונה

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

אחד הציטוטים הטובים שאני מכיר שמסביר מה זה למידה מכונה הוא של Arthur Samuel

Field of study that gives computers the ability to learn without being explicitly programmed

Arthur Samuel

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

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

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

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

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

  • למידה מפוקחת - supervised learning

  • למידה לא מפוקחת - unsupervised learning

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

בואו נסתכל על כל אחת מהם

למידה מפוקחת - Supervised Learning

באופן כללי למידה מפוקחת זוהי קבוצה של אלגוריתמים אשר מטרתם היא להמיר קלט X לפלט Y.
אנחנו נותנים לאלגוריתם שלנו אוסף של שאלות (קלטים) עם "תשובות נכונות" (פלטים) כדי שהוא יוכל ללמוד מהן.
כלומר אנחנו נותנים לו אוסף של זוגות X עם ה-Y המתאים להם.

דוגמאות

בואו נסתכל על כמה דוגמאות כלליות כדי להבין את הכוונה שלנו:

  • מודל לפילטור ספאם - במקרה הזה אנחנו נותנים למודל שלנו אימייל שקיבלנו הוא צריך להחליט אם האימייל הזה הוא ספאם או לא (0 או 1).

  • זיהוי דיבור - כאן הקלט שלנו הוא קובץ שמע כלשהו (audio) והפלט הוא התמלול.

  • אופציה דומה היא תרגום בין שפה (אנגלית לדוגמה) לשפה אחרת (עברית).

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

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

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

בכל הדוגמאות הללו המודלים מאומנים על זוגות של מידע מסווג. כלומר זוגות של X ו-Y שאנחנו כבר יודעים שהם מתאימים (תמונה של שבב והאם הוא פגום או לא, הקלטה והתמלול המתאים לה וכו'), ואז לפיהם המודל ידע לקבל החלטה גם על קלט שהוא לא ראה לפני.

רגרסיה - Regression

אחד המודלים מסוג supervised learning הוא מודל מסוג רגרסיה.
כדי להבין אותו טוב בואו נסתכל על מודל לחיזוי מחירי בתים

תחזית של מחירי בתים

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

אוסף של מחירי בתים לפי הגודל שלהם
מידע של מחירי בתים לפי גודל

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

תחזית לינארית של מחיר בית
תחזית לינארית של מחיר בית

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

השוואה בין תצפית לינארית לצפית לא לינארית
השוואה בין תצפית לינארית לצפית לא לינארית

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

סיווג - Classification

מודל מסוג אחר שהוא supervised learning הוא מודל קלסיפיקציה.
המודלים הללו מנסים לסווג קלט מסוגים לקבוצה.

סיווג של גידולים

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

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

| היקף הגידול | אבחנה | | --- | --- | | 2 | 0 | | 5 | 1 | | 1 | 0 | | 7 | 1 |
המידע שאספנו על גידולים

במקרה הזה 0 זה אומר שהגידול הוא לא סרטני ו-1 אומר שכן.
אנחנו יכולים להציג את זה כגרף ככה:

גרף המייצג את המידע שאספנו

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

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

לא רק בינארי

את הגרף למעלה אנחנו יכולים להמיר לגרף חד מימדים עם סימון כחול עבור לא סרטני וסימון אדום עבור סרטני

גרף חד מימדי של מודל קלסיפיקציה

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

גרף חד מימדי עם יותר מקטגוריה אחת

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

יותר מקלט אחד

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

נתונים בעלי שני מימדים עבור קלסיפיקציה

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

ויזואליזציה של הלוגיקה של המודל
סיכום Supervised Learning

במקרה הזה המודל שלנו לומד "מדוגמאות נכונות"

יש לנו שני סוגים של supervised learning:

  • רגרסיה

    • חוזה מספר (הפלט)

    • הפלט הוא מרחב אינסופי של אפשרויות

  • סיווג

    • חוזה שיוך של תצפית לקבוצה

    • הפלט הוא מרחב יחסית קטן של אופציות