למידה עמוקה

למידה עמוקה (באנגלית: Deep Learning ולפעמים Deep Structured Learning) היא אוסף שיטות למידת מכונה מבוססות על רשתות עצביות מלאכותיות. שם התואר "עמוקה" בשם מתייחס ללמידה במבנה של שכבות, המאפשר לרשת ללמוד תכונות בהדרגה, תהליך המתבצע על ידי חילוץ דפוסים או תכונות מנתונים גולמיים כדי לשפר את ביצועי המודל. הלמידה יכולה להיות מונחית, מונחית למחצה או בלתי מונחית.<ref name="NatureBengio"></ref><ref></ref>

ארכיטקטורות למידה עמוקה כגון רשתות עצביות עמוקות (deep neural networks), למידת חיזוק עמוקה (deep reinforcement learning), רשתות עצביות חוזרות (recurrent neural networks), ורשתות קונבולוציה יושמו בתחומים מגוונים ביניהם: ראייה ממוחשבת, זיהוי דיבור, עיבוד שפה טבעית, תרגום מכונה, ביואינפורמטיקה, תכנון תרופות, ניתוח תמונות רפואיות, בדיקות חומרים ומשחקי לוח, בהן הניבו תוצאות דומות לאלו שהניבו מומחים אנושיים ובמקרים מסוימים אף עלו עליהן.<ref></ref><ref></ref>

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

חוקרי הבינה המלאכותית, מרווין מינסקי וסימור פפרט, הראו שפרספטרון (אלגוריתם הלומד תוך כדי ריצה) יחיד אינו יכול ליצור את השער הלוגי XOR,<ref></ref> אולם משפט הקירוב האוניברסלי הראה שרשת בעלת שכבה נסתרת אחת ברוחב לא מוגבל עם פונקציית הפעלה לא ליניארית יכולה להיות מסַוֶג אוניברסלי.<ref></ref> למידה עמוקה בדרך כלל עוסקת במספר גדול של שכבות בגודל מוגבל.

== הגדרה ==
issn=1610-1987}}</ref>
למידה עמוקה היא מחלקה של אלגוריתמים בתחום למידת המכונה<ref name="BOOK2014"></ref> המשתמש במספר שכבות כדי לחלץ בהדרגה תכונות ברמה גבוהה יותר מהקלט הגולמי. לדוגמה, בעיבוד תמונה דיגיטלי, שכבות נמוכות עשויות לזהות קצוות, בעוד שכבות גבוהות יותר עשויות לזהות את המושגים הרלוונטיים לאדם כגון ספַרוֹת, אותיות או פרצופים.

== סקירה כללית ==
רוב המודלים המודרניים של למידה עמוקה מבוססים על רשתות עצביות מלאכותיות, במיוחד רשתות עצביות קונבולוציוניות (CNN), אם כי הם יכולים לכלול גם נוסחאות הצעה (פרופוזיציוניות) או משתנים סמויים המאורגנים בשכבה במודלים מחוּללים עמוקים (generative models) כמו הצמתים ברשת אמונה עמוקה ומכונת בולצמן עמוקה.<ref name="BENGIODEEP"></ref>

בלמידה עמוקה, כל שכבה לומדת להפוך את נתוני הקלט שלה לייצוג מופשט ומרוכב יותר. ביישום של זיהוי תמונה, הקלט הגולמי עשוי להיות מטריצה של פיקסלים; שכבת הייצוג הראשונה עשויה להפשיט את הפיקסלים ולקודד את הקצוות, השכבה השנייה עשויה להרכיב ולקודד סידורים של קצוות; השכבה השלישית עשויה לקודד אף ועיניים; והשכבה הרביעית עשויה לזהות שהתמונה מכילה פנים. נקודה חשובה היא שתהליך למידה עמוק יכול ללמוד אילו תכונות למקם בצורה אופטימלית באיזו רמה בעצמו. אמנם, זה לא בהכרח מבטל את הצורך בהנחיה ידנית. לדוגמה, מספר משתנה של שכבות וגודלי שכבות יכולים לספק רמות שונות של הפשטה.<ref name="BENGIO2012"></ref>

