תוכן הקורס
מהי בינה מלאכותית?
האם רובוט יקח את העבודה שלי? כיצד צפויה הבינה המלאכותית לשנות את עבודתי בעשר השנים הבאות? היכן נעשים כיום שימושים בטכנולוגיות בינה מלאכותית והיכן המקומות הבאים?
0/6
פתרון בעיות בעזרת בינה מלאכותית
אלגוריתמים של חיפוש אולי לא נשמעים כמו השיא של טכניקות הבינה המלאכותית המרשימות. ובכל זאת – הם יכולים לשמש לפתרון משימות שרובנו נודה שהן דורשות אינטליגנציה, כמו ניווט או משחק שחמט. בפרק 2 נעסוק בנושאים הבאים. לחצו על הכותרות כדי להתחיל: ? I. חיפוש ופתרון בעיות ? II. פתרון בעיות בעזרת בינה מלאכותית ? III. חיפוש ומשחקים
0/5
בינה מלאכותית בעולם האמיתי
אחת הסיבות לכך ששיטות AI מודרניות באמת מצליחות בעולם האמיתי בשונה מרוב השיטות ה”קלאסיות” של שנות ה־60 עד ה־80 היא היכולת שלהן להתמודד עם אי-ודאות.
0/5
מעבר לבינתי

III. רגרסיה

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

הערה

ההבדל בין סיווג לרגרסיה

יש הבדל קטן אך חשוב בין סוגי התחזיות שעלינו להפיק בתרחישים שונים. לדוגמה, מסווג השכן הקרוב בוחר תווית קטגורית עבור כל פריט מתוך קבוצה נתונה של חלופות (כמו ספאם/לא ספאם, או 0,1,2,…,9), בעוד שרגרסיה לינארית מפיקה תחזית מספרית, שאינה חייבת להיות מספר שלם (למשל, 3.14).

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

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

הערה

חושבים על רגרסיה לינארית כמו על חשבון קניות

נניח שאתה הולך למכולת וקונה 2.5 ק”ג תפוחי אדמה, 1.0 ק”ג גזרים, ושני בקבוקי חלב. אם המחיר של תפוחי האדמה הוא 2 ש"ח לק”ג, המחיר של גזר הוא 4 ש"ח לק”ג, ובקבוק חלב עולה 3 ש"ח — אז החשבון, כפי שמחשב הקופאי, יוצא:

2.5 × 2 + 1.0 × 4 + 2 × 3 = 15₪

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

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

מונחי מפתח

מקדמים או משקלים

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

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


תרגיל 16

(שמרתי בתיקייה במחשב, צריך לוודא שהקוד בדיקה עובד ולהעלות לפה)


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

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

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

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

הערה

דוגמה

בהמשך לאנלוגיית הקניות, נניח שניתנו לנו תכולות של מספר עגלות קנייה ואת החשבונית הכוללת של כל אחת מהן, והתבקשנו לגלות את המחיר של כל אחד מהמוצרים (תפוחי אדמה, גזרים וכן הלאה). מעגלה אחת בלבד, נניח 1 ק”ג סטייק אנטריקוט, 2 ק”ג גזרים ובקבוק יין אדום, גם אם ידוע לנו שהחשבונית הכוללת היא  35 ₪, לא נוכל לקבוע את מחירי המוצרים — מכיוון שיש הרבה מערכות מחירים שונות שיכולות להניב את אותו סכום כולל. אולם, עם הרבה עגלות קנייה שונות, בדרך כלל נוכל לפתור את הבעיה.

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

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

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

הצגת רגרסיה ליניארית באופן חזותי

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

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

גם העלייה בפריון עם עלייה בכמות הקפה תתקיים רק עד גבול מסוים — מעבר לו "רעד קפה" יפריעו לריכוז.

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

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

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


תרגיל נוסף 17


תרגיל נוסף 18


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

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

רגרסיה ליניארית היא באמת סוס העבודה של יישומים רבים בבינה מלאכותית ובמדע הנתונים.

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

רגרסיה ליניארית שימשה בהצלחה בבעיות הבאות, לדוגמה:

  • חיזוי שיעורי הקלקה בפרסום מקוון

  • חיזוי ביקוש למוצרים בקמעונאות

  • חיזוי הכנסות מקופות הכרטיסים בסרטי הוליווד

  • חיזוי עלות פיתוח תוכנה

  • חיזוי עלות ביטוח

  • חיזוי שיעורי פשיעה

  • חיזוי מחירי נדל”ן

 

האם נוכל להשתמש ברגרסיה כדי לחזות תוויות?

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

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

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

אז מה אם נרצה שיטה שמפיקה את אותו סוג של פלט כמו שיטת השכן הקרוב ביותר – כלומר, תוויות – אך גם תהיה ניתנת לפירוש כמו רגרסיה ליניארית?

 

רגרסיה לוגיסטית – באה להצלה

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

למעשה, במקום רק לנבא תווית אחת או אחרת, רגרסיה לוגיסטית יכולה גם לספק לנו מדד לאי-ודאות של הניבוי. כך שאם אנו חוזים האם לקוח יקנה סמארטפון חדש השנה, נוכל לקבל ניבוי שלפיו ללקוח A יש סבירות של 90% לקנות מכשיר, ואילו לקוח אחר, שפחות ניתן לחיזוי, תוצאת הניבוי תהיה של 55% שלא יקנה (או במילים אחרות, 45% שכן יקנה).

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

דוגמה לרגרסיה לוגיסטית

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

תעודת סטודנט שעות לימוד עבר/נכשל
24 15 עבר
41 9.5 עבר
58 2 נכשל
101 5 נכשל
103 6.5 נכשל
215 6 עבר

 

 

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

 

 


תרגיל 19

 


 

 

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

 

המגבלות של למידת מכונה

לסיכום, למידת מכונה היא כלי עוצמתי מאוד לבניית יישומי בינה מלאכותית.

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

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

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

הגורמים שמשפיעים על כמה טובה תהיה התוצאה כוללים:

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

  • שיטת הלמידה: יש שיטות שמתאימות הרבה יותר למשימה מסוימת מאחרות.

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

  • איכות הנתונים.

 

 

הערה

איכות הנתונים חשובה

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

נחזור לבעיות אפשריות שנגרמות על ידי נתונים “מוטים”  בהמשך.

 

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

 

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

 

כפי שצוין קודם, בדרך כלל לא נוכל להגיע לאפס טעויות, אבל ייתכן שנשמח בשיעור טעות של פחות מ-1 ל-100 (או 1%). גם זה תלוי ביישום: לא נהיה מרוצים אם רק 99% מהמכוניות יהיו בטוחות בכביש, אך בניבוי אם נאהב שיר חדש, דיוק כזה עשוי להספיק בהחלט לחוויית האזנה נעימה. שמירה מתמדת על המטרה האמיתית מול העיניים תעזור לנו לוודא שאנו יוצרים ערך אמיתי.