דלג לתוכן

למידת אנסמבל (Ensemble Learning)

יסודות בינה מלאכותית

הגדרה

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

💡 דוגמה

שלושה מודלים בודקים אם מייל הוא ספאם: שניים אומרים "ספאם" ואחד אומר "תקין" — והאנסמבל מחליט לפי הרוב.

אבל אם שלושתם נותנים אותן תשובות ושוגים באותם מיילים, ההצבעה לא תתקן את הטעות.

הרעיון: כמה מודלים, החלטה אחת

במקום לחפש את המודל הטוב ביותר ולסמוך רק עליו, למידת אנסמבל מאמנת כמה מודלים לאותה משימה ומשלבת את התשובות שלהם. בתיעוד של scikit-learn, ספריית למידת המכונה הנפוצה בשפת Python, השיטות האלה מוגדרות כמי ש"combine the predictions of several base estimators" כדי לשפר את יכולת ההכללה והיציבות לעומת מודל יחיד. המודלים שבתוך האנסמבל נקראים "מודלי בסיס". בשיטות מסוימות, כמו AdaBoost, משתמשים במכוון ב"לומדים חלשים" — מודלים שמצליחים רק מעט יותר מניחוש אקראי.

השילוב יכול להיות פשוט מאוד. בהצבעת רוב (hard voting) כל מודל בוחר תשובה, והתשובה שקיבלה הכי הרבה קולות מנצחת. בהצבעה רכה (soft voting) מחשבים ממוצע של ההסתברויות שכל מודל נתן, ואפשר לתת משקל גבוה יותר למודלים מסוימים. שתי הדוגמאות המוכרות ביותר לשילוב מודלים, לפי scikit-learn, הן יער אקראי ועצי החלטה בחיזוק גרדיאנט — והן פועלות במנגנונים שונים: יער אקראי ממצע עצים עצמאיים, וחיזוק גרדיאנט בונה מודל מצטבר, עץ אחרי עץ.

למה זה עובד — ומתי לא

במאמר סקירה מ-2000 הסביר תומס דיטריך (Thomas Dietterich) את התנאי המרכזי, בהסתמך על עבודה של הנסן וסלמון מ-1990: אנסמבל יהיה מדויק יותר מכל אחד מחבריו אם המודלים בו "accurate and diverse" — מדויקים ומגוונים. מדויק פירושו טוב יותר מניחוש אקראי; מגוון פירושו שהמודלים טועים בדוגמאות שונות. אם שלושה מודלים זהים, כשאחד טועה גם השניים האחרים טועים, וההצבעה לא מתקנת דבר.

דיטריך הביא דוגמה מספרית: 21 מודלים, שכל אחד טועה ב-30% מהמקרים, וכל אחד טועה באופן בלתי תלוי באחרים. ההסתברות שרובם יטעו יחד היא לפי חישובו 0.026 — הרבה פחות מהטעות של כל מודל בנפרד. אבל הדוגמה הזו נשענת על הנחה חזקה: שהטעויות אינן קשורות זו בזו. ככל שהמודלים טועים באותן דוגמאות, ההצבעה מתקנת פחות, והטעויות המשותפות הן בדיוק מה שנשאר גם אחרי השילוב. לכן שיטות האנסמבל משקיעות מאמץ ביצירת מגוון. דיטריך הוסיף אזהרה: באותה דוגמת הצבעה, ובהנחה שהטעויות אינן מתואמות, אם כל מודל טועה ביותר מחצי מהמקרים, ההצבעה דווקא מגדילה את הטעות.

שלוש משפחות: Bagging, Boosting ו-Stacking

שלוש משפחות נפוצות במיוחד של שיטות אנסמבל הן bagging, boosting ו-stacking (לצד שיטות נוספות, כמו הצבעה פשוטה ומיצוע בייסיאני). בשיטת bagging, קיצור של bootstrap aggregating, שהגה ליאו בריימן (Leo Breiman), מאמנים את אותו סוג מודל על דגימות אקראיות שונות של נתוני האימון ומשלבים את התוצאות. לפי scikit-learn, השיטה מפחיתה את השונות של המודל ומתאימה במיוחד למודלים חזקים ומורכבים, כמו עצי החלטה מלאים. יער אקראי הוא הרחבה של הרעיון הזה.