המילה "עמוקה" ב"למידה עמוקה" מתייחסת למספר השכבות שבאמצעותן הנתונים עוברים עיבוד או שינוי. ליתר דיוק, למערכות למידה עמוקה יש עומק CAP (או credit assignment path) משמעותי. ה-CAP הוא שרשרת הטרנספורמציות מקלט לפלט. CAPs מתארים קשרים סיבתיים פוטנציאליים בין קלט ופלט. עבור רשת זרימה קדימה, העומק של ה-CAPs הוא זה של הרשת והוא מספר השכבות הנסתרות פלוס אחת (כיוון שגם שכבת הפלט מותאמת לפרמטרים). עבור רשתות עצביות חוזרות, שבהן אות עשוי להתפשט בשכבה יותר מפעם אחת, עומק ה-CAP עשוי להיות בלתי מוגבל. אין סף מוסכם אוניברסלי של עומק שמבדיל בין למידה "רדודה" ללמידה עמוקה, אבל רוב החוקרים מסכימים שלמידה עמוקה כוללת עומק CAP גבוה מ-2. CAP של עומק 2 הוכח כקירוב אוניברסלי במובן זה שהוא יכול לחקות כל פונקציה.<ref></ref> יתרה מכך, שכבות נוספות אינן מוסיפות ליכולת קירוב הפונקציות של הרשת. מודלים עמוקים (CAP > 2) מסוגלים לחלץ תכונות טובות יותר ממודלים רדודים ומכאן, שכבות נוספות עוזרות ללמוד את התכונות בצורה יעילה.

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

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

ניתן ליישם אלגוריתמים של למידה עמוקה על משימות למידה-ללא-פיקוח. זהו יתרון חשוב מכיוון שהנתונים שאינם מתויגים נמצאים בשפע רב יותר מהנתונים המסומנים. דוגמאות למבנים עמוקים שניתן לאמן באופן לא מפוקח הם מדחסי היסטוריה עצבית<ref name="scholarpedia"></ref> ורשתות אמונה עמוקות.

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

משפט הקירוב האוניברסלי הקלאסי נוגע ליכולתן של רשתות זרימה קדימה עם שכבה נסתרת יחידה בגודל סופי לקירוב פונקציות רציפות. בשנת 1989 פורסמה ההוכחה הראשונה על ידי ג'ורג' סיבנקו עבור פונקציות הפעלה סיגמואידיות והוכללה לארכיטקטורות זרימה קדימה רב-שכבתיות.<ref name="sonoda17"></ref>

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

הפרשנות ההסתברותית נובעת מתחום למידת המכונה. הוא כולל מסקנות, וכן את מושגי האופטימיזצה של אימון ובדיקה, הקשורים להתאוה והכללה, בהתאמה. ליתר דיוק, הפרשנות ההסתברותית מחשיבה את אי-ליניאריות ההפעלה כפונקציית התפלגות מצטר. הפרשנות ההסתברותית הובילה להכנסת הנשירה (dropout) כמסדרת (regulazier) ברשתות עצביות. הפרשנות ההסתברותית הוצגה על ידי חוקרים כולל הופפילד.<ref name="prml"></ref>

