טכנולוגיית Deep Learning הפכה בשנים האחרונות לאחת המרכזיות בעולם הבינה המלאכותית. היא מאפשרת למחשבים לזהות דפוסים מורכבים, להבין תמונות וטקסט ולבצע משימות שבעבר נחשבו מסובכות מדי עבור אלגוריתמים מסורתיים.
בשלב שבו מתחילים להעמיק בתחום, מהר מאוד נתקלים בשני מודלים שחוזרים שוב ושוב: CNN ו RNN. לכל אחד מהם יש תפקיד אחר ודרך שונה להתמודד עם הנתונים. ובכל זאת, עם כל שפע המושגים והקיצורים, קל לאבד כיוון ולהרגיש שצריך “מילון” כדי לעקוב.
לכן במאמר הזה ננסה להסביר בצורה פשוטה וברורה מה ההבדל בין המודלים, מתי כדאי להשתמש בכל אחד מהם ואיך זה נראה בפרויקטים אמיתיים.
קודם כל סדר: AI, Machine Learning ו-Deep Learning
רשת עצבית מלאכותית מורכבת משכבות של “נוירונים”:
• שכבת קלט שמקבלת את הנתונים, למשל פיקסלים של תמונה, מילים במשפט, מדדים מספריים ועוד
• שכבות נסתרות, שכבות ביניים שמבצעות חישובים ולומדות ייצוגים הולכים ומופשטים של הדאטה
• שכבת פלט שנותנת את התוצאה, לדוגמה קטגוריה של תמונה, מילה הבאה במשפט או תחזית מחיר
בזמן האימון הרשת:
מקבלת דוגמאות קלט עם תוויות נכונות של פלט רצוי
מחשבת תחזית
מודדת שגיאה בין התחזית למציאות
מגלגלת את השגיאה אחורה ומעדכנת את המשקלים, תהליך שנקרא Backpropagation
חוזרת על זה שוב ושוב עד שביצועי המודל משתפרים
כדי שזה יעבוד טוב בעולם האמיתי צריך:
• הרבה דאטה איכותי
• כוח מחשוב, בדרך כלל GPU או TPU
• ארכיטקטורה מתאימה לבעיה, וכאן נכנסים CNN
איך רשת עצבית עובדת ולמה היא נחשבת “עמוקה”?
רשת עצבית מלאכותית מורכבת משכבות של “נוירונים”:
• שכבת קלט שמקבלת את הנתונים, למשל פיקסלים של תמונה, מילים במשפט, מדדים מספריים ועוד
• שכבות נסתרות, שכבות ביניים שמבצעות חישובים ולומדות ייצוגים הולכים ומופשטים של הדאטה
• שכבת פלט שנותנת את התוצאה, לדוגמה קטגוריה של תמונה, מילה הבאה במשפט או תחזית מחיר
בזמן האימון הרשת:
מקבלת דוגמאות קלט עם תוויות נכונות של פלט רצוי
מחשבת תחזית
מודדת שגיאה בין התחזית למציאות
מגלגלת את השגיאה אחורה ומעדכנת את המשקלים, תהליך שנקרא Backpropagation
חוזרת על זה שוב ושוב עד שביצועי המודל משתפרים
כדי שזה יעבוד טוב בעולם האמיתי צריך:
• הרבה דאטה איכותי
• כוח מחשוב, בדרך כלל GPU או TPU
• ארכיטקטורה מתאימה לבעיה, וכאן נכנסים CNN ו RNN.
CNN Convolutional Neural Networks כשחושבים בתמונות
CNN הוא סוג רשת שמתמחה בנתונים מרחביים, בעיקר תמונות, אבל גם אודיו וסדרות עתיות שניתן לסדר כגריד.
הרעיון המרכזי
במקום שכל נוירון יתחבר לכל פיקסל בתמונה, CNN משתמש במסננים קטנים שנעים על פני התמונה:
• בשכבות הראשונות המסננים לומדים לזהות קצוות, פינות וטקסטורות
• בשכבות הביניים הם לומדים צורות בסיסיות כמו עיגולים, קווים ודפוסים
• בשכבות העמוקות הם לומדים אובייקטים מורכבים יותר, למשל עיניים, פרצוף או רכב
היתרון הגדול של CNN
• שיתוף משקלים, אותו פילטר רואה אזורים שונים בתמונה
• פחות פרמטרים, המודל קומפקטי יותר וקל יותר לאימון
• עמידות להזזות קטנות, החפץ זז קצת בתמונה והמודל עדיין מזהה אותו נכון
איפה משתמשים ב CNN
• זיהוי תמונה וסיווג תמונות, לדוגמה האם בתמונה יש חתול, מכונית, גידול רפואי או מוצר מסוים בחנות
• זיהוי פנים ומעקב אחר אובייקטים בווידאו
• עיבוד תמונה רפואית כמו MRI, CT וצילומי רנטגן
• מערכות רכב אוטונומי לזיהוי תמרורים, הולכי רגל ונתיבים
• עיבוד אודיו כספקטרוגרמה לצורך זיהוי דיבור, זיהוי מוזיקה וסיווג צלילים
למה Data Scientist אוהב CNN
ברוב בעיות הראייה הממוחשבת CNN הוא נקודת פתיחה טבעית:
• הוא לומד בעצמו את הפיצ’רים, אין צורך להנדס ידנית תכונות מתמונות
• יש ספריות מוכנות ומודלים טרום אימון שניתן לבצע עליהם Fine Tuning
• הוא מתאים מאוד לפרויקטים שבהם הדאטה מגיע כתמונות או וידאו, תחום הולך וגדל בתעשייה
RNN Recurrent Neural Networks כשחושבים רצף
RNN נולדו עבור בעיות שבהן הסדר חשוב. לא רשימה של ערכים אלא רצף בזמן, כמו טקסט, סאונד או סדרת מדדים לאורך זמן.
הרעיון המרכזי
בניגוד לרשת רגילה שבה כל קלט נחשב בנפרד, RNN מחזיק מצב פנימי Hidden State:
• בכל צעד הוא מקבל קלט חדש, מילה במשפט, מדד יומי בבורסה או תו באודיו
• משנה את המצב הפנימי בהתאם
• מפיק פלט שמבוסס גם על מה שהיה קודם
כך המודל יכול:
• לזכור הקשר, למשל מה נאמר בתחילת המשפט
• להבין תלות בזמן, מה קרה אתמול משפיע על מה יקרה היום
הבעיה דעיכת גרדיאנטים
RNN בסיסי מתקשה ללמוד תלות ארוכת טווח. כשמנסים לעדכן את המשקלים, הגרדיאנטים נעלמים לאורך ציר הזמן, ולכן המודל זוכר בעיקר מה שקרה לפני כמה צעדים בלבד.
כדי לפתור את זה פותחו וריאנטים מתקדמים:
• LSTM Long Short Term Memory
• GRU Gated Recurrent Unit
שניהם מאפשרים למודל ללמוד מה לשמור בזיכרון, מה לשכוח ואיזה מידע להעביר קדימה.
איפה משתמשים ב RNN, LSTM ו GRU
• עיבוד שפה טבעית, מודלים קלאסיים לניתוח טקסט, תרגום מכונה, חיזוי מילה הבאה וניתוח סנטימנט
• סדרות עתיות, חיזוי ביקוש, חיזוי מכירות, חיזוי טמפרטורות וניתוח נתוני חיישנים
• אודיו, זיהוי דיבור, סיווג צלילים וניתוח מוזיקה
• נתוני IoT, זרמים רציפים מחיישנים בתעשייה, בתחבורה ובאנרגיה
כיום נכנסו גם מודלים מבוססי Transformer ששברו את השוק בעולמות הטקסט והויז’ן, אבל ההבנה של RNN ולמה היה צריך אותם היא בסיס חשוב לכל מי שנכנס לעולם ה Deep Learning.
CNN מול RNN מי מתאים לאיזה סוג בעיה
סיכום בצורה פשוטה.
סוג הדאטה
• תמונה סטטית או וידאו קצר, CNN
• רצף טקסט, אודיו או סדרת מדדים לאורך זמן, RNN או LSTM או GRU
• וידאו ארוך עם הקשר בזמן, שילוב של CNN על כל פריים ורשת רציפה על הרצף של הפיצ’רים
מה אנחנו רוצים שהמודל יבין
• מבנה מרחבי כמו צורות, קצוות ואובייקטים מתאים ל CNN
• הקשר בזמן כמו מה בא לפני מה ודפוסי שינוי מתאים ל RNN
מגבלות מעשיות
• CNN בדרך כלל מאומן מהר יותר בבעיות ראייה, ובנוי לנצל טוב יותר GPU על דאטה מרחבי
• RNN יכול להיות כבד יותר בחישוב, במיוחד על רצפים ארוכים, ודורש תכנון זהיר של אורך הרצף, חלונות זמן וכדומה
איך Data Scientist בוחר
מסתכל על הדאטה ושואל האם זה גריד כמו תמונה, רצף כמו טקסט או זמן, או שילוב
מגדיר את המשימה, סיווג, חיזוי, זיהוי חריגות, תרגום או יצירה
מתחיל עם ארכיטקטורה סטנדרטית, CNN לויז’ן ו LSTM לסדרות עתיות
משפר בהדרגה, הוספת שכבות, מעבר למודלים היברידיים או שימוש ב Transformers במידת הצורך
אתגרים בעבודה עם CNN ו-RNN בעולם האמיתי
כמו כל כלי חזק, גם כאן יש אותיות קטנות.
• צורך בכמויות גדולות של דאטה, במיוחד לתמונות וטקסט, אחרת המודל ישנן את הדוגמאות במקום ללמוד עקרונות כלליים
• כוח מחשוב, אימון מודלים עמוקים על CNN ו RNN דורש GPU או TPU ולעיתים ענן ייעודי
• Overfitting, מודל עמוק יכול להסתגל יותר מדי לנתוני האימון וליפול בנתוני אמת
• Explainability, קשה לעיתים להסביר למנהל למה המודל החליט מה שהחליט, במיוחד ברשתות עמוקות
• בייס בדאטה, אם הדאטה מוטה גם המודל יהיה מוטה
לכן בעולם האמיתי Data Scientist לא רק בונה מודל. הוא גם מנקה דאטה, מגדיר ניסויים, בודק מדדי ביצועים, מטפל בבייס ובשאלות אתיות ומתאים את המודל לסביבת פרודקשן.
כלים וטכנולוגיות לעבודה עם CNN ו-RNN
מי שרוצה לפתח מודלי Deep Learning יעבוד בדרך כלל עם:
• TensorFlow ו Keras, סטנדרט נפוץ בתעשייה, במיוחד לפרודקשן וסביבות ענן
• PyTorch, מאוד פופולרית במחקר ובסטארטאפים, גמישה ונוחה לניסויים
• ספריות דאטה כמו NumPy ו Pandas, וכן ספריות לטעינת ועיבוד תמונות ואודיו
• פלטפורמות ענן כגון Google Colab, AWS, Azure ו GCP להרצת מודלים על GPU גם בלי חומרה ייעודית
• כלים לניטור ניסויים כמו TensorBoard ו MLflow
בפועל, כמעט כל פרויקט Data Science רציני ידרוש שילוב של יכולות, עבודה עם דאטה, הבנת בעיה עסקית ושליטה בכלים האלה כדי לבנות מודלים CNN ו RNN בצורה יעילה.
איך זה נראה בפרויקט Data Science אמיתי?
נניח שאתם עובדים בחברת איקומרס ויש לכם שתי משימות.
לזהות אוטומטית קטגוריה של מוצר מתוך תמונת מוצר שהמוכר העלה
לחזות ביקוש שבועי לכל מוצר על בסיס היסטוריית מכירות
בפרויקט כזה:
• למשימה הראשונה תבחרו CNN, המודל יקבל את התמונה וילמד לזהות פיצ’רים ויזואליים שמבדילים בין נעל ספורט, חולצה ותיק
• למשימה השנייה תבחרו RNN או LSTM, המודל יראה את סדרת המכירות לאורך זמן וילמד דפוסים עונתיים, טרנדים ושינויים
כ Data Scientist תעברו את השלבים הבאים:
• הבנת הבעיה העסקית והגדרת מטרות מדידה כמו Accuracy, Recall או MAPE
• איסוף וניקוי הדאטה, חלוקה לאימון, ולידציה וטסט
• בחירת ארכיטקטורה ראשונית CNN או LSTM, הרצת ניסויים והיפרפרמטר טיונינג
• בחינת ביצועים מול דאטה אמיתי ותיקוף עסקי מול אנשי מוצר ומנהלים
• פריסה לסביבת פרודקשן וניטור שוטף
זה הרגע שבו הידע התיאורטי על CNN ו RNN הופך ליתרון תחרותי בשוק העבודה.
למי מתאים ללמוד Deep Learning, CNN ו-RNN?
בעבר התחום הזה היה שייך כמעט רק לחוקרים באקדמיה. היום זה כבר חלק מרכזי מעבודת Data Scientist, Machine Learning Engineer ואפילו מפתחי תוכנה שרוצים להכניס AI למוצר.
זה מתאים במיוחד למי ש:
• אוהב לעבוד עם דאטה ולפתור בעיות מורכבות
• נמשך לשילוב של מתמטיקה, קוד וחשיבה עסקית
• רוצה לעבוד על פרויקטים שנוגעים לטקסט, תמונות, וידאו, רפואה, פיננסים, סייבר ועוד
הבסיס הטוב ביותר לפני שקופצים למודלים עמוקים כולל:
• שליטה טובה בפייתון
• הבנה במושגי בסיס בסטטיסטיקה, אלגברה לינארית ו Machine Learning
• נכונות ללמוד, להתנסות ולעבוד על פרויקטים אמיתיים ולא רק לקרוא תיאוריה
ללמוד לעבוד עם המודלים האלה
אם המושגים CNN, RNN, LSTM ו Deep Learning מדליקים לכם נורה של סקרנות, זה בדרך כלל סימן טוב.
בקורס Data Science של ג’ון ברייס לומדים לא רק את התאוריה, אלא בעיקר איך להשתמש בכל זה בפרויקטים אמיתיים:
• מתחילים מהבסיס, פייתון, סטטיסטיקה ו Machine Learning קלאסי
• עוברים למודלי Deep Learning, כולל CNN לראייה ממוחשבת ו RNN או LSTM לסדרות עתיות וטקסט
• עובדים עם הספריות המובילות כמו TensorFlow, Keras ו PyTorch
• מתרגלים על דאטה אמיתי מהתעשייה ובונים פרויקטים שיכולים להיכנס לפורטפוליו מקצועי
המטרה היא שתצאו מהקורס לא רק עם הבנה מה זה CNN ו RNN, אלא עם היכולת לקחת בעיה אמיתית, לבחור את הארכיטקטורה הנכונה, לאמן מודל ולהביא תוצאות שמדברות בשפה של העסק.
אם אתם רוצים להפוך את הסקרנות הזו לקריירה בעולם ה Data Science וה AI, זה בדיוק המקום להתחיל בו.
