הרעיון מאחורי רשת הקפסולות

מיועד ל- מתחילים (כתבה קצת טכנית)

נכתב על ידי תמיר נווה

תסכימו שזה מעורר סקרנות לשמוע את הינטון שנחשב לאחד האושיות של הלמידה העמוקה נותן הרצאה ב MIT ששמה “מה הבעיה ברשתות קונבולוציה ?”

רקע

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

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

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

סיכום המאמרTransforming Auto-encoders” (2011)

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

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

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

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

הרעיון של הקפסולות פותח בהתחלה ברשת שנקראת .Transforming Auto-encoders רשת זו “מאלצת” את המשתנים הפנימיים שלה ללמוד לזהות חלקים בתמונה ואת מיקומם היחסי.

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

ב- Transforming Auto-encoders מאלצים את הרשת לקודד את התמונה לפי חלקים שלה ומיקומם היחסי.

תודה ל Transforming Auto-encoders

בתרשים זה ניתן לראות הדגמה פשוטה של הרעיון רק על הזזה. בתרשים יש שלוש קפסולות שכל אחת מהם מקבלת תמונת קלט (הסיפרה 2) והיא מורכבת משכבת מקודד Encoder (העיגולים האדומים) ומשכבת מפענח Decoder (העיגולים הירוקים). מאמנים את הרשת הזו כך שתקבל את התמונה ותחזיר אותה מוסטת ב ∆y,∆x. בנוסף לקלט התמונה גם מזינים את ההסטה ז”א את זוג הערכים ∆y,∆x. כל קפסולה מכילה רק שלושה משתנים פנימיים x,y,p שמשמעותם מיקום האלמנט (או מיקום האוביקט כולו בתמונה אם זה האלמנט שלו) וההסתברות לקיומו בתמונה. תמונת הפלט הסופית משלושת הקפסולות משקללות פלט של כל קפסולה לפי ההסתברות p שלה.

כותבי המאמר לקחו רשת מבנה כזה אך עשיר יותר (30 קפסולות, 10 נוירונים במקודד ו 20 נוירונים במפענח) ואימנו אותה על מאגר MNIST כאשר מבצעים בכל פעם הסטה אקראית של התמונה אופקית או אנכית עד כשני פיקסלים בכל פעם. הם קיבלו שהמשתנים הפנימיים x,y במוצא ה encoder תואמים להסטה של התמונה ∆y,∆x מה שאומר שכל קפסולה למדה לזהות אלמנט מסויים בתמונה במיקום מסוים. וכשישנה הסכמה על המיקומים של האלמנטים המרכיבים ספרה מסוימת אזי זו אכן הספרה המסוימת ולא אחרת.

איך התקדם מאז ?

ארכיטקטורת הקפסולות חזרה לכותרות ב 2017 במאמר של הינטון וחבריו האחרים בו הם מציעים ארכיטקטורת קפסולות יותר מורכבת ויותר חשוב מזה מציגים שיטה איך לאמן קפסולות (Dynamic Routing). ייתכן ואכתוב על כך מאמר נוסף בהמשך (תלוי בביקוש שלכם הקוראים…) אך מה שחשוב להבין זה את התוצאות שלהם. כשהשוו ביצועים של CNN קלאסי לזיהוי ספרות ב MNIST הדורש אותם משאבי חישוב בערך כמו רשת הקפסולות שלהם, ניצחה רשת הקפסולות בהסתברות הזיהוי (הגיעה ל-0.25%  שגיאה), מה גם שדרשה פחות זיכרון. (8.2M  פרמטרים לעומת 35.4M פרמטרים ב CNN אליו הושוו התוצאות)

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