== היסטוריה ==
=== מהפכת הלמידה העמוקה ===
כיצד למידה עמוקה היא תת-קבוצה של למידת מכונה וכיצד למידת מכונה היא תת-קבוצה של בינה מלאכותית (AI).
בשנת 2012, צוות בראשות ג'ורג' א'דאהל זכה ב"אתגר הפעילות המולקולרית של מרק" באמצעות רשתות עצביות עמוקות רב-משימתיות כדי לחזות את היעד הביו-מולקולרי של תרופה אחת.<ref name="MERCK2012"></ref><ref name=":5"></ref> בשנת 2014, הקבוצה של הוכריטר השתמשה בלמידה עמוקה כדי לזהות השפעות מחוץ למטרה ורעילויות של כימיקלים סביבתיים ברכיבים תזונתיים, במוצרים ביתיים ובתרופות וזכתה ב"אתגר הנתונים של Tox21" של המכונים NIH, FDA ו-NCATS.<ref name="TOX21">"Toxicology in the 21st century Data Challenge"</ref><ref name="TOX21Data"></ref><ref name=":11"></ref>

השפעות נוספות משמעותיות בזיהוי תמונה או אובייקט הורגשו מ-2011 עד 2012. אף על פי שרשתות CNN שאומנו על-ידי back propagation היו בנמצא כבר עשרות שנים, והטמעות GPU של רשתות נוירונים היו בנמצא במשך שנים, כולל CNNs, היה צורך בהטמעות מהירות משמעותית של CNNs על GPUs כדי להתקדם בראייה ממוחשבת.<ref name="jung2004"></ref><ref name="chellapilla2006"></ref><ref name="LECUN1989">LeCun et al., "Backpropagation Applied to Handwritten Zip Code Recognition," Neural Computation, 1, pp. 541–551, 1989.</ref><ref name=":6"></ref> בשנת 2011, גישה זו השיגה לראשונה ביצועים על אנושיים בתחרות זיהוי דפוסים חזותיים. כמו כן, ב-2011 היא זכתה בתחרות כתב היד הסיני של ICDAR, ובמאי 2012 היא זכתה בתחרות פילוח התמונות של ISBI.<ref name=":8"></ref> עד 2011, רשתות CNN לא מילאו תפקיד מרכזי בכנסים של ראייה ממוחשבת, אבל ביוני 2012, מאמר של סיקסאן בכנס המוביל CVPR<ref name=":9"></ref> הראה כיצד איגום מקסימלי של CNN ב-GPU יכול לשפר באופן דרמטי רשומות בנצ'מרק רבים של ראייה. באוקטובר 2012, מערכת דומה מאת קריזבסקי<ref name="krizhevsky2012"></ref> זכתה בתחרות ImageNet בקנה מידה גדול בהפרש משמעותי על פני שיטות למידת מכונה רדודות. בנובמבר 2012, המערכת של Ciresan זכתה גם בתחרות ה-ICPR בנושא ניתוח תמונות רפואיות גדולות לגילוי סרטן, ובשנה שלאחר מכן גם ב-MICCAI Grand Challenge באותו נושא.<ref name="ciresan2013miccai"></ref> בשנים 2013 ו-2014, שיעור השגיאות במשימת ImageNet באמצעות למידה עמוקה הופחת עוד יותר, בעקבות מגמה דומה בזיהוי דיבור בקנה מידה גדול.

לאחר מכן הורחב סיווג התמונות למשימה המאתגרת יותר של יצירת תיאורים (כתוביות) לתמונות, לעיתים קרובות כשילוב של CNNs ו-LSTMs.<ref></ref>

כמה חוקרים קובעים שהניצחון ב-ImageNet באוקטובר 2012 עיגן את תחילתה של "מהפכת הלמידה העמוקה" ששינתה את תעשיית הבינה המלאכותית.<ref></ref>

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

== רשתות עצביות ==
=== רשתות עצבים מלאכותיות ===

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

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

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

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

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

נכון לשנת 2017, לרשתות עצביות יש בדרך כלל כמה אלפים עד כמה מיליוני יחידות ומיליוני חיבורים. אף על פי שמספר זה הוא בכמה סדרי גודל פחות ממספר הנוירונים במוח אנושי, רשתות אלו יכולות לבצע משימות רבות ברמה גבוהה מעבר לזו של בני אדם (למשל, זיהוי פנים, משחק "Go"<ref></ref>).

