יום רביעי, 27 בספטמבר 2017

שנה חדשה, גרסה חדשה

בשבוע שעבר שוחררה גרסת R2017b של מוצרי MathWorks. הגרסה החדשה מכילה יכולות חדשות משמעותיות ב-MATLAB ו-Simulink, וכן עדכונים לעשרות כלים אחרים.
בין היתר, הגרסה כוללת:
  • תוספת של פונקציות רבות הנתמכות לייצור אוטומטי של קוד C מתוך קוד ה-MATLAB,
  • האצה של הקוד והמודלים הקיימים שיש בידכם היום (בארבע הגרסאות האחרונות מהירות הריצה של הקוד השתפרה בכ-25%, בכל גרסה, מבלי שתצטרכו לעשות דבר פרט לשימוש בגרסה עדכנית!),
  • אפשרות להורדה של Add-Ons מספריות החומרה, הטולבוקסים וקהיליית המשתמשים של MathWorks – ללא עלות נוספת.
להלן תקציר של השיפורים המרכזיים בכלים השונים, כפי שרוכזו על ידי צוות מהנדסי האפליקציה של סיסטמטיקס (מומלץ לבחון את ה-Release Notes על מנת ליהנות מכל השיפורים).

משפחת מוצרי MATLAB

MATLAB

  • geobubble – פונקציה ליצירת מפה אינטראקטיבית עם בועות בגודל וצבע משתנים בהתאם לערכים המוצגים
  • wordcloud – פונקציה להצגת מילים בגודל משתנה בהתאם לתדירות הופעתן או מידע אחר
  • Code compatibility report – כלי המסייע לעדכן את הקוד הקיים לגרסאות MATLAB חדשות יותר
  • tall arrays – הרחבת היכולות להצגת מידע הגדול מגודל הזיכרון באמצעות פונקציות binscatter, plot, scatter
  • App Designer – שיפורים נוספים, ביניהם הרחבת התמיכה בויזואליציה בדו-מימד ותלת-מימד, רכיבים חדשים ושיפורים באריזה ושיתוף
  • C++ MATLAB Engine API – הרצת קוד MATLAB מתוך תוכנית C++  והעברת מידע  בין התוכנית ל-MATLAB

Statistics and Machine Learning Toolbox

הרחבת התמיכה בשימוש ב-tall arrays עבור פונקציות לבניית מודלי Machine Learning:
  • fitckernel (new function) for Gaussian kernel classification using feature expansion
  • fitrlinear for SVM regression
  • fitctree for classification decision trees

 Text Analytics Toolbox

כלי חדש המכיל אלגוריתמים וויזואליציות לעיבוד מקדים, אנליזה ומידול של מידע טקסטואלי, עבור אפליקציות כמו ניתוח רגשות, תחזוקה מונעת וזיהוי נושא.
ה- Toolboxמכיל כלים לעיבוד טקסט ממקורות שונים, כגון לוגים של מערכות, תוצאות סקרים, דו"חות, אתרי חדשות ומדיה חברתית, עליו ניתן לבצע פעולות כמו המרת טקסט לתצוגה נומרית ובניית מודלים סטטיסטיים.
באמצעות שיטות כמו LDA, LSA ו-Word embeddings, ניתן לבצע אישכול ולמצות מאפיינים ממידע טקסטואלי רב-מימדי, ולשלב מאפיינים אלה בבנייה של מודל Machine Learning.
ניתן לייבא מידע מקבצי word או PDF, לחשב TF-IDF  ולנתח תדירות מילים, לבצע אימון של מודלי Word-embedding, ולייבא מודלי מאומנים מ- word2vec, FastText,  GloVe .
לסרטון קצר בעברית בנושא - לחצו פה.

Database Toolbox

  • אפליקציית Database Explorer משופרת – לסקירה databases מבלי לדעת SQL
  • ממשק עבור MongoDB, Neo4j, SQL

