יום שני, 14 באוגוסט 2017

מהר יותר, נמוך יותר, חזק יותר! | יכולות משמעותיות חדשות בתחום ה-Deep Learning בסביבת MATLAB

פייר דה קוברטן, מי שהוביל את הרעיון לחדש את מסורת המשחקים האולימפיים, הוא זה שטבע את הסיסמה "מהר יותר, גבוה יותר, חזק יותר!". אבל הבלוג הזה לא עוסק בספורט, מה גם שהאולימפיאדה הבאה עוד די רחוקה. מה שכן מתקרב בצעדי ענק הוא השחרור של גרסת MATLAB חדשה, R2017b, אשר לפחות עבור העוסקים בתחום ה-Deep Learning - צפויה להיות גרסה די משמעותית. ובפראפראזה על הסיסמה שהגה הברון דה קוברטן – דברים הולכים לרוץ מהר יותר, תוך ניצול נמוך יותר של זיכרון, ותוך הפגנת סט יכולות חזק יותר מאי פעם!

יכולות ה-Deep Learning בסביבת MATLAB נסקרו בבלוג הזה לראשונה לפני כעשרה חודשים (קישור למטה). בכנס MATLAB & Simulink 2017 Israel Expo שהתקיים לפני כשלושה חודשים התכבדתי להעביר הרצאה בנושא, בה הדגמתי כיצד סביבת MATLAB מאפשרת להתמודד בקלות עם האתגרים השונים בביצוע משימות בעולם ה-Deep Learning (קישור להרצאה - למטה). כשבוע לאחר הכנס פרסמתי פה סקירה של החידושים בתחום בגרסת ה-MATLAB הנוכחית (קישור למטה), וכעת אני מתכבד לפרסם הצצה ראשונית ליכולות הצפויות בגרסת ה-MATLAB הבאה, R2017b, אשר צפויה להשתחרר בעוד כחודש. הסקירה הזו מבוססת בחלקה על עמוד ה-Deep Learning באתר חברת MathWorks (קישור למטה).


אז מה היכולות החדשות שמתוכננות לגרסה הקרובה?

GPU Coder – כלי חדש המאפשר המרה אוטומטית של קוד MATLAB לקוד CUDA אשר יכול לרוץ על מעבדים גרפיים של חברת nVidia. מדובר בהרחבה של כלי ה-MATLAB Coder (המאפשר להמיר קוד MATLAB לקוד C), אשר לפי ה-benchmarks מאפשרת לקוד לרוץ פי 5 יותר מהר מאשר מה שמאפשרת ספריית Caffe2, ופי 7 יותר מהר מאשר TensorFlow (בבדיקה על פעולות הסקה תוך שימוש ב-Alexnet; יודגש שגם ללא הכלי סביבת MATLAB מהירה יותר מאשר שני הכלים האחרים). בנוסף, על פי ה-benchmarks הכלי מאפשר ניצול של פי 3 פחות זיכרון מאשר TensorFlow דורש. ניתן למצוא למטה קישור לפוסט בנושא.