=== רשתות עצביות עמוקות ===
רשת עצבית עמוקה (DNN) היא רשת עצבית מלאכותית (ANN) עם שכבות מרובות בין שכבות הקלט והפלט. ישנם סוגים שונים של רשתות עצביות אך הן תמיד מורכבות מאותם מרכיבים: נוירונים, סינפסות, משקלים, הטיות ותפקודים.<ref name="Nokkada"></ref> רכיבים אלו פועלים באופן יחסית דומה למוח האנושי וניתן לאמן אותם כמו כל אלגוריתם ML אחר.

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

DNNs יכולים למדל קשרים לא ליניאריים מורכבים. ארכיטקטורות DNN מייצרות מודלים מורכבים שבהם האובייקט מתבטא כקומפוזיציה מרובדת של פרימיטיבים.<ref></ref> השכבות הנוספות מאפשרות הרכבה של תכונות משכבות נמוכות יותר, ועשויות ליצור מודלים של נתונים מורכבים עם פחות יחידות מאשר רשת רדודה בעלת ביצועים דומים. לדוגמה, הוכח כי קל יותר באופן אקספוננציאלי, לבצע קירוב לפולינומים דלילים רבי-משתנים עם DNNs מאשר עם רשתות רדודות.

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

DNNs הם בדרך כלל רשתות הזנה קדימה שבהן נתונים זורמים משכבת הקלט לשכבת הפלט מבלי לחזור אחורה. בתחילה, ה-DNN יוצר מפה של נוירונים וירטואליים ומקצה ערכים מספריים אקראיים, או "משקלות", לקשרים ביניהם. המשקולות והכניסות מוכפלות ומחזירות פלט בין 0 ל-1. אם הרשת לא זיהתה במדויק דפוס מסוים, אלגוריתם יתאים את המשקולות.<ref></ref> כך האלגוריתם יכול להפוך פרמטרים מסוימים למשפיעים יותר, עד שהוא יקבע את המניפולציה המתמטית הנכונה לעיבוד מלא של הנתונים.

רשתות עצביות חוזרות (RNNs), שבהן נתונים יכולים לזרום לכל כיוון, משמשות ליישומים כמו מודלים של שפות.<ref name="gers2001"></ref><ref name="NIPS2014"></ref><ref name="MIKO2010"></ref> זיכרון גדול לטווח-קצר יעיל במיוחד לשימוש זה.<ref name=":0"></ref><ref name=":10"></ref>

רשתות קונבולוציה (CNN) משמשות בראייה ממוחשבת.<ref name="LECUN86"></ref> CNNs יושמו גם למידול אקוסטי לזיהוי דיבור אוטומטי (ASR).<ref name=":2"></ref>

==== אתגרים ====
כמו ב-ANN, בעיות רבות יכולות להתעורר עם DNNs עם הכשרה "נאיבית". שתי בעיות נפוצות הן התאמת יתר וזמן חישוב.

DNNs נוטים להתאים יתר על המידה משום שכבות ההפשטה הנוספות, המאפשרות להם למדל תלויות נדירות בנתוני האימון. הסדרת (רגולריזציה) שיטות כגון "הגיזום היחיד" של איבננקו<ref name="ivak1971"></ref> או דעיכת משקל (<math> \ell_2 </math> רגוליזציה) או דלילות ( <math> \ell_1 </math> - רגוליזציה) ניתן ליישם במהלך האימון כדי לטפל בחלק משמעותי מהתאמת היתר.<ref></ref> לחלופין, הסדרת נשירה משמיטה באופן אקראי יחידות מהשכבות הנסתרות במהלך האימון. זה עוזר לשלול תלות נדירה.<ref name="DAHL2013"></ref> לבסוף, ניתן להגדיל את הנתונים באמצעות שיטות כגון חיתוך וסיבוב, כך שניתן להגדיל מערכי אימונים קטנים יותר כדי להקטין את הסיכוי להתאמת יתר.<ref></ref>

