רגע, לא הבנתי – פרק 2

למה בכל זאת חשוב שנבין מה קורה בתוך האלגוריתם

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

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

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

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

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

זיהוי של שחורים בתור גורילות

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

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

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

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

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

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

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