שיפור ההסברים שמבוססים על תכונות

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

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

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

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

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

בדיקת ההסברים לשגיאה

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

בודקים את השדה approximationError

לכל Attribution,‏ Vertex AI ניתן להסברה מחזיר שגיאת קירוב בשדה approximationError. אם שגיאת הקירוב חורגת מ-0.05, כדאי לשנות את ההגדרה של Vertex AI ניתן להסברה.

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

בדיקת ההבדל בין מסקנות לבין פלט בסיסי

לכל Attribution,‏ Vertex AI ניתן להסברה מחזיר instanceOutputValue, שמייצג את החלק בפלט של ההיקש שאליו מתייחסים שיוכי התכונות, ו-baselineOutputValue, שמייצג את החלק הזה בפלט של ההיקש אם ההיקש היה מתבצע על בסיס קלט ולא על מופע הקלט בפועל.

אם ההפרש בין instanceOutputValue לבין baselineOutputValue קטן מ-0.05 עבור שיוכים כלשהם, יכול להיות שיהיה צורך לשנות את בסיסי הקלט.

שינוי ההגדרה

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

הגדלת מספר השלבים או הנתיבים

כדי לצמצם את שגיאת הקירוב, אפשר להגדיל את:

שינוי קווי הבסיס

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

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

באופן כללי:

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

דוגמה לנתונים טבלאיים

בדוגמת הקוד הבאה בשפת Python נוצרת ExplanationMetadataהודעה עבור מודל היפותטי של TensorFlow שאומן על נתונים טבלאיים.

שימו לב ש-input_baselines היא רשימה שבה אפשר לציין כמה קווי בסיס. בדוגמה הזו מוגדרת רק נקודת בסיס אחת. ערך הבסיס הוא רשימה של ערכי חציון של נתוני האימון (train_data בדוגמה הזו).

explanation_metadata = {
    "inputs": {
        "FEATURE_NAME": {
            "input_tensor_name": "INPUT_TENSOR_NAME",
            "input_baselines": [train_data.median().values.tolist()],
            "encoding": "bag_of_features",
            "index_feature_mapping": train_data.columns.tolist()
        }
    },
    "outputs": {
        "OUTPUT_NAME": {
            "output_tensor_name": "OUTPUT_TENSOR_NAME"
        }
    }
}

במאמר הגדרת הסברים למודלים שעברו אימון בהתאמה אישית יש מידע נוסף על השימוש בExplanationMetadata.

כדי להגדיר שני קווי בסיס שמייצגים ערכי מינימום ומקסימום, מגדירים את input_baselines באופן הבא: [train_data.min().values.tolist(), train_data.max().values.tolist()]

דוגמה לנתוני תמונה

קוד ה-Python הבא יוצר ExplanationMetadata הודעה עבור מודל היפותטי של TensorFlow שאומן על נתוני תמונות.

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

אחרת, מגדירים את input_baselines ל-[0, 1] כדי לייצג תמונות בשחור-לבן.

random_baseline = np.random.rand(192,192,3)

explanation_metadata = {
    "inputs": {
        "FEATURE_NAME": {
            "input_tensor_name": "INPUT_TENSOR_NAME",
            "modality": "image",
            "input_baselines": [random_baseline.tolist()]
        }
    },
    "outputs": {
        "OUTPUT_NAME": {
            "output_tensor_name": "OUTPUT_TENSOR_NAME"
        }
    }
}

המאמרים הבאים

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