Optimization Toolbox

  • שיפורים להגדרת בעיות באופן פשוט וישיר, וכתיבת קוד קומפקטי וקריא
  • אפשרות לעבודה עם פותרן אוטומטי

Symbolic Math Toolbox

  • עבודה עם יחידות והמרה בין יחידות SI ו-US
  • ביצועי חישובים פיסיקליים ב- Live Editor

משפחת מוצרי Simulink

Simulink

  • ניתן לבצע השוואות בין מודלים שונים ודיאגרמות מצבים, לצורך איחוד והשוואות בין ענפי הפיתוח השונים (Merge, Branches), ללא צורך ברשיון עבור ה-Simulink Report Generator
  • ניתן לעשות שימוש ביכולות Simulink Project גם עבור פרויקטים קיימים, ע"י המרה באופן אוטומטי של תיקיית הפרוייקט במחשב לפרוייקט Simulink.
  • ריכוז כלל יכולות ניהול וניתוח סימולציות לתוך "מנהל ריצת הסימולציה". כעת ניתן לבחון מהו מצב הסימולציות תוך כדי הריצה (במקבול הרצות), וכך ניתן לראות את סטטוס הריצה, איזו הרצה עברה ואיזו נכשלה, ובהתאם לכך להחליט אילו הרצות לבחון שוב.
  • ניתן לתזמן את איברי הסימולציה בקלות ובנוחות, ובנוסף הסימולינק יבדוק ויפתור את בעיות התלות בין הבלוקים השונים באופן אוטומטי.

Stateflow

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

Simulink Control Design

ניתן לייצר קוד embedded של בקר PID וכך אפשר לשנות את הפרמטרים של הבקר על גבי המערכת עצמה.

Simscape

  • שיפור הרובוסטיות של המערכת ע"י הכנסת מספר משתנה ל-solver של הסימולציה.
  • ניתן לשמור מצב עבודה של המערכת ולבצע initialized עם הערכים הללו למודל הפיסיקלי.

סביבת Deep Learning

GPU Coder

כלי חדש המאפשר המרה אוטומטית של קוד MATLAB לקוד CUDA אשר יכול לרוץ על מעבדים גרפיים של חברת nVIDIA.

Neural Network Toolbox

  • התממשקות עם TensorFlow - Keras לצורך ייבוא מודלים - היכולת צפויה להתווסף במהלך חודש אוקטובר.
  • תמיכה בארכיטקטורות מתקדמות של רשתות: RNN  , LSTM ,DAG, GoogleNet.
  • Custome layer - ממשק ליצירת סוגים חדשים של שכבות באמצעות שפת  MATLAB
  • Semantic Segmentation - יצירת PSPNet וכן מטריקות בתחום הסגמנטציה הסמנטית, לרבותIoU .
  • Early stopping via validation and training plots - יכולת ולידציה אוטומטית לרשת ועצירת האימון כאשר מטריקות הוולידציה מפסיקות להשתפר. חידוש זה מאפשר להכניס מידע ולידציה לתהליך האימון ולהציג ביצועים ב- training accuracy plot הן על מידע האימון והן על מידע הוולידציה.
  •  Deep Learning Image Preprocessing - בזמן שהתמונות נקראות ומוזנות לתוך האימון – יש כעת אפשרות לבצע פעולות גיאומטריות על מנת להגדיל את מידע האימון.
  • Bayesian Optimization  - מציאת הגדרות אופטימליות לאימון רשתות עמוקות.

Computer Vision System Toolbox

Semantic Segmentation באמצעות Deep Learning  והערכה + ויזואליציה של תוצאות הסגמנטציה.

עיבוד אות ותקשורת

Antenna Toolbox

  • אובייקט pbstack לתכנון ואנליזה של אנטנות PCB ויצירת קבצי Gerber.
  • שילוב אלמנטים של הספקי אנטנה וקליטה על גבי מפה.
