בשנים האחרונות, טכנולוגית "למידה עמוקה", שעושה שימוש ברשתות-עצביות מלאכותיות, זוכה לפופולריות וחווה הצלחות. נתאר אותה באמצעות שיטה דמיונית לאיתור סטודנטים במצוקה, כאלה שעלולים לפרוש מלימודיהם.
אחת הדרכים להגדיר למידה ממוחשבת היא היכולת של מכונה ללמוד ולאפיין תכונות של מערכת, לפי דוגמאות. אחד האלמנטים החשובים בתהליך היא "פונקצית שיערוך", שנותנת למחשב דרך להעריך את קיומן וחשיבותן של תכונות שונות בתהליך הלמידה. לדוגמה: פונקצית שיערוך בזיהוי תמונות עונה על השאלה "מה הסיכוי שתמונה ברשת מכילה צילום שלכם?".
שיטת מימוש פופולרית, שקיבלה השראה ממחקרי מוח, היא באמצעות "רשתות-עצביות מלאכותיות" [1]. בשיטה זו, הפונקציה ממומשת בחומרה בצורת רשת שמכילה שכבות רבות של אלמנטי חישוב. כל אלמנט בשכבה פנימית מקבל נתונים מאלמנטים בשכבה הקודמת, מבצע עליהם חישובים תוך שימוש בפרמטרים הקרויים "משקלים", ומעביר את התוצאות לאלמנטים בשכבה הבאה. בצורה זו, מזוקק המידע עד שבשכבה האחרונה מיוצרת תוצאה סופית, שהיא השערוך. נשמע מורכב? אכן זה כך. מרגישים מצוקה? כדי לעזור, נשתמש באנלוגיה.
בפוסט קודם [2], תיארנו רעיון די משונה שנוסה באוניברסיטת אריזונה, לבניית מערכת לזיהוי סטודנטים שעלולים לנשור מהלימודים. בנוסף לציונים, המערכת עוקבת היכן הסטודנטים מבלים את זמנם, ומה הם קונים. המטרה היא ליצור התראה על סטודנטים במצוקה, כדי שהיועצים באוניברסיטה יוכלו לסייע.
נניח שאנו מבקשים לבנות מערכת שנדרשת לשערך אם סטודנט בשנה הראשונה יצליח לסיים את התואר. המערכת מקבלת הרבה נתונים על הסטודנט (ציונים, התנהגות חברתית, כמה בירה הוא שותה...), ועושה חישובים תוך שימוש בפרמטרים הנקראים "משקלים" כדי להעריך את הסיכוי שהסטודנט ישרוד. באמצעות השימוש בנתונים של הרבה סטודנטים מוכרים, כאלו שסיימו את לימודיהם וכאלו שנשרו, ניתן "לאמן" את המערכת. האימון נעשה באמצעות מציאת ערכי המשקלים שהשימוש בהם בפונקציה יתן שגיאת שיערוך מינימלית.
דמיינו שאנשי האוניברסיטה בונים לשם כך משרד ענקי המכיל הרבה פקידים ("אלמנטי חישוב") שיושבים בשורות. כל פקיד מקבל נתונים ממספר פקידים בשורה הקודמת, ומבצע עליהם חישובים. כשהוא גומר, הוא קם ומעביר את התוצאה למספר פקידים בשורה הבאה, וכולי. נניח שהפקיד בשורה מסוימת מקבל את המידע על כמות הבירה שסטודנט צורך בשבוע. הוא מכפיל אותה בפרמטר ("משקל"), ומוסיף את כמות הוודקה שהסטודנט צורך מוכפלת במשקל אחר. על התוצאה הוא מבצע חישוב נוסף שנקרא "פונקציית מעבר", שנסביר עליה בהמשך. לבסוף, הוא מעביר את התוצאה לכמה פקידים בשורה הבאה. הם ישתמשו בה באופן דומה, למשל לשערך באיזו מידה הסטודנט בליין, כמה הוא בזבזן, כמה הוא דיכאוני, וכולי. תוצאות החישוב יועברו לפקידים בשכבות מתקדמות, שישקללו את חייו האישיים עם הציונים וייצרו את השערוך.
מהי "פונקציית המעבר"? הרעיון, שקיבל השראה ממחקרי המוח (רשתות נוירונים), הוא לתת לכל פקיד להיות "ראש גדול": במקום להעביר מספרים שונים לפקידים בשורות הבאות, שרק יעמיסו עליהם, ניתן לכל פקיד יכולת שיפוט עצמאית, לקבוע למשל: "הסטודנט נוטה לשתיינות". פונקציית המעבר מתרגמת את הערך שחושב על ידי הפקיד לערכים, כמו: "1" (משוכנע שזה נכון) או "0" (משוכנע שלא נכון). עבור ערכי ביניים, בהם יש אי-וודאות, הפונקציה מייצרת ערכים בין 0 ל-1.
בהתחלה, כל פקיד בוחר את המשקלים בצורה אקראית. בהישמע הגונג, מכניסים למערכת את הנתונים של הסטודנט הראשון. הפקיד מקבל את כמות הבירה שהסטודנט צרך, ומכפיל במשקל ההתחלתי (שנניח היה מספר גדול). לאחר מכן הוא מבצע חישוב דומה לגבי וודקה, ומסכם את התוצאות. לבסוף, אחרי חישוב פונקציית המעבר הוא מכריז: "90% סיכוי שהסטודנט נוטה לשתיינות!". האינפורמציה שהוא מעביר לפקידים בשורה הבאה מחלחלת ברשת, ולבסוף הפקיד הראשי מוציא שערוך סופי: "40% סיכוי שהסטודנט יצליח לסיים". נניח שידוע שהסטודנט דווקא הצליח. במקרה זה המנהל יכול לחשב את השגיאה הריבועית של השערוך: 2 ^( 1-0.4). בהמשך, התהליך מתבצע על שאר הסטודנטים, והמנהל מחשב את סכום כל ריבועי השגיאות. לבסוף, הוא מכריז: "אתם חבורה של פקידים לא-יוצלחים. יש שגיאה גדולה, צריכים להשתפר!".
כיצד הפקיד שלנו יכול להקטין את פונקציית השגיאה על ידי שינוי המשקל בו השתמש? לשם כך, הוא צריך להשתמש במתמטיקה. מי שלא למד אינפי, או שכח: הדרך הסטנדרטית למינימליזציה היא למצוא את ערך המשקל בו נגזרת פונקציית השגיאה ביחס אליו מתאפסת. אולם, כיוון שהנגזרת מאוד מורכבת, לא ניתן לחשב זאת בדרך אלגברית. לצורך זה, משתמשים באלגוריתם הקרוי "[3] gradient-descent ", שנותן באמצעות חישוב הנגזרת בנקודה הנוכחית, אינדיקציה באיזו מידה כדאי לשנות את המשקל באופן הדרגתי, כדי להתקרב למינימום. על ידי מספר סבבים בהם נעשים שינויים הדרגתיים, ניתן בדרך כלל להתקרב למינימום.
אחרי שהפקיד שלנו ושאר הפקידים עדכנו את המשקלים בהתאם לאלגוריתם, מכניסים שוב לרשת את נתוני כל הסטודנטים, מחשבים את השגיאה החדשה ושוב מעדכנים בהתאם לאלגוריתם את המשקלים. התהליך נמשך שוב ושוב עד אשר השגיאה נהיית קטנה. בשלב זה, המנהל מכריז "האימון נגמר! המערכת שלנו מוכנה לקלוט נתונים של סטודנטים חדשים, ולזהות מתקשים".
בצורה די מפתיעה, הסתבר בשנים האחרונות ששיטות אלו עובדות היטב. שילוב כמות גדולה של חומרה, אוסף גדול של דוגמאות לאימון, כיוונון הרשת ושימוש ב"פונקציות מעבר" מתאימות, מביא לתוצאות מרשימות. בנוסף, הסתבר שאין צורך לחלק תפקידים לפקידים. צריך פשוט למקם אותם, ובאמצעות הלמידה ההדרגתית ,המערכת תמצא כיצד להשתמש בהם ביעילות.
מקורות ולקריאה נוספת:
[1] רשתות-עצביות מלאכותיות
[2] ביג-דאטה במדע גדול בקטנה
[3] Gradient_descent