התממשקות עם TensorFlow - Keras לצורך ייבוא מודלים – בהמשך לתמיכה ב-Caffe אשר נוספה ב-R2017a (ראו למטה סקירה של החידושים בגרסה הנ"ל). כך ניתן ליהנות הן מהמודלים המעולים שפותחו בעבר (או יפותחו בהמשך) בסביבות אלה, והן מנוחות העבודה, הויזואליזציות והמהירות של סביבת MATLAB וכן בסופו של דבר לייצר בצורה אוטומטית קוד CUDA בעזרת הכלי המוזכר למעלה. היכולת צפויה להתווסף במהלך חודש אוקטובר (לחצו לקישור). בהקשר זה יש להזכיר שקיימת אפשרות להמיר מודלים מ-PyTorch ל-Keras (לחצו לקישור), ולכן כעת - באמצעות המרה כפולה - אפשר לעבור מ-PyTorch ל-MATLAB.

תמיכה בארכיטקטורות מתקדמות של רשתות
RNN היא רשת בעלת לולאות שמסוגלת להתמודד יותר בקלות ויותר בטבעיות עם מידע רציף, כמו וידאו, טקסט, ואודיו. כלומר – מאפשרת לנצל את המידע שנאסף במילה הקודמת במשפט או בפריים הקודם של הווידאו, על מנת להבין את המילה הבאה או הפריים הבא. בגרסה החדשה צפויה תמיכה ב-LSTM - מקרה מיוחד של RNN - אשר מצליח להשתמש במידע שנלמד בתחילת רצף ארוך - גם בשלב יותר מאוחר ברצף. משמש לתרגום, זיהוי כתב יד, זיהוי קול, סיווג תמונות, חיזוי תגיות ועוד.
DAG - רשת שבה הקלט של שכבה יכול להגיע ממספר שכבות, והפלט שלה יכול להגיע אל מספר שכבות, ללא משוב.
GoogLeNet רשת DAG קטנה, מהירה ומדויקת, אשר זכתה בתחרות ILSVRC בשנת 2014.
הנ"ל בהמשך לתמיכה ב-VGG שנוספה ב-R2017a והרחיבה את התמיכה ב-Alexnet
שימו לב שבמהלך חודש אוקטובר צפויה להתווסף גם תמיכה ב-ResNet50 (רשת מקבילית עמוקה מאוד, 177 שכבות, שאומנה באמצעות למעלה ממיליון תמונות, וזכתה ב-ILSVRC  לשנת 2015. לחצו לקישור) בתור Support Package. ובהמשך - תהיה גם תמיכה ב-ResNet101.
תמיכה ב-
InceptionV3 צפויה להתווסף בסביבות סוף השנה.

Custom layer – ממשק ליצירת סוגים חדשים של שכבות באמצעות שפת MATLAB.

Batch normalization – מאפשר להאיץ את תהליך האימון ולהפחית את הרגישות לאתחול, על ידי שימוש בשכבות אשר מנרמלות את ה-activations והגרדיאנטים המתקדמים ברשת, דבר ההופך את אימון הרשת למשימה פשוטה יותר.

סוגים חדשים נוספים של שכבות – Deconv layer ,MaxUnPooling layer (מה שמאפשר לייצר DeconvNet) ועוד...

Semantic Segmentation – סגמנטציה סמנטית הינה טכניקה להפרדה של אובייקט מהרקע ברמת הפיקסל תוך התייחסות זהה לאובייקטים מאותו קלאס (למשל – התייחסות אל שני כיסאות שונים בתור קלאס זהה). בגרסה הקרובה תתווסף אפשרות להוסיף שכבות ,FCN SegNet ו-PixelClassification (מצריך את ה-Computer Vision System Toolbox) ואפשר יהיה ליצור PSPNet (יצריך לבנות את הרשת, המעוניינים יכולים לקבל ממני דוגמה לשימוש ב-Alexnet בתור בסיס; כאמור – לאחר שחרור הגרסה מתוכנן שיחרור של תוסף של ResNet50, מה שיאפשר לשכפל די טוב את ה-PSPNet המקורי). 
בנוסף, לבעלי ה-Computer Vision System Toolbox - בגרסה יתווספו גם כל מיני פונקציות עזר וכל מיני מטריקות בתחום הסגמנטציה הסמנטית, לרבות IoU / Jaccard (מדד טיב בגילוי אובייקטים – היחס בין החיתוך של ה-bounding box של הגילוי עם זה של ה-ground truth, לבין האיחוד שלהם).

Labeling – כידוע, פרט ל-App לביצוע Labeling לסרטוני וידאו (המהווה חלק מה- Automated Driving System Toolboxקיים גם ה-App המסייע לביצוע Labeling לתמונות (אשר הינו חלק מה- Computer Vision System Toolbox). לאחרון תתווסף תמיכה בתיוג פיקסלים ואזורים עבור משימות סגמנטציה סמנטית. 

Early stopping via validation – יכולת ולידציה אוטומטית לרשת כל מספר איטרציות, ועצירת האימון כאשר מטריקות הולידציה מפסיקות להשתפר. הנ"ל יאפשר להכניס מידע ולידציה לתהליך האימון ולהציג ביצועים ב-training accuracy plot הן על מידע האימון והן על מידע הולידציה (ה-plot המשודרג גם צפוי להכיל לחצן "עצור").

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

Bayesian Optimization – מציאת הגדרות אופטימליות לאימון רשתות עמוקות (מצריך את ה-Statistics & Machine Learning Toolbox)


מה הלאה?

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

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

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


קישורים:

* הרשמה לסמינר שיתקיים בתאריך 21/11/2017

* פוסט מלפני כעשרה חודשים בנושא יכולות ה-Deep Learning בסביבת MATLAB
* פוסט בנושא GPU Coder
* וידאו - הרצאה מכנס MATLAB & Simulink 2017 Israel Expo

* קורס חינמי אונליין 
לחצו פה

* סקירה של החידושים בתחום בגרסת ה-MATLAB הנוכחית (R2017a)

* עמוד ה-Deep Learning באתר חברת MathWorks (מומלץ לנווט אל עמוד ה-Features באמצעות שורת התפריטים מתחת לפס הכחול אשר בחלקו העליון של העמוד)