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

התו הנכון (כלומר, הספרה שהכותב התכוון לכתוב) מופיע מעל כל תמונה. שימו לב שחלק מהתיוגים ה”נכונים” מעוררי ספק —למשל, התמונה השנייה משמאל: האם זו באמת ספרה 7, או שאולי בעצם 4?
? הערה:
מה זה MNIST בעצם?
כל מי שלומד למידת מכונה שומע מהר מאוד על מאגר הנתונים MNIST.
אבל מעטים יודעים מה ראשי התיבות האלה בכלל אומרים.
אז בדקנו בשבילכםה־M זה קיצור של Modified (כלומר גרסה מותאמת),
ו־NIST זה ראשי תיבות של National Institute of Standards and Technology – המכון הלאומי לתקנים וטכנולוגיה של ארה”ב.אז עכשיו אתם יודעים משהו שאפילו הרבה מומחי למידת מכונה לא יודעים!
בבעיות הנפוצות ביותר בלמידת מכונה, קיימת תשובה נכונה אחת בלבד בכל פעם. זה נכון גם במקרה של MNIST — אף על פי, כמו שאמרנו, שלעתים קשה לדעת מהי התשובה הנכונה. בבעיות מסוג זה, לא ייתכן שדוגמה שייכת למספר מחלקות בו־זמנית ולא ייתכן גם שהיא לא תשתייך לאף מחלקה. המטרה שלנו היא לפתח שיטת בינה מלאכותית שמקבלת קלט בדמות תמונה כמו אלו שמוצגות למעלה — ומחזירה אוטומטית את התווית הנכונה (מספר בין 0 ל־9).
? הערה:
איך לא לפתור את הבעיה
באופן עקרוני, ניתן היה לבנות מזהה ספרות אוטומטי על ידי כתיבת חוקים ידניים כמו:
אם הפיקסלים השחורים מופיעים בעיקר בצורת לולאה אחת — התווית היא 0
אם הפיקסלים השחורים יוצרים שתי לולאות מצטלבות — התווית היא 8
אם הפיקסלים השחורים מופיעים בעיקר כקו אנכי באמצע — התווית היא 1
וכן הלאה…
כך פותחו רוב שיטות הבינה המלאכותית בשנות ה־80 (מה שנקרא “מערכות מומחה”). אבל אפילו למשימה פשוטה כמו זיהוי ספרות, כתיבת חוקים כאלה היא משימה מתישה. למעשה, החוקים לדוגמה שמופיעים לעיל אינם מספיק מדויקים כדי שיהיה אפשר לממש אותם בתכנות — היינו צריכים להגדיר בצורה מדויקת מה זה “בעיקר”, “לולאה”, “קו”, “אמצע”, וכן הלאה.
ואפילו אם היינו משקיעים את כל המאמץ הזה, כנראה שהשיטה שהיינו מקבלים לא הייתה מוצלחת, משום שכפי שניתן לראות — הספרות הכתובות ביד אינן אחידות וכל כלל היה דורש עשרות יוצאי דופן.
שלושה סוגים של למידת מכונה
שורשיה של למידת המכונה נטועים בסטטיסטיקה — תחום שניתן לחשוב עליו כאמנות הפקת ידע מתוך נתונים. במיוחד שיטות כמו רגרסיה לינארית וסטטיסטיקה בייסיאנית, שתיהן בנות יותר מ-200 שנה (!), עדיין מהוות לב פועם בלמידת המכונה כיום. למידע נוסף והיסטוריה קצרה, ניתן לראות את ציר הזמן של למידת מכונה (בויקיפדיה).
את תחום למידת המכונה נוהגים לחלק לפי סוגי הבעיות שאותן מנסים לפתור. חלוקה גסה נראית כך:
למידה מונחית
ניתן לנו קלט — למשל, תמונה עם תמרור תנועה והמשימה היא לחזות את הפלט הנכון או התווית: איזה תמרור מופיע בתמונה (מהירות מותרת, עצור וכו’). במקרים הפשוטים ביותר, התשובות הן כן/לא (מה שמכונה בעיית סיווג בינארית.)
למידה לא מונחית
אין תוויות או תשובות נכונות. המטרה היא לחשוף את המבנה של הנתונים: למשל, לקבץ פריטים דומים לקבוצות (“אשכולות”) או לצמצם את המידע לכמה ממדים עיקריים. ויזואליזציה של נתונים נחשבת גם היא כסוג של למידה לא מונחית.
למידת חיזוק
משמשת בעיקר כאשר סוכן בינה מלאכותית (כמו רכב אוטונומי) פועל בתוך סביבה והמשוב שהוא מקבל על ההחלטות — חיובי או שלילי — מגיע בעיכוב. גם במשחקים שבהם ההכרעה מתקבלת רק בסיום, משתמשים בלמידת חיזוק.
הקטגוריות אינן מוחלטות ולעיתים חופפות ולכן קשה לעיתים לשייך שיטה מסוימת רק לסוג אחד. כך למשל, למידה חצי-מונחית, כשמה כן היא — משלבת בין למידה מונחית ולא מונחית.
הערה
סיווג
כשמדובר בלמידת מכונה, נתמקד בעיקר בלמידה מונחית, ובמיוחד במשימות סיווג. במשימת סיווג, אנו מקבלים קלט — למשל תמונה של תמרור תנועה — ומנסים להסיק את ה”מחלקה” שלו, למשל סוג התמרור (הגבלת מהירות 80 קמ”ש, מעבר חצייה, תמרור עצור וכו’).
דוגמאות נוספות למשימות סיווג כוללות:
זיהוי חשבונות מזויפים בטוויטר – הקלט כולל את רשימת העוקבים, קצב ההצטרפות שלהם וכו’, והמחלקה היא “אמיתי” או “מזויף”.
זיהוי ספרות בכתב יד – הקלט הוא תמונה, והמחלקה היא ספרה מ-0 עד 9.