DNNs חייבים לקחת בחשבון פרמטרים רבים של אימון, כגון הגודל (מספר השכבות ומספר היחידות לשכבה), קצב הלמידה והמשקלים הראשוניים. סריקה של מרחב הפרמטרים בחיפוש עבור פרמטרים אופטימליים ייתכן שלא יהיה אפשרי בשל עלות הזמן ומשאבי החישוב. טריקים שונים, כגון batching (חישוב גרדיאנט על מספר דוגמאות אימון בו-זמנית ולא דוגמאות בודדות)<ref name="RBMTRAIN"></ref> מאיצים את החישוב. יכולות עיבוד גדולות של ארכיטקטורות ליבות רבות (כגון GPUs או Intel Xeon Phi) הביאו להאצות משמעותיות באימון, בגלל ההתאמה של ארכיטקטורות עיבוד כאלה למטריצה ולחישובי וקטור.<ref></ref><ref></ref>

לחלופין, מהנדסים עשויים לחפש סוגים אחרים של רשתות עצביות עם אלגוריתמי אימון פשוטים ומתכנסים יותר. CMAC (בקר דגם articulation cerebellar) הוא סוג כזה של רשת עצבית. זה לא דורש שיעורי למידה או משקלים ראשוניים אקראיים עבור CMAC. ניתן להבטיח שתהליך האימון יתכנס בשלב אחד עם אצווה חדשה של נתונים, והמורכבות החישובית של אלגוריתם האימון היא ליניארית ביחס למספר הנוירונים המעורבים.<ref name="Qin1">Ting Qin, et al. "A learning algorithm of CMAC based on RLS." Neural Processing Letters 19.1 (2004): 49-61.</ref>

== חומרה ==
מאז שנות ה-2010, התקדמות הן באלגוריתמי למידת מכונה והן בחומרת המחשבים הובילה לשיטות יעילות יותר לאימון רשתות עצביות עמוקות, המכילות שכבות רבות של יחידות נסתרות לא ליניאריות ושכבת פלט גדולה מאוד באופן יחסי.<ref></ref> עד שנת 2019, יחידות עיבוד גרפי (GPUs), לעיתים קרובות עם שיפורים ספציפיים ל-AI, החליפו את המעבדים כשיטה הדומיננטית לאימון AI ענן מסחרי בקנה מידה גדול.<ref></ref> בשנת 2015 החלה גוגל להשתמש ביחידות (TPU) שפיתחה להאצת למידת מכונה של רשתות עצביות עמוקות, באמצעות תוכנת TensorFlow.<ref></ref>

OpenAI העריכה את חישוב החומרה המשמש בפרויקטים הגדולים ביותר של למידה עמוקה מ-AlexNet (2012) ועד AlphaZero (2017), ומצאה עלייה של פי 300,000 בכמות החישוב הנדרשת, עם קו מגמה של זמן הכפל של 3.4 חודשים.<ref></ref><ref></ref>

==לקריאה נוספת==
* מרכוס דו סוטוי, תוכנת היצירתיות - איך לומדת הבינה המלאכותית לכתוב, לצייר ולחשוב, תרגמה: מיכל קירזנר-אפלבוים, ספרי עליית הגג וידיעות ספרים, 2022.

==קישורים חיצוניים==

* [https://colab.research.google.com/drive/1hwhi9bK7GQxGxAm_1mSE8q1Xw4cbab8E?usp=sharing מחברת אינטראקטיבית שמנסה להסביר את מושגי היסוד בתחום].
* [https://www.youtube.com/watch?v=c0C6vih3Q1o מהי למידה עמוקה? - פרופ' ליאור רוקח] 

== הערות שוליים ==

*
קטגוריה:בינה מלאכותית