מדריך: איך לשפר את כל המודלים אי פעם מכל הסוגים על כל דאטהסט
כן כן. קראתם נכון! שיטה קסומה שעובדת תמיד!
יופי. תודה שהצטרפתם. עכשיו כשכולם מקשיבים:
מדריך: Error Analysis – חקר טעויות מודלים וסינון דאטה בעייתי
לא מזמן צצה לה מילת באזז חדשה: "Data Centric".
או בעברית: "אם הדאטה דפוק, המודל שילמד את הדאטה יצא דפוק" – היגיון בריא et al.
אמ;לק: אם תמיינו את הדאטה שלכם לפי הלוס של המודל: כמעט ומובטח לכם למצוא "משהו דפוק".
מאיפה צמד המילים הזה הגיע?
אני לא כל כך בטוח על מה כל ההייפ: מושג זה מתאר פרקטיקה בסיסית ביותר שאמורה להיות בשימוש כל מי שעוסק בתחום משחר האנושות אי פעם: "להסתכל על הדאטה ולבדוק שהוא בסדר".
ואת זה עליכם לעשות מידי פעם ב-ד-י-ו-ק שורה אחת בקוד לפני שהדאטה נכנס אל המודל כדי להיות בטוחים שאין שום דבר אחר בדרך שמשנה את הדאטה. [גם print דבילי עובד מצוין]
תהליך ניקוי דאטה
מקור המושג החדש הוא: הקורס החדש של אנדרו אנג.
אנדרו אנג? אונג? אוּנג? נג?
בצמוד לקורס זה, שוחררה גם תחרות עם קונספט מעניין: אם ברוב תחרויות מדעי הנתונים אנו מקבלים דאטה ועלינו לבנות את המודל המדויק ביותר, כאן אנו מקבלים מודל ודאטה ועלינו "לתקן את הדאטה" כך שהמודל (הקבוע) ישתפר כמה שיותר.
זו גם פרקטיקה מצוינת כשעובדים במציאות על ניקוי דאטה באמצעות מודל.
אז מה זה "Data Centric"?
הרעיון פשוט: מדובר באוסף שיטות שיצביעו לנו על דוגמאות בעיתיות בדאטה, על מנת שנוכל להסתכל עליהן, לתקן אותן או להסיר אותן.
שגיאות תיוג
כשאומרים שגיאות תיוג, קל לדמיין את האדם שתפקידו לתייג את הדאטה רואה "חתול" ומסמן "כלב". אך במציאות לא כך הדבר בדרך כלל. שגיאות תיוג יכולות להגיע בכמה ווריאציות שונות שחלקן מורכבות הרבה יותר.
ישנן כמה סוגי שגיאות תיוג נפוצות שכדאי להכיר ולכל אחת מהן עלינו להתייחס בדרך אחרת:
- פשוט טעויות: האדם היה צריך לסמן "כלב" וסימן "חתול".
- כמה תגיות: תמונות המכילות גם כלב וגם חתול.
- שגיאות אנתולוגיה: בדאטה קיימת מחלקת "חתול סיאמי" וגם מחלקת "חתול" (המכילה אותה).
מדובר כאן רק על טעויות תיוג בבעיות סיווג אך את אותם הרעיונות (ויותר) ניתן להמשיל גם לבעיות אחרות.
פתרונות בזמן התיוג עצמו: עבור טעויות תיוג קשות ישנם מנגנונים לפתרון – למשל תיוג אותה הדוגמה על ידי כמה אנשים ושימוש בדוגמאות הבטוחות יותר (או פשוט הצבעה), זו כמובן גם טכניקה יקרה ואיטית פי כמה.
בכל דאטהסט גדול מספיק יש גם רעש: אמנם קל להבין מדוע השגיאה מתרחשת, מפתיע לראות שגם בדאטהסטים המפורסמים ביותר ישנן שגיאות תיוג הנמצאות בהם במשך שנים רבות והסרת דוגמאות אלו מובילה לשיפור משמעותי בביצועי מודלים גם על דאטהסטים "שכולם כבר אימנו עליהם" כמו ImageNET.
שיטת "Data Centric" לעניים:
אמ;לק: אמנו מודל. מיינו את הדוגמאות לפי לוס המודל. זהו. אין שלבים נוספים. אלו הדוגמאות הדפוקות – הסתכלו עליהן.
מודל בתוך הלופ:
שיטה פשוטה זו הנקראת Model-In-The-Loop דוגלת באקספלורציה לדאטה (EDA) דרך מודלים: ניתן להסתכל על הטעויות הגדולות ביותר של המודל (גם בסט האימון וגם בסט הולידציה) ודוגמאות אלו ככל הנראה יהיו דוגמאות "מוזרות" ובסבירות גבוהה "משהו לא בסדר איתן".
באותה הנשימה: חשוב להזכיר את המצב ההפוך – דוגמאות הקלות ביותר למודל גם הן חשודות: הן יכולות להיות דוגמאות כפולות (או כמעט כפולות). חשוב להסתכל!
שיטות מתקדמות למציאת "דאטה דפוק"
נרצה לעשות שימוש בכל המידע שיש לנו כדי למצוא רעש בנתונים ולהעיף אותו מהדאטה לפני אימון המודל. על פי אחד המאמרים הראשיים בתחום [1] נרצה לאפיין את אי הוודאות של רעש התגיות בנתונים, רעש זה מותנה במחלקה ותלוי רק במחלקה האמיתית אליה שייכת הדוגמה, לא במחלקה המצוינת בנתונים.
בהמשך דוגמה הקודמת: סביר להניח כי יהיו הרבה יותר טעויות בין "חתול" ל"חתול סיאמי" מאשר בין "חתול" ל"טוסטר", נכון? כלומר ישנה אינפורמציה נוספת חשובה בקונטקסט הכללי של הבעיה ובמחלקות האחרות.
את אינפורמציה זו מנצל המאמר לשערוך ההתפלגות המשותפת של התוויות הרועשות והאמיתיות בסט הנתונים שלנו – על ידי שימוש במודל מאומן משערכים את התפלגויות הנתונים ולוקחים את התחזית הסופית על ידי Threshold כלשהו. בנוסף לתחזית זו מתקבלת גם מטריצת התפלגות משותפת אותה ניתן לנרמל ולקבל הערכה של מטריצת השגיאה בסט הנתונים.
אם חיפשתם איזו אבקת קסמים אז אין..
מה שנחמד ברעיון זה הוא שהוא שאמנם אינו מציע שום אלגוריתם מהפכני ופורץ דרך, אבל הוא מציע מסגרת טובה למציאת שגיאות שעובדת מצוין גם בדאטהסטים מפורסמים במיוחד כמו MNIST וImageNET. מי יודע כמה שעות אדם היו נחסכות אם דאטהסטים אלו היו נקיים משגיאות.
על Data Pruning ,Importance Sampling
- ישנם אלגוריתמים ושיטות מיוחדות המנסים להרחיב רעיון זה על ידי הסרת נתונים בצורה איטרטיבית מהדאטה: בכל שלב מאומן מודל, נמצאות דוגמאות שבורות ומוסרות הטופ-K דוגמאות השבורות ביותר וכך ממשיכים בלולאה.
- באותה השיטה ניתן גם להשתמש על מנת "לזהות" דוגמאות קשות ולאמן מודל ממושקל ביחס לחשיבות הדוגמאות.
- ישנם גם סוגי מודלים המאפשרים למדוד "רעש" בדוגמאות האימון בצורה ספציפית: למשל בKNN ניתן להשתמש במרחק הדגימה לשכנים הקרובים אליה בתור מדד ל"חריגות".
אבל בשורה התחתונה: ההבנה שלוס קטן הוא אינדיקטור טוב (בסבירות גבוהה) לדגימות שימושיות ונכונות, בעוד שדגימות גרועות גורמות ללוס גבוה – מעניינת ושימושית.
מימוש: החבילה – cleanlab
ן pip install cleanlab
אם אינכם מעוניינים לממש בעצמכם לוגיקה זו, תוכלו לנסות חבילה מעניינת המממשת אלגוריתמים אלו ואחרים: Cleanlab. החבילה מאפשרת זיהוי וניקוי דאטהסטים מכל מיני סוגים – גם טבלאיים גם תמונות וגם טקסט.
ואפילו לבצע זאת באמצעות מודל משלכם אותו אתם מספקים לה.
רפרנס:
[1] – אחד המאמרים הראשיים בתחום – https://arxiv.org/pdf/1911.00068.pdf