בשיטת boosting בונים את המודלים בזה אחר זה, וכל מודל חדש מתמקד בטעויות של קודמיו. השאלה שהולידה אותה נוסחה בידי קירנס וואליאנט בסוף שנות ה-80: האם אפשר לבנות לומד חזק מאוסף של לומדים חלשים? רוברט שפירה ענה עליה בחיוב ב-1990, ובהמשך פיתח יחד עם יואב פרוינד את AdaBoost. Boosting מתאים בדרך כלל דווקא למודלים חלשים, כמו עצים רדודים. בשיטת stacking, שתיאר דייוויד וולפרט ב-1992, מאמנים כמה מודלים שונים, ואת התחזיות שלהם מכניסים כקלט למודל נוסף, שלומד איך לשלב אותן.

שלוש סיבות שזה עוזר

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

בפועל: מפרס נטפליקס ועד נתונים טבלאיים

הדוגמה המפורסמת ביותר לכוחו של אנסמבל היא פרס נטפליקס. ב-21 בספטמבר 2009 קיבלה הקבוצה BellKor's Pragmatic Chaos פרס של מיליון דולר, אחרי שהפחיתה ב-10.06% את שגיאת חיזוי הדירוגים לעומת האלגוריתם של נטפליקס, לפי מדד התחרות. לפי ויקיפדיה, הקבוצות המובילות בתחרות השתמשו בדרך כלל באנסמבל של שיטות שונות. הקבוצה שהגיעה לאותה תוצאה בדיוק נקראה, באירוניה של השם, The Ensemble, והפסידה משום שהגישה את התוצאה 20 דקות אחרי הזוכים.

גם היום שיטות אנסמבל של עצי החלטה הן כלי עבודה מרכזי. לפי scikit-learn, עצי חיזוק גרדיאנט הם מודל מצוין לסיווג ולחיזוי, "in particular for tabular data" — במיוחד לנתונים טבלאיים, כמו גיליונות של לקוחות, עסקאות או מדידות.

המחיר, והטעויות שנשארות

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

מנגד, באנסמבל יש מידע שאין במודל אחד: עד כמה המודלים מסכימים. ב-2016 הציעו שלושה חוקרים את "Deep Ensembles" — כמה רשתות נוירונים שמאומנות בנפרד — כדרך פשוטה להעריך את מידת הוודאות של התחזית. לפי המאמר, השיטה נתנה הערכות ודאות מכוילות היטב, והביעה ודאות נמוכה יותר בדוגמאות ששונות מנתוני האימון. כלומר, כשהמודלים לא מסכימים, זה סימן שכדאי לבדוק את התשובה. חשוב להבחין בין אנסמבל לבין מודל "תערובת מומחים" (Mixture of Experts), שמתואר בערך נפרד.

📬 הגיליון השבועי של Wiki-AI

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

שלוש משפחות נפוצות של אנסמבל
איגום דגימות (Bagging)חיזוק (Boosting)שילוב במודל עליון (Stacking)
איך בוניםמודלים במקביל, כל אחד על דגימה אקראית אחרתמודלים בזה אחר זה, כל אחד מתקן את קודמיומודלים שונים, ומעליהם מודל שלומד לשלב
מה מנסים להקטיןשונות — רגישות יתר לנתוניםהטיה — טעויות שיטתיותהטיה של המודלים המשולבים, לפי scikit-learn
מודלי בסיס מתאימיםמודלים חזקים ומורכביםמודלים חלשים, כמו עצים רדודיםמודלים מסוגים שונים
דוגמה מוכרתיער אקראיחיזוק גרדיאנט ו-AdaBoostמסווג הערימה בספריית scikit-learn

שאלות נפוצות ❓

האם יותר מודלים תמיד נותנים תוצאה טובה יותר?

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

מה ההבדל בין יער אקראי לחיזוק גרדיאנט?

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

למה לא תמיד משתמשים באנסמבל?

כי הוא דורש בדרך כלל יותר חישוב: כדי לקבל תחזית אחת צריך להריץ את כל המודלים שבו. וגם הוא לא עוזר כשהמודלים טועים באותם מקומות.

איך אנסמבל עוזר לדעת מתי המודל לא בטוח?

כשהמודלים באנסמבל חלוקים ביניהם, זה סימן לחוסר ודאות. מאמר מ-2016 על Deep Ensembles הראה שאנסמבל של רשתות נוירונים מביע ודאות נמוכה יותר בדוגמאות ששונות מנתוני האימון.

שתפו:וואטסאפטלגרם

מצאתם טעות בערך, או שיש לכם מקור שכדאי להוסיף? כתבו לנו