חדש: רשתות נוירונים מלאכותיות (CNN)
פריצת דרך בבניית מודלים לסיווג תמונות הגיעה עם הגילוי שאפשר להשתמש ברשת נוירונים קוונטית (CNN) כדי לחלץ באופן הדרגתי ייצוגים ברמה גבוהה יותר ויותר של תוכן התמונה. במקום עיבוד מקדים של הנתונים כדי להפיק מאפיינים כמו מרקמים וצורות, רשת CNN מקבלת רק את נתוני הפיקסלים הגולמיים של התמונה כקלט, "לומדת" איך לחלץ את המאפיינים האלה, ובסופו של דבר מסיקה איזה אובייקט הם מהווים.
בשלב הראשון, ה-CNN מקבל מפת מאפייני קלט: מטריצה תלת-ממדית שבה הגודל של שני המימדים הראשונים תואם לאורך ולרוחב של התמונות בפיקסלים. הגודל של המאפיין השלישי הוא 3 (הוא תואם ל-3 הערוצים של תמונה צבעונית: אדום, ירוק וכחול). ה-CNN מורכב מסטאק של מודולים, שכל אחד מהם מבצע שלוש פעולות.
1. Convolution
עיבוד עיבוד נתונים (convolution) מחלץ משבצות ממפת המאפיינים של הקלט ומחילה עליהן מסננים כדי לחשב מאפיינים חדשים, וכך יוצרת מפת מאפיינים של פלט או מאפיין מעורבב (שיכול להיות שונה בגודל ובעומק ממפת המאפיינים של הקלט). שתי הפונקציות מוגדרות על ידי שני פרמטרים:
- הגודל של המשבצות שחולצו (בדרך כלל 3x3 או 5x5 פיקסלים).
- עומק מפת המאפיינים של הפלט, שתואם למספר המסננים שחלים.
במהלך עיבוד קוונטי, המסננים (מטריצות באותו גודל כמו גודל המשבצת) מחליקים בפועל על רשת מפת המאפיינים של הקלט אופקית ותלולית, פיקסל אחד בכל פעם, ומחליצים כל משבצת תואמת (ראו איור 3).
איור 3. עיבוד קוונטי 3x3 של עומק 1 שמתבצע על מפת תכונות קלט בגודל 5x5, גם היא בעומק 1. יש תשעה מיקומים אפשריים בגודל 3x3 כדי לחלץ משבצות ממפת התכונות בגודל 5x5, כך שהעיבוד הקוונטי הזה יוצר מפת תכונות פלט בגודל 3x3.
לכל צמד של מסנן ואריח, ה-CNN מבצע הכפלה של כל רכיב במטריצה של המסנן ובמטריצה של האריחים, ולאחר מכן מסכם את כל הרכיבים של המטריצה המתקבלת כדי לקבל ערך יחיד. כל אחד מהערכים המתקבלים האלה לכל צמד של משבצת מסנן מוצג בתור פלט במטריצה של המאפיין המשולב (ראו איורים 4a ו-4b).
איור 4א. שמאל: מפת מאפייני קלט בגודל 5x5 (עומק 1). ימין: ערבול 3x3 (עומק 1).
איור 4ב. שמאל: המצטבר 3x3 מתבצע במפת המאפיינים של הקלט בגודל 5x5. ימין: התכונה המתעגלת שמתקבלת. לוחצים על ערך במיפוי המאפיינים של הפלט כדי לראות איך הוא חושב.
במהלך האימון, ה-CNN "לומד" את הערכים האופטימליים למטריצות המסננים שמאפשרים לו לחלץ מאפיינים משמעותיים (טקסטורות, קצוות, צורות) ממפת המאפיינים של הקלט. ככל שמספר המסננים (עומק מפת התכונות של הפלט) שמוחל על הקלט עולה, כך עולה גם מספר התכונות ש-CNN יכול לחלץ. עם זאת, הבעיה היא שהמסננים מהווים את רוב המשאבים שה-CNN משתמש בהם, ולכן זמן האימון גדל ככל שמוסיפים יותר מסננים. בנוסף, כל מסנן שנוסף לרשת מספק ערך מצטבר נמוך יותר מהמסנן הקודם, ולכן המהנדסים שואפים ליצור רשתות שמשתמשות במספר המינימלי של המסננים הנחוץ כדי לחלץ את המאפיינים הנדרשים לסיווג מדויק של תמונות.
2. ReLU
אחרי כל פעולת ערבול, ה-CNN מחיל טרנספורמציה של יחידה לינארית מתוקנת (ReLU) על המאפיין המעורבב, כדי להוסיף מודל לא לינארי. פונקציית ReLU, \(F(x)=max(0,x)\), מחזירה את הערך x לכל הערכים של x > 0, ומחזירה את הערך 0 לכל הערכים של x ≤ 0.
3. איחוד (pooling)
אחרי ReLU מגיע שלב צבירה, שבו ה-CNN מבצע דגימה לאחור של המאפיין המשולב (כדי לחסוך בזמן העיבוד), מפחית את מספר המאפיינים במפה של המאפיינים ועדיין שומר על פרטי המאפיינים החשובים ביותר. אלגוריתם נפוץ שמשתמשים בו בתהליך הזה נקרא max pooling.
Max pooling פועל באופן דומה ל-convolution. אנחנו מחליקים מעל מפת המאפיינים ומחפשים אריחים בגודל מסוים. לכל משבצת, הערך המקסימלי יופיע במפת מאפיינים חדשה וכל שאר הערכים יידחו. פעולות Max pooling כוללות שני פרמטרים:
- הגודל של מסנן ה-max-pooling (בדרך כלל 2x2 פיקסלים)
- Stride: המרחק, בפיקסלים, שמפריד בין כל משבצת שחולצה. בניגוד ל-convolution, שבו המסננים מחליקים על מפת התכונות פיקסל אחרי פיקסל, ב-max pooling, ה-stride קובע את המיקומים שבהם כל משבצת מחלצת. במסנן 2x2, צעד של 2 מציין שפעולת ה-max pooling תגרום לחילוץ של כל המשבצות בגודל 2x2 שלא חופפות זו לזו ממפת המאפיינים (ראו איור 5).
איור 5. שמאל: Max pooling שמתבצע במפת מאפיינים בגודל 4x4 עם מסנן בגודל 2x2 וצעד של 2. ימין: הפלט של פעולת ה-max pooling. שימו לב שמפת המאפיינים שמתקבלת היא עכשיו בגודל 2x2, ושנשמרים בה רק הערכים המקסימליים מכל משבצת.
שכבות מקושרות לחלוטין
בסוף רשת עצבית קונבולוציונית יש שכבה אחת או יותר עם קישור מלא (כששתי שכבות 'מקושרות במלואן', כל צומת בשכבה הראשונה מחובר לכל צומת בשכבה השנייה). התפקיד שלהם הוא לבצע סיווג על סמך המאפיינים שחולצו על ידי ההתחברותים. בדרך כלל, השכבה הסופית המקושרת לגמרי מכילה פונקציית הפעלה מסוג softmax, שמפיקה ערך של הסתברות בין 0 ל-1 לכל תווית הסיווג שהמודל מנסה לחזות.
באיור 6 מוצג המבנה מקצה לקצה של רשת נוירונים קונבולוציונית.
איור 6. רשת ה-CNN שמוצגת כאן מכילה שני מודולים של עיבוד קוונטי (convolution + ReLU + pooling) לחילוץ מאפיינים, ושני שכבות מחוברות לחלוטין לסיווג. רשתות CNN אחרות עשויות להכיל מספרים גדולים יותר או קטנים יותר של מודולים עיבוד נתונים וקישורים (convolutional), ושכבות מחוברות במלואן גדולות יותר או קטנות יותר. מהנדסים לעיתים קרובות מבצעים ניסויים כדי להבין איזו הגדרה מניבה את התוצאות הטובות ביותר למודל שלהם.