LTE System Toolbox

Modeling of physical layer algorithms for 5G channel coding, narrowband Internet of Things (NB-IoT) links, and LTE V2X communication

LTE HDL Toolbox

כלי חדש המספק  Sample-Based blocks בסביבת Simulink עבור פיתוח ומימוש מערכות LTE, ליצירת קוד HDL סינתזבילי, אופטימלי וקריא באמצעות ה HDL-Coder עבור FPGA/ASIC.
ספריית הבלוקים כוללת בין היתר encoders, decoders (לדוג' turbo, CRC ו- convolutional), כמו כן גילוי אותות (PSS  ו- SSS).
מעבר נוח מ- Sample to Frame או Frame to Sample לשילוב של מערכות עיבוד מבוססות Frame הנמצאות ב- LTE System Toolbox.
ניתן למדל מערכת LTE באמצעות Simulink ולעבור בצורה מהירה לחומרה נתמכת של Xilinx/ Altera(Intel).

Signal Processing Toolbox

  • עודכנו אפשרויות נרחבות בSignal Analyzer App- – ייצור סקריפטים בצורה אוטומטית, חישוב persistence spectrum והוצאת איזורי זמן ספיצים מהאפליקציה ישירות לworkspace.
  • נוספה פונקצית pspectrum המאפשרת לחשב ספקטוגרמות עם אופציות נרחבות יותר: reassigned spectrogram, persistence spectrum.
  • יש לשים לב שבגרסה זו הפונקציות psd -spectrum השתנו לperiodogram, pspectrum  או pwelch.

Communication System Toolbox

  • תמיכה בפרוטוקולים חדשים:
  1. נוספה כעת תמיכה בפרוטוקול ZigBee בכדי לתכנן מערכות העובדות בפרוטוקול זה. ניתן לייצר ולפענח סיגנלים מתאימים לסטנדרט. הסיפריה כוללות דוגמאות לשכבת הראשונה והשנייה (PHY ו-MAC)
  2. ניתן כעת גם לייצר ולפענח סיגנלים לפרוטוקל NFC באמצעות MATLAB.
  • תמיכה רחבה יותר בערוצי MIMO – כעת ניתן להגדיר גם polarization עבור אנטנות בערוץ תוך כדי שינויים נוספים במערכת.

Phased Array System Toolbox

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

DSP System Toolbox

  • שיפור בחישוב לאובייקט Spectrum Analyzer (dsp.SpectrumAnalyzer) כעת ניתן להציג את החישוב באמצעות Filter Banks ולהוסיף spectral mask ישירות בתוך הGUI.
  • נוסף אובייקט חדש dsp.ZoomFFT האפשר לחשב רזולציה גבוהה עבור חלק מהתדרים בסט דאטה.
  • בגרסה העדכנית יש שיפור בדרישות חומרה עבור חישובי FFT -IFFT ל-HDL

יצירת קוד אוטומטית

MATLAB Coder

הגדלת התמיכה ביצירת קוד באופן אוטומטי עבור Machine Learning
  • discriminant analysis classifier models
  • linear regression models
  • support vector machine (SVM) regression models
  • ensembles of regression trees

GPU Coder

כלי חדש, כמפורט לעיל (בחלק של סביבת Deep Learning).

Verification and Validation

Simulink requirements

באמצעות כלי זה ניתן לייצר קישור בין פלטפורמות ניהול דרישות שונות (doors, word etc.) ולייצר בדיקות על המערכת.

Simulink Check

כלי שמציג מהם הסטנדרטים בהם קוד הסימולינק שלכם תומך ( iso, matrixes size, etc.), והאם הוא תואם לתקנים אלו.

Simulink Coverage

כלי לבדיקת אחוז הכיסוי של המערכת לפי הבדיקות שבוצעו ובמהלך יצירת הקוד.

מוצרים חדשים ועדכונים ברשיונות קיימים

GPU Coder מוצר חדש המאפשר יצירת קוד CUDA-C לטובת הרצה על מעבדי nVIDIA בצורה עצמאית. מצריך את הכלים הבאים:
MATLAB Coder, Parallel Computing Toolbox

LTE HDL Toolbox מוצר חדש המאפשר מידול ובחינה של טכנולוגיית LTE, והרצתה על גבי רכיבי FPGA ו-ASIC. מצריך את הכלים הבאים:
Simulink, Communications System Toolbox, Fixed-Point Designer

Text Analytics Toolbox – מוצר חדש לניתוח ולימוד של מידע טקסטואלי. מצריך את הכלים הבאים:
Statistics and Machine Learning Toolbox

פיצול של Simulink Verification &Validation הכלי מחולק מהיום ל-3 מוצרים נפרדים, בהתאם ליכולות המרכזיות שהיו קיימות. המטרה היא לאפשר פיתוח מהיר ונוח יותר, מתן הפתרונות המתאימים למפתחים, והיערכות לקראת יכולות עתידיות של כלים למהנדסי מערכת. בעלי הרשיון הקיים יקבלו את כל הרשיונות החדשים ללא עלות:
Simulink Check
Simulink Coverage
Simulink Requirements
שינוי תלויות
המוצר Simulink Design Verifier יצריך את המוצרים Simulink Coverage ו-Simulink Check.


רוצים לדעת עוד?

      מידע נוסף על הגירסה החדשה ניתן למצוא באתר  MathWorks

סקירות בעברית, בצירוף קישורים שימושיים, יופיעו בבלוג זה בעתיד הקרוב.

מידע על מועדי סמינרים וכנסים טכניים חינמיים בתחומים שונים, הכוללים גם סקירות אודות החידושים בגרסאות האחרונות, ניתן למצוא באתר סיסטמטיקס
ניתן יהיה להתרשם מהיכולות העדכניות של הגרסה בסמינרים הקרובים:
  • סמינר למידה עמוקה של תחום ה  Deep Learning- 21.11.17
  • כנס Systems  Autonomous - חדשנות בפיתוח מערכות אוטונומיות חכמות בסביבת MATLAB – 6.12.17
(ההשתתפות באירועים אלה הינה חינם, אך מותנית בהרשמה מראש).


יום שני, 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 (ראו למטה סקירה של החידושים בגרסה הנ"ל). היכולת צפויה להתווסף במהלך חודש אוקטובר.

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

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

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

Semantic Segmentation – סגמנטציה סמנטית הינה טכניקה להפרדה של אובייקט מהרקע תוך התייחסות זהה לאובייקטים מאותו קלאס (למשל – התייחסות אל שני כיסאות שונים בתור קלאס זהה). בגרסה הקרובה תתווסף אפשרות להוסיף שכבות ,FCN SegNet ו-PixelClassification (מצריך את ה-Computer Vision System Toolbox) ואפשר יהיה ליצור PSPNet (יצריך לבנות את הרשת, המעוניינים יכולים לקבל ממני דוגמה לשימוש ב-Alexnet בתור בסיס; כאמור – כחודשיים לאחר שחרור הגרסה מתוכנן שיחרור של תוסף של ResNet50, מה שיאפשר לשכפל די טוב את ה-PSPNet המקורי). 
בנוסף, לבעלי ה-Computer Vision System Toolbox - בגרסה יתווספו גם כל מיני מטריקות בתחום הסגמנטציה הסמנטית, לרבות IoU (מדד טיב בגילוי אובייקטים – היחס בין החיתוך של ה-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 – בזמן שהתמונות נקראות ומוזנות לתוך האימון - תהיה אפשרות לבצע פעולות גיאומטריות על מנת להגדיל את מידע האימון.

סוגים חדשים של שכבות – Deconv layer ,MaxUnPooling layer ועוד...

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


מה הלאה?

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

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

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


קישורים:

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

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

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

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

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