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

כשעובדים עם מודלים שעברו אימון בהתאמה אישית, אפשר להגדיר פרמטרים ספציפיים כדי לשפר את ההסברים. במדריך הזה מוסבר איך לבדוק את ההסברים שמתקבלים מ-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 Explainable 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"
        }
    }
}

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

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