Thursday, June 13, 2019

על רשתות נוירונים ולמידה עמוקה (Hebew)

Немного сокращено. Форматирование моё.


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

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





תמונה 1: רשת נוירונים מלאכותית



תמונה 2: רשת נוירונים עמוקה



תמונה 3 : ניסיונות לצייר (בקירוב) קו עקום באמצעות קווים ישירים.

Ниже есть продолжение.

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

מהי "למידה עמוקה"? זהו הבאזוורד החדש לקאמבק המרשים של רשתות הנוירונים הוותיקות שכיכבו בשנות ה-80 וה-90 של המאה שעברה*. ומהן רשתות נוירונים (מלאכותיות)? שיטת למידת מכונה בהשראת מבנה מוח האדם. המוח שלנו מורכב מתאי עצב (נוירונים) רבים, מעין יחידות חישוב קטנות, שמחוברים אלו לאלו ברשתות של קשרים. מבלי להיכנס לפרטים, רשת נוירונים מלאכותית "קלאסית" מכילה 3 שכבות שמחוברות זו לזו: שכבת יחידות קלט אליה מכניסים את הנתונים, שכבה פנימית של יחידות חישוב ושכבה חיצונית של יחידות פלט, ממנה יוצאות התוצאות (תמונה 1). בתוך כל עיגול מתבצע חישוב, ועל כל קו נרשם מספר.

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

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

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

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

***

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

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

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

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

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

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

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

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




https://www.themarker.com/techblogs/misterdata/BLOG-1.6264576
https://www.themarker.com/techblogs/misterdata/BLOG-1.6359451


No comments:

Post a Comment