בני אדם מלמדים מכונות: למידה מונחית
במקום לכתוב באופן ידני חוקים מדויקים שיבצעו את הסיווג, הרעיון בלמידת מכונה מונחית הוא לקחת מספר דוגמאות, לתייג כל אחת מהן בתווית הנכונה ולהשתמש בהן כדי “לאמן” שיטה של בינה מלאכותית שתזהה באופן אוטומטי את התווית הנכונה — עבור הדוגמאות שבאימון וגם (בתקווה) עבור תמונות חדשות. כמובן, נדרש לספק את התוויות הנכונות מראש ולכן זה נקרא למידה מונחית – המשתמש שמספק את התוויות משמש כ”מדריך”, שמכוון את האלגוריתם במהלך הלמידה עד שלבסוף הוא מסוגל להפיק את התשובות הנכונות בכוחות עצמו.
למידה מונחית משמשת לא רק למצבים של סיווג, אלא גם למצבים שבהם תוצאת החיזוי היא מספר.
דוגמאות לכך:
-
חיזוי מספר האנשים שילחצו על פרסומת של גוגל על בסיס תוכן הפרסומת והתנהגות המשתמשים בעבר
-
חיזוי מספר תאונות דרכים בהתבסס על תנאי הכביש והגבלת המהירות
-
חיזוי מחיר מכירה של נדל”ן על פי מיקום, גודל ומצב הנכס
משימות מסוג זה נקראות רגרסיה (Regression).
את/ה כנראה מזהה את המושג “רגרסיה ליניארית” — שיטה קלאסית שעדיין נפוצה מאוד לרגרסיה.
הערה
דוגמה
נניח שיש לנו מערך נתונים שמכיל מידע על מכירות דירות. לכל עסקת רכישה, יהיו לנו כמובן:
המחיר ששולם
הגודל של הדירה (במ”ר או בפיט מרובע – איך שנוח לך)
מספר חדרי השינה
שנת הבנייה
מצב הנכס (בסולם שנע בין “אסון” ל”מתוקתק”)
ניתן להשתמש בלמידת מכונה כדי לאמן מודל רגרסיה שיחזה את מחיר המכירה בהתבסס על המאפיינים האלה. דוגמא לכך ניתן למצוא באתר מדלן.

