סנונית מהפיכת הלמידה העמוקה הגיעה ב 2012 עם תוצאה טובה באופן משמעותי בתחרות זיהוי אוביקטים השנתית שנקראת ILSVRC. לראשונה אלגוריתם מבוסס רשת נוירונים עמוקה שנקרא Alexnet היצליח לזהות מה רואים במיליוני תמונות ברמת הצלחה של 85% בעוד המקום השני בתחרות דאז הגיע ל 74% הצלחה.
מאז ועד היום כל זוכי התחרות הזו משתמשים ברשתות נוירונים עמוקות (מה שכלל לא נחשב כ- main stream לפני), ולמעשה מיום ליום מסתבר שלמידה עמוקה מצליחה לא רק לבעיות ראייה ממוחשבת (כמו זיהוי מה רואים בתמונה) אלא גם לניתוח קול, ניתוח טקסט, רובוטיקה ובעצם כמעט לכל תחום.
מאז 2012 התחום לא מפסיק להתפתח ולהפתיע, אם נישאר בעולם התמונה, ב 2013 זכתה רשת נוירונים עמוקה בשם ZF Netעם 89% הצלחה, אחריה ב 2014 VGG עם 93% הצלחה, אחריה ב 2015 GoogleNet של גוגל עם 94% הצלחה, אחריה ResNet של מיקרוסופט עם 97% הצלחה, ומשם הדברים עוד התפתחו והרעיונות השתלבו כמו Inception v4 או Inception-resnet.
אבל איך זה שאלגוריתם מקבל 3072 מספרים (למשל תמונה ממאגר התמונות CIFAR10 שהינה בגודל 32X32 פיקסלים וכל פיקסל צבעוני ולכן מתואר ע”י שלוש מספרים: 32323=3072) ומחזיר מספר בין 1 ל עשר שמציין מה רואים בתמונה (מטוס, רכב, ציפור, חתול, וכו…).
הרי אותה רשת נוירונים עמוקה הינה אוסף (מיליונים) של פעולות אריתמטיות פשוטות ומוכרות לכולנו שמסודרות בסדר מסוים. משפט אחרון זה אולי נשמע הפשטה לא סבירה למי שלא מכיר, אבל זה באמת מה שיש ברשתות CNN= Convolutional Neural Network:
פעולות חיבור, פעולות כפל ופעולת תנאי (אם מספר גדול מסף מסויים אז תחזיר כך אחרת תחזיר כך)
האם זה כל מה שצריך כדי לתרגם תמונה למספר שמייצג מה רואים בתמונה ?
אין פה שום מתמטיקה כבדה ומסובכת ?
התשובה המאכזבת היא שלא, אין כאן!
אני לא מדבר על איך הגיעו לאותם אוסף פעולות אריתמטיות שפה כן יש מתמטיקה (ואגב ממש לא כבדה), אני מדבר על כך שאחרי שאימנו (איכשהוא) רשת CNN וכעת היא מצליחה לזהות מה רואים בתמונה, מסתבר שכל מה שהיא עושה זה פעולות אריתמטיות פשוטות בסדר מסוים!
מסתבר אפילו שיש הרבה יותר מאפשרות יחידה לסדר את אותם הפעולות האריתמטיות כך שיגרמו לרשת לזהות את התמונה באופן מוצלח. אפשר לאמן את אותה הרשת בכמה פעמים דרכים שונות ויצאו רשתות שונות שכל אחת תדע לזהות היטב.
אז בכל זאת מה עושות אותן מיליוני הפעולות האריתמטיות הללו בכדי לזהות מה רואים בתמונות ?
המסקנות של החוקרים של מה הפעולות שהרשת עושה על התמונה כדי לזהות מה רואים בה הם שהפעולות הראשונות (מה שנקרא השכבות הראשונות) מדגישות מאפיינים פשוטים כמו קצוות ושינויי צבע בתמונה בעוד הפעולות הבאות (השכבות הגבוהות שמקבלות כקלט את התוצאות מהפעולות הראשונות) ישלבו את המאפיינים הפשוטים ויסיקו אילו תבניות רואים בתמונה. (למשל אם יש כמה קוים ישרים ושני עיגולים יותר סביר שזה רכב מאשר אדם).
והנה עוד סרטון שסוקר כלי ויזואליזציה נוסף כללי יותר ועם הסברים:
נעיר שכדי לקבל רשת CNN מוצלחת יש לאמן אותה עם עשרות אלפי דוגמאות לפחות של איך אוביקט נראה כדי להצליח לזהות מופע חדש שלו, בעוד לנו בני האנוש מספיקים מאות, עשרות ולעיתים אף מספר בודד של דוגמאות ללמוד איך נראה אוביקט כלשהוא כדי שנזהה אותו.
אבל ההתקדמות לא נעצרת כאן, כי כמה שרשתות CNN קלאסיות השתפרו והן טובות כמו בני אנוש בזיהוי מה רואים בתמונה, מסתבר שהם לא באמת חכמות. למשל את התמונה הבאה כנראה יסווגו כבן אדם רגיל:
הדבר החם בעולם הזיהוי תמונות הגיע מג’פרי הינטון ונקרא Capsule Network (עוד לא ממש ברור איך לתרגם לעברית).
ג’פרי הינטון Geoffrey Hinton מאבות הלמידה העמוקה שהאמין ברשתות נוירונים עוד בשנות השמונים כשרב הקהילה ראתה בזה ענף חסר עתיד. (עיקר הביקורות היו: כשזה כבר כן עובד זה מקרי ואי אפשר להבין למה זה עובד כי זו קופסה שחורה).
דווקא הוא זה שלאחרונה יצא נגד CNN והביא לקהילה בשורה חדשה.
החסרון ב CNN הקלאסי, אותו באו רשתות הקפסולות לפתור הוא שפיצ’רים איבדו את מיקומם היחסי בתמונה כפי שניתן לראות בתמונה למעלה שם אכן יש שתי עיניים, פה ואף אך עדיין זו לא תמונה של פנים אמיתיות. רשתות הקפסולה באים בין השאר לפתור בעיה זו. על רשתות הקפסולות ארחיב בכתבה אחרת.