רשתות נוירונים: סיווג מרובה-מחלקות

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

  • אימייל מסוים הוא ספאם או לא ספאם.
  • גידול נתון הוא ממאיר או שפיר.

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

  • האם הכלב הזה הוא ביגל, כלב באסט או כלב דם?
  • האם הפרח הזה הוא אירוס סיבירי, אירוס ההולנדי, אירוס הדגל הכחול, או אירוס לזקן?
  • האם המטוס הזה הוא מדגם Boeing 747, Airbus 320, בואינג 777 או Embraer 190?
  • האם זו תמונה של תפוח, דוב, ממתק, כלב או ביצה?

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

בקטע הזה מפורטות שתי הווריאציות העיקריות של סיווג על ידי מספר כיתות:

אחד לעומת כולם

One-vs.-all מאפשר להשתמש בסיווג בינארי לסדרה של חיזויים מסוג 'כן' או 'לא' בכמה תוויות אפשריות.

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

לדוגמה, בהינתן תמונה של חתיכת פרי, עשויים להיות מאמנים מזהים שונים, וכל אחד מהם עונה על השאלה 'כן/לא' אחרת שאלה:

  1. האם התמונה הזו היא תפוח?
  2. האם התמונה הזו היא כתפוז?
  3. האם התמונה הזו היא בננה?
  4. האם התמונה הזו היא ענבים?

התמונה הבאה ממחישה איך זה עובד בפועל.

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

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

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

איור 10. רשת נוירונים עם הארכיטקטורה הבאה: שכבת קלט עם
      צומת אחד, שכבה מוסתרת עם 3 צמתים, שכבה מוסתרת עם 4 צמתים
      בשכבת פלט עם 4 צמתים. צומת הקלט מוזן בתמונה של אגס.
      פונקציית הפעלה של sigmoid מוחלת על שכבת הפלט. כל אחד
      צומת פלט מייצג את ההסתברות שהתמונה
      לפירות. צומת פלט 1 מייצג 'Is apple?' והערך הוא 0.34.
      צומת פלט 2 מייצג 'האם כתום?' והערך הוא 0.18.
      צומת פלט 3 מייצג את 'Is pear?' והערך הוא 0.84.
      צומת פלט 4 מייצג 'Is grape?' והערך הוא 0.07.
איור 10. אותן משימות סיווג לעומת כל המשימות שבוצעו באמצעות נוירונים מלאכותיות. פונקציית ההפעלה של sigmoid מוחלת על הפלט וכל ערך פלט מייצג את ההסתברות שהקלט התמונה היא פרי שצוין. המודל הזה מנבא שיש 84% יש סיכוי של אגס וסיכוי של 7% שהתמונה ענבים.

אחת לעומת אחת (softmax)

אולי הבחנתם שערכי ההסתברות בשכבת הפלט של איור 10 לא מסתכמים ב-1.0 (או 100%). (למעשה, הם מסתכמים ב-1.43.) במשחק אחד נגד כולם ההסתברות של כל קבוצה בינארית של תוצאות נקבעת בנפרד מכל הקבוצות האחרות. כלומר, אנחנו קובעים מתוך "apple" לעומת 'not apple' בלי להביא בחשבון את הסבירות אפשרויות פירות: "כתום", "אגס" או "ענבים".

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

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

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

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

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

איור 11. רשת נוירונים עם הארכיטקטורה הבאה: קלט
      שכבה עם צומת אחד, שכבה מוסתרת עם 3 צמתים, שכבה מוסתרת עם 4 צמתים
      בשכבת פלט עם 4 צמתים. צומת הקלט מוזן בתמונה של אגס.
      פונקציית הפעלה של softmax חלה על שכבת הפלט. כל אחד
      צומת פלט מייצג את ההסתברות שהתמונה
      לפירות. צומת פלט 1 מייצג 'Is apple?' והערך הוא 0.19.
      צומת פלט 2 מייצג 'האם כתום?' והערך הוא 0.12.
      צומת פלט 3 מייצג את 'Is pear?' והערך הוא 0.63.
      צומת פלט 4 מייצג 'Is grape?' והערך הוא 0.06.
איור 11. הטמעת רשת נוירונים של סיווג אחד מול אחד, באמצעות בשכבת softmax. כל ערך פלט מייצג את ההסתברות תמונת הקלט היא הפרי שצוין ולא אף אחד משלושת הפירות האחרים (סכום כל ההסתברויות ב-1.0). המודל הזה צפוי שיש סיכוי שהתמונה היא אגס.

אפשרויות ל-Softmax

כדאי להשתמש בווריאציות הבאות של softmax:

  • Full softmax הוא ה-softmax שדיברנו עליו; כלומר, הפונקציה softmax מחשבת הסתברות לכל מחלקה אפשרית.

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

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

תווית אחת לעומת תוויות רבות

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

  • אין להשתמש ב-softmax.
  • עליכם להסתמך על רגרסיות לוגיסטיות מרובות.

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