הסתייגות: זהירות עם האלגוריתם של למידת המכונה
יש כמה טעויות פוטנציאליות שחשוב לנו להזהיר אותך מהן. הן נובעות מהעובדה שאם לא תיישם את שיטות למידת המכונה בצורה זהירה, אתה עלול להיות בטוח מדי ביכולת הניבוי של המודל ואז להתאכזב כשהדיוק בפועל יהיה נמוך מהמצופה.
הדבר הראשון שצריך לזכור כדי להימנע מטעויות חמורות הוא לחלק את מערך הנתונים שלך לשני חלקים: נתוני אימון ונתוני בדיקה. בהתחלה, נאמן את האלגוריתם רק על נתוני האימון. זה ייתן לנו מודל או כלל שמנבא את הפלט (output) על סמך משתני הקלט (input). כדי לבדוק עד כמה אנחנו באמת טובים בניבוי – אי אפשר להסתמך על דיוק בתוך סט האימון עצמו.
גם אם המודל מדויק מאוד בסט האימון, זה לא מוכיח שהוא יודע להכליל לנתונים חדשים שלא ראה קודם. כאן נכנסים נתוני הבדיקה: נשתמש במודל המאומן כדי לחזות את הפלטים על סמך הקלטים שבסט הבדיקה ונשווה את התחזיות לפלטים האמיתיים (למשל, מחירי דירות עתידיים).
הערה
מותאם מדי מכדי להיות אמיתי! התרעת התאמת יתר
חשוב מאוד לזכור שהדיוק של מנבא שנלמד באמצעות למידת מכונה יכול להיות שונה מאוד בין נתוני האימון לנתוני הבדיקה.
זו התופעה שנקראת התאמת יתר והרבה מאוד מחקר בלמידת מכונה מתמקד בדרכים להימנע ממנה.
באופן אינטואיטיבי, התאמת יתר זה לנסות להיות חכם מדי. לדוגמה, כשאתה מנסה לנבא את ההצלחה של שיר חדש של זמר מוכר, אתה מסתכל על ההיסטוריה של השירים הקודמים שלו וממציא כלל כמו: “אם השיר עוסק באהבה ויש בו פזמון קליט – הוא ייכנס לטופ 20”. אבל אולי היו שני שירי אהבה עם פזמון קליט שלא נכנסו לרשימה, אז אתה מוסיף כלל נוסף: ”…חוץ אם מוזכרות המילים שבדיה או יוגה”. הכלל שלך אולי יתאים בצורה מושלמת לנתוני העבר, אבל עלול דווקא לפגוע ביכולת החיזוי על שירים חדשים.
שיטות של למידת מכונה נוטות במיוחד לבעיה של התאמת יתר, מכיוון שהן מסוגלות לנסות כמות עצומה של “חוקים” שונים עד שהן מוצאות חוק שמתאים בצורה מושלמת לנתוני האימון. במיוחד, שיטות שהן גמישות מאוד ויכולות להתאים כמעט לכל תבנית בנתונים, עלולות ללקות בהתאמת יתר אם אין כמות עצומה של נתונים. לדוגמה, בהשוואה למודלים מצומצמים כמו רגרסיה ליניארית, שיכולה להפיק מודל פשוט יחסית, שיטות כמו רשתות נוירונים דורשות לרוב כמות עצומה של נתונים כדי להצליח לתת חיזוי אמין ולא להיכשל בהתאמת יתר.
ללמוד כיצד להימנע מהתאמת יתר ולבחור מודל שאינו מצומצם מדי אך גם לא גמיש מדי — זו אחת מהמיומנויות החשובות ביותר של מדען נתונים.
למידה ללא מורה: למידה בלתי מונחית
למעלה דיברנו על למידה מונחית, שבה יש תשובות נכונות זמינות והמשימה של אלגוריתם הלמידה היא למצוא מודל שמנבא את התשובות על בסיס נתוני הקלט.
בלמידה בלתי מונחית, לא מסופקות תשובות נכונות. הדבר הופך את הסיטואציה לשונה לגמרי, משום שאי אפשר לבנות את המודל על ידי התאמה לתשובות נכונות בנתוני האימון. זה גם מסבך את הערכת הביצועים, כי אי אפשר לבדוק האם המודל שנלמד “עושה עבודה טובה”.
שיטות למידה בלתי מונחית מנסות בדרך כלל ללמוד סוג כלשהו של “מבנה” שקיים בנתונים. זה יכול לכלול למשל ויזואליזציה, שבה פריטים דומים ממוקמים קרוב זה לזה ופריטים שונים ממוקמים רחוק. זה יכול גם לכלול אשכולות — תהליך שבו אנו משתמשים בנתונים כדי לזהות קבוצות או “אשכולות” של פריטים שדומים זה לזה, אך שונים מפריטים באשכולות אחרים.
הערה
דוגמה
כדוגמה קונקרטית, רשתות סופרמרקטים אוספות נתונים על התנהגות הקנייה של לקוחותיהן (לכן יש לכם את כל כרטיסי המועדון האלה). כדי להבין טוב יותר את הלקוחות, החנות יכולה או ליצור ויזואליזציה של הנתונים באמצעות גרף שבו כל לקוח מיוצג כנקודה, ולקוחות שנוהגים לקנות את אותם מוצרים ימוקמו קרוב זה לזה, בעוד שלקוחות שקונים מוצרים שונים יופיעו רחוק יותר זה מזה. לחלופין, החנות יכולה להחיל אשכולות (clustering) כדי לזהות קבוצות של לקוחות, כמו “חובבי אוכל בריא בתקציב נמוך”, “חובבי דגים יוקרתיים”, “פיצה וקולה שישה ימים בשבוע”, וכן הלאה.
שימו לב ששיטת הלמידה החישובית רק תחלק את הלקוחות לאשכולות – אבל לא תעניק להם שמות כמו “חובבי דגים” וכדומה. המשימה הזו תישאר בידי המשתמש.
עוד דוגמה ללמידה בלתי מפוקחת נקראת מודל גנרטיבי (Generative Modeling). זהו תחום שהפך בשנים האחרונות לבולט במיוחד, בזכות טכניקת למידה עמוקה בשם רשתות גנרטיביות מתחרות (Generative Adversarial Networks – GANs), אשר הביאה להתקדמות משמעותית.
בהינתן נתונים מסוימים – למשל תמונות של פני אנשים – מודל גנרטיבי יכול לייצר עוד דוגמאות דומות: כלומר, ליצור עוד תמונות מלאכותיות של פני אנשים, שנראות אמיתיות.
נחזור לעסוק ב־GANs ובהשלכות של היכולת לייצר תוכן ויזואלי מלאכותי באיכות גבוהה בהמשך הקורס. עכשיו, נעבור להתבוננות מעמיקה יותר בלמידה מונחית (Supervised Learning) ונכיר שיטות קונקרטיות יותר.