למידת מכונה מקוונת (Online Machine Learning)
הגדרה
למידת מכונה מקוונת (Online Machine Learning) היא שיטה שבה המודל לומד מנתונים שמגיעים בזה אחר זה ומתעדכן אחרי כל דוגמה או קבוצה קטנה, במקום להתאמן פעם אחת על כל הנתונים יחד.
💡 דוגמה
מסנן דואר זבל שלומד באופן מקוון לא מחכה לאימון הבא.
בכל פעם שמישהו מסמן הודעה כספאם, המודל מתעדכן, ווהעדכון עשוי לעזור לו לזהות הודעות דומות בהמשך.
לומדים תוך כדי תנועה
בגישה נפוצה, מאמנים מודל על ערימה של נתונים שנאספו מראש, ומשתמשים בו כמו שהוא עד לעדכון הבא. בלמידת מכונה מקוונת (Online Machine Learning) הסדר שונה. לפי ויקיפדיה, הנתונים "נעשים זמינים בסדר עוקב", וכל דוגמה חדשה משמשת לעדכון המודל שיחזה את הנתונים הבאים — בניגוד ללמידה באצווה (Batch Learning), שבה המודל לומד מכל נתוני האימון בבת אחת.
סקירה רחבה של התחום, שפרסמו סטיבן הוי ושותפיו ב-arXiv ב-2018, מתארת את זה כלמידה "מרצף של דוגמאות, אחת בכל פעם". המטרה, לפי הסקירה, היא שהמודל יחזה נכון שוב ושוב לאורך הרצף, כשהוא נעזר בתשובות הנכונות של המקרים הקודמים — מה שנקרא אמת קרקע (Ground Truth). במילים פשוטות: המודל מנחש, מגלה מה הייתה התשובה, מתקן את עצמו, וממשיך לדוגמה הבאה.
למה לא פשוט לאמן מחדש
ויקיפדיה מציינת שני מצבים שבהם משתמשים בלמידה מקוונת. הראשון הוא גודל: כשאי אפשר מבחינה חישובית להתאמן על כל מערך הנתונים יחד, צריך אלגוריתם שלומד מהנתונים בחלקים. התיעוד של ספריית scikit-learn מכנה זאת למידה "מחוץ לזיכרון" (Out-of-core) — למידה מנתונים שלא נכנסים לזיכרון הראשי של המחשב. לפי התיעוד, היכולת ללמוד בהדרגה מקבוצות קטנות של דוגמאות, "שלעיתים נקראת 'למידה מקוונת'", היא המפתח לכך, כי בכל רגע נתון נמצאות בזיכרון רק מעט דוגמאות. בספרייה הזו עושים את זה בפקודה partial_fit, שקיימת רק בחלק מהאלגוריתמים.
המצב השני הוא שינוי: כשהמערכת צריכה להסתגל לדפוסים חדשים בנתונים, או כשהנתונים עצמם משתנים עם הזמן, כמו מחירים בשווקים פיננסיים. כאן נמצא הקשר לסחיפת מושג (Concept Drift) — המצב שבו העולם משתנה והמודל נשאר מאחור. סחיפת מושג היא הבעיה; למידה מקוונת היא אחת הדרכים להתמודד איתה.
צ'יפ הוין, שכותבת על הנדסת מערכות למידת מכונה, כתבה בינואר 2022 שלדבריה "רוב החברות" מאמנות מחדש את המודל מאפס בכל פעם. החלופה שהיא מתארת היא אימון שממשיך מהמודל הקיים על הנתונים החדשים בלבד.
ניחוש, תשובה, תיקון
אחד האלגוריתמים הנפוצים בתחום הוא ירידת גרדיאנט סטוכסטית (Stochastic Gradient Descent): אחרי כל דוגמה, המודל מזיז מעט את המשקולות שלו בכיוון שנועד להקטין את הטעות. ויקיפדיה מציינת גרסה ביניים נפוצה — למידה במנות קטנות (Mini-batch), שמעבדת בכל פעם קבוצה קטנה של דוגמאות ונחשבת "מעין-מקוונת". לפי ויקיפדיה, השילוב של מנות קטנות עם התפשטות לאחור הוא כיום שיטת האימון המקובלת בפועל לרשתות נוירונים. כלומר, עדכון בצעדים קטנים משמש גם באימון על מאגר נתונים קבוע, ולא רק כשהנתונים מגיעים ברצף.
יש גם מסגרת תיאורטית שמתייחסת ללמידה מקוונת כמו למשחק חוזר: בכל סיבוב המודל בוחר, ואז "הטבע" מגלה כמה הבחירה עלתה לו. המדד המרכזי שם נקרא חרטה (Regret): ההפרש בין ההפסד המצטבר של המודל לבין ההפסד של הבחירה הקבועה הטובה ביותר, כפי שהיא נראית בדיעבד.
הסקירה של הוי ושותפיו מחלקת את התחום לשלוש קבוצות לפי סוג המשוב: למידה שבה התשובה הנכונה מתקבלת תמיד במלואה, למידה עם משוב חלקי, ולמידה בלי משוב בכלל.
דוגמה מהתעשייה: פרסומות בחיפוש של גוגל
אחד התיאורים המפורטים של למידה מקוונת בקנה מידה גדול הוא מאמר של ברנדן מקמהן ושותפיו מגוגל, שהוצג בכנס KDD ב-2013. המאמר עוסק בחיזוי הסיכוי שמשתמש ילחץ על מודעה בתוצאות החיפוש — מספר שמשפיע על אילו מודעות יוצגו ובאיזה סדר. לפי המאמר, המערכת צריכה לחזות "מיליארדים רבים של פעמים ביום" ולעדכן את המודל במהירות ככל שמתקבלות לחיצות ואי-לחיצות חדשות. הבסיס הוא אלגוריתם למידה מקוונת בשם FTRL-Proximal.
פרט מעניין במאמר נוגע לבדיקה. במקום להפריש חלק מהנתונים לבדיקה, הצוות השתמש ב"אימות הדרגתי" (Progressive Validation): כל דוגמה נבדקת קודם — המודל חוזה אותה — ורק אחר כך הוא מתאמן עליה. לפי הכותבים, השיטה מודדת את הביצועים "רק על הנתונים העדכניים ביותר לפני שמתאמנים עליהם", בדיוק כמו במצב האמיתי, ומאפשרת להשתמש בכל הנתונים גם לאימון וגם לבדיקה.
הסיכונים: שכחה, רעש וקלט עוין
מודל שמתעדכן כל הזמן מקבל גם את החסרונות של זה. ויקיפדיה מזהירה שאלגוריתמים של למידה מקוונת עלולים לסבול משכחה קטסטרופלית (Catastrophic Forgetting) — אובדן חד של ידע קודם כשהמודל לומד דבר חדש. היא מוסיפה שלמידה מתמשכת מזרם נתונים שההתפלגות שלו משתנה "בדרך כלל מובילה" לשכחה כזו.
בעיה אחרת היא דוגמאות שגויות. התיעוד של scikit-learn מציין שהפרספטרון נשאר רגיש לדוגמאות עם תווית שגויה גם אחרי שראה הרבה דוגמאות, ואילו משפחת אלגוריתמי ה-SGD עמידה יותר לתקלות כאלה. אבל יש לזה מחיר: ככל שקצב הלמידה שלהם יורד עם הזמן, הם נותנים פחות משקל לדוגמאות שונות מאוד, גם כשהן נכונות, אם הן מגיעות מאוחר ברצף.
וכשהמודל לומד ממה שהציבור מזין לו, הציבור יכול גם לנצל את זה. הצ'טבוט Tay של מיקרוסופט תוכנן, לפי ויקיפדיה, ללמוד מאינטראקציה עם משתמשי טוויטר, והושבת בתוך 16 שעות מההשקה במרץ 2016, אחרי שפרסם הודעות פוגעניות. ויקיפדיה מציינת שחלק גדול מההודעות נבעו מניצול של יכולת "חזור אחריי", ושלא ידוע בציבור אם זו הייתה יכולת מובנית או משהו שהבוט למד. ובכל זאת, הסיפור ממחיש למה מערכת שלומדת מקלט ציבורי צריכה הגנה מפני קלט זדוני — נושא שנדון בערך על הרעלת נתונים.
כלים ומה הלאה
לצד scikit-learn, ויקיפדיה מזכירה את Vowpal Wabbit, מערכת קוד פתוח ללמידה מקוונת שמשתמשת ב"טריק הגיבוב" (Hashing Trick) כדי שמספר המאפיינים לא יגדל עם כמות הנתונים. ספרייה ייעודית יותר היא River, שמגדירה את עצמה כספריית פייתון ללמידת מכונה מקוונת. לפי עמוד הפרויקט ב-GitHub, היא נוצרה ממיזוג של שתי ספריות קודמות, creme ו-scikit-multiflow.
ויקיפדיה מונה כתחומי שימוש מודעות בחיפוש, ניהול תיקי השקעות, חיזוי מסלול קצר בכבישים עם תנועה משתנה, סינון דואר זבל, זיהוי הונאות בזמן אמת ותמחור דינמי במסחר מקוון. היא מציינת גם עניין גובר בשימוש בלמידה מקוונת במודלי שפה גדולים, כדי שיוכלו להסתגל באופן רציף אחרי האימון הראשוני. כאן הלמידה המקוונת פוגשת את שאלת הלמידה המתמשכת (Continual Learning): איך מודל ממשיך ללמוד בלי לשכוח את מה שכבר ידע.
📬 הגיליון השבועי של Wiki-AI
פעם בשבוע, ביום ראשון: שלושת הדברים החשובים שקרו בעולם הבינה המלאכותית, בעברית פשוטה, וערכים חדשים באנציקלופדיה. לגיליונות
| למידה באצווה | למידה מקוונת | |
|---|---|---|
| איך מגיעים הנתונים | כל נתוני האימון זמינים מראש | בזה אחר זה, ברצף |
| מתי המודל מתעדכן | במהלך אימון על מאגר שנאסף מראש, ושוב רק באימון הבא | אחרי כל דוגמה או קבוצה קטנה |
| זיכרון | צריך גישה לכל מערך הנתונים | במימוש מחוץ לזיכרון, רק מעט דוגמאות בזיכרון בכל רגע |
| סיכון מרכזי | המודל מתיישן כשהעולם משתנה | שכחה של ידע קודם ורגישות לדוגמאות שגויות |
שאלות נפוצות ❓
מה ההבדל בין למידת מכונה מקוונת ללמידה מקוונת של סטודנטים?
אין קשר. בלמידת מכונה, "מקוונת" פירושה שהמודל לומד מנתונים שמגיעים ברצף ומתעדכן תוך כדי, ולא שהוא מחובר לאינטרנט. מודל יכול ללמוד באופן מקוון גם על מחשב מנותק.
האם למידה מקוונת היא אותו דבר כמו ירידת גרדיאנט סטוכסטית?
לא בדיוק. ירידת גרדיאנט סטוכסטית היא אחד האלגוריתמים הנפוצים של למידה מקוונת: אחרי כל דוגמה המודל מתקן מעט את המשקולות שלו. אבל למידה מקוונת היא שם לדרך העבודה כולה — לימוד מנתונים שמגיעים ברצף — ויש לה גם אלגוריתמים אחרים, כמו FTRL-Proximal שבו השתמשה גוגל לחיזוי לחיצות על מודעות.
מה הקשר לסחיפת מושג?
סחיפת מושג היא הבעיה: העולם משתנה והמודל נשאר מאחור. למידה מקוונת היא אחת הדרכים להתמודד איתה, כי המודל מתעדכן כל הזמן מהנתונים החדשים.
למה לא כל המודלים לומדים כך?
לא כל אלגוריתם יודע ללמוד בהדרגה, ומודל שמתעדכן כל הזמן עלול לשכוח ידע קודם או להיפגע מדוגמאות שגויות ומקלט עוין. בינואר 2022 כתבה צ'יפ הוין שלדבריה רוב החברות מאמנות את המודל מחדש מאפס בכל פעם.