انضم إلينا في DevFest لأوكرانيا من 14 إلى 15 يونيو عبر الإنترنت سجل الآن

مؤشرات الإنصاف

تم تصميم مؤشرات الإنصاف لدعم الفرق في تقييم وتحسين نماذج مخاوف الإنصاف بالشراكة مع مجموعة أدوات Tensorflow الأوسع. تُستخدم الأداة حاليًا بشكل نشط داخليًا بواسطة العديد من منتجاتنا ، وهي متوفرة الآن في الإصدار التجريبي لتجربة حالات الاستخدام الخاصة بك.

لوحة معلومات مؤشر الإنصاف

ما هي مؤشرات الإنصاف؟

مؤشرات الإنصاف عبارة عن مكتبة تتيح سهولة حساب مقاييس الإنصاف المحددة بشكل شائع للمصنفات الثنائية ومتعددة الفئات. لا تعمل العديد من الأدوات الحالية لتقييم مخاوف الإنصاف بشكل جيد على مجموعات البيانات والنماذج واسعة النطاق. في Google ، من المهم بالنسبة لنا أن يكون لدينا أدوات يمكنها العمل على أنظمة يستخدمها مليار مستخدم. تتيح لك مؤشرات الإنصاف التقييم عبر أي حجم لحالة الاستخدام.

تشمل مؤشرات الإنصاف على وجه الخصوص القدرة على:

  • تقييم توزيع مجموعات البيانات
  • قم بتقييم أداء النموذج ، مقسمًا عبر مجموعات محددة من المستخدمين
    • كن واثقًا من نتائجك مع فترات الثقة والتطورات عند عتبات متعددة
  • تعمق في الشرائح الفردية لاستكشاف الأسباب الجذرية وفرص التحسين

هذه دراسة الحالة ، كاملة مع الفيديو وعمليات البرمجة، يوضح كيفية مؤشرات الإنصاف يمكن استخدامها على واحدة من المنتجات الخاصة بك لتقييم المخاوف الإنصاف مع مرور الوقت.

يتضمن تنزيل حزمة النقطة ما يلي:

استخدام مؤشرات الإنصاف مع نماذج Tensorflow

البيانات

لتشغيل مؤشرات الإنصاف باستخدام TFMA ، تأكد من تسمية مجموعة بيانات التقييم للميزات التي ترغب في التقسيم إليها. إذا لم يكن لديك ميزات الشريحة الدقيقة لمخاوفك المتعلقة بالإنصاف ، فيمكنك استكشاف محاولة العثور على مجموعة تقييم تفعل ذلك ، أو التفكير في ميزات الوكيل ضمن مجموعة الميزات الخاصة بك والتي قد تبرز التباينات في النتائج. للحصول على إرشادات إضافية، انظر هنا .

نموذج

يمكنك استخدام فئة Tensorflow Estimator لبناء نموذجك. سيتوفر دعم طرازات Keras في TFMA قريبًا. إذا كنت ترغب في تشغيل TFMA على طراز Keras ، فيرجى مراجعة قسم "نموذج TFMA المحايد للطراز" أدناه.

بعد أن يتم تدريب "المقدر" الخاص بك ، سوف تحتاج إلى تصدير نموذج محفوظ لأغراض التقييم. لمعرفة المزيد، راجع دليل TFMA .

تكوين الشرائح

بعد ذلك ، حدد الشرائح التي ترغب في التقييم عليها:

slice_spec = [
  tfma.slicer.SingleSliceSpec(columns=[‘fur color’])
]

إذا كنت تريد تقييم الشرائح المتقاطعة (على سبيل المثال ، لون الفراء والارتفاع) ، يمكنك تعيين ما يلي:

slice_spec = [
  tfma.slicer.SingleSliceSpec(columns=[‘fur_color’, ‘height’])
]`

حساب مقاييس الإنصاف

إضافة رد مؤشرات الإنصاف إلى metrics_callback القائمة. في رد الاتصال ، يمكنك تحديد قائمة بالعتبات التي سيتم تقييم النموذج عندها.

from tensorflow_model_analysis.addons.fairness.post_export_metrics import fairness_indicators

# Build the fairness metrics. Besides the thresholds, you also can config the example_weight_key, labels_key here. For more details, please check the api.
metrics_callbacks = \
    [tfma.post_export_metrics.fairness_indicators(thresholds=[0.1, 0.3,
     0.5, 0.7, 0.9])]

eval_shared_model = tfma.default_eval_shared_model(
    eval_saved_model_path=tfma_export_dir,
    add_metrics_callbacks=metrics_callbacks)

قبل تشغيل التكوين ، حدد ما إذا كنت تريد تمكين حساب فترات الثقة أم لا. يتم حساب فترات الثقة باستخدام Poisson bootstrapping وتتطلب إعادة حساب أكثر من 20 عينة.

compute_confidence_intervals = True

قم بتشغيل خط أنابيب تقييم TFMA:

validate_dataset = tf.data.TFRecordDataset(filenames=[validate_tf_file])

# Run the fairness evaluation.
with beam.Pipeline() as pipeline:
  _ = (
      pipeline
      | beam.Create([v.numpy() for v in validate_dataset])
      | 'ExtractEvaluateAndWriteResults' >>
       tfma.ExtractEvaluateAndWriteResults(
                 eval_shared_model=eval_shared_model,
                 slice_spec=slice_spec,
                 compute_confidence_intervals=compute_confidence_intervals,
                 output_path=tfma_eval_result_path)
  )
eval_result = tfma.load_eval_result(output_path=tfma_eval_result_path)

تقديم مؤشرات الإنصاف

from tensorflow_model_analysis.addons.fairness.view import widget_view

widget_view.render_fairness_indicator(eval_result=eval_result)

مؤشرات الإنصاف

نصائح لاستخدام مؤشرات الإنصاف:

  • تحديد المقاييس لعرض عن طريق التحقق من المربعات الموجودة على الجانب الأيسر. ستظهر الرسوم البيانية الفردية لكل من المقاييس بالترتيب في الأداة.
  • تغيير شريحة خط الأساس، وشريط الأول على الرسم البياني، وذلك باستخدام محدد القائمة المنسدلة. سيتم حساب الدلتا باستخدام هذه القيمة الأساسية.
  • تحديد عتبات باستخدام محدد المنسدلة. يمكنك عرض عتبات متعددة على نفس الرسم البياني. ستظهر الحدود المحددة بخط عريض ، ويمكنك النقر فوق عتبة غامقة لإلغاء تحديدها.
  • تحوم فوق شريط لمعرفة المقاييس لتلك الشريحة.
  • تحديد الفوارق مع خط الأساس باستخدام "الفرق ث. أساسية" عمود، الذي يحدد النسبة المئوية للفرق بين شريحة الحالية والأساس.
  • استكشاف نقاط البيانات من شريحة في عمق باستخدام أداة ماذا لو . نرى هنا على سبيل المثال.

تقديم مؤشرات الإنصاف لنماذج متعددة

يمكن أيضًا استخدام مؤشرات الإنصاف لمقارنة النماذج. بدلًا من تمرير قيمة واحدة إلى نتيجة واحدة ، قم بتمرير كائن multi_eval_results ، وهو عبارة عن قاموس يعين اسمي نموذجين إلى كائنات EVAL_result.

from tensorflow_model_analysis.addons.fairness.view import widget_view

eval_result1 = tfma.load_eval_result(...)
eval_result2 = tfma.load_eval_result(...)
multi_eval_results = {"MyFirstModel": eval_result1, "MySecondModel": eval_result2}

widget_view.render_fairness_indicator(multi_eval_results=multi_eval_results)

مؤشرات الإنصاف - مقارنة النماذج

يمكن استخدام مقارنة النماذج جنبًا إلى جنب مع مقارنة العتبة. على سبيل المثال ، يمكنك مقارنة نموذجين بمجموعتين من الحدود للعثور على التركيبة المثلى لمقاييس الإنصاف الخاصة بك.

استخدام مؤشرات الإنصاف مع نماذج non-TensorFlow

لدعم العملاء الذين لديهم نماذج وسير عمل مختلفة بشكل أفضل ، قمنا بتطوير مكتبة تقييم غير ملائمة للنموذج الذي يتم تقييمه.

يمكن لأي شخص يرغب في تقييم نظام التعلم الآلي الخاص به استخدام هذا ، خاصةً إذا كان لديك نماذج لا تستند إلى TensorFlow. باستخدام Apache Beam Python SDK ، يمكنك إنشاء ثنائي تقييم TFMA مستقل ثم تشغيله لتحليل نموذجك.

البيانات

هذه الخطوة هي توفير مجموعة البيانات التي تريد أن تعمل التقييمات عليها. وينبغي أن يكون في tf.Example شكل بروتو وجود تسميات وتنبؤات وغيرها من الميزات التي قد ترغب في شريحة جرا.

tf.Example {
    features {
        feature {
          key: "fur_color" value { bytes_list { value: "gray" } }
        }
        feature {
          key: "height" value { bytes_list { value: "tall" } }
        }
        feature {
          key: "prediction" value { float_list { value: 0.9 } }
        }
        feature {
          key: "label" value { float_list { value: 1.0 } }
        }
    }
}

نموذج

بدلاً من تحديد نموذج ، تقوم بإنشاء مستخرج وتكوين تقييم حيادي نموذج لتحليل وتوفير البيانات التي يحتاجها TFMA لحساب المقاييس. ModelAgnosticConfig تحدد المواصفات والميزات، والتنبؤات، وتسميات لاستخدامها من الأمثلة الإدخال.

لهذا الغرض ، قم بإنشاء خريطة معلم بمفاتيح تمثل جميع الميزات بما في ذلك مفاتيح التسمية والتنبؤ والقيم التي تمثل نوع بيانات المعلم.

feature_map[label_key] = tf.FixedLenFeature([], tf.float32, default_value=[0])

قم بإنشاء تكوين محايد للنموذج باستخدام مفاتيح التسمية ومفاتيح التنبؤ وخريطة المعالم.

model_agnostic_config = model_agnostic_predict.ModelAgnosticConfig(
    label_keys=list(ground_truth_labels),
    prediction_keys=list(predition_labels),
    feature_spec=feature_map)

قم بإعداد مستخرج ملحد نموذجي

مستخرج يستخدم لاستخراج الميزات، التسميات والتوقعات من الإدخال باستخدام نموذج التكوين الملحد. وإذا كنت ترغب في شريحة البيانات الخاصة بك، تحتاج أيضا إلى تحديد المواصفات مفتاح شريحة ، تحتوي على معلومات عن الأعمدة التي تريد شريحة جرا.

model_agnostic_extractors = [
    model_agnostic_extractor.ModelAgnosticExtractor(
        model_agnostic_config=model_agnostic_config, desired_batch_size=3),
    slice_key_extractor.SliceKeyExtractor([
        slicer.SingleSliceSpec(),
        slicer.SingleSliceSpec(columns=[‘height’]),
    ])
]

حساب مقاييس الإنصاف

كجزء من EvalSharedModel ، يمكنك تقديم كل المقاييس التي تريد نموذج ليتم تقييمها. يتم توفير المقاييس في شكل مقاييس الاسترجاعات مثل تلك المحددة في post_export_metrics أو fairness_indicators .

metrics_callbacks.append(
    post_export_metrics.fairness_indicators(
        thresholds=[0.5, 0.9],
        target_prediction_keys=[prediction_key],
        labels_key=label_key))

كما يأخذ في construct_fn الذي يستخدم لإنشاء رسم بياني tensorflow لإجراء التقييم.

eval_shared_model = types.EvalSharedModel(
    add_metrics_callbacks=metrics_callbacks,
    construct_fn=model_agnostic_evaluate_graph.make_construct_fn(
        add_metrics_callbacks=metrics_callbacks,
        fpl_feed_config=model_agnostic_extractor
        .ModelAgnosticGetFPLFeedConfig(model_agnostic_config)))

مرة واحدة كل شيء هو اقامة، استخدم إحدى ExtractEvaluate أو ExtractEvaluateAndWriteResults الوظائف التي توفرها model_eval_lib لتقييم النموذج.

_ = (
    examples |
    'ExtractEvaluateAndWriteResults' >>
        model_eval_lib.ExtractEvaluateAndWriteResults(
        eval_shared_model=eval_shared_model,
        output_path=output_path,
        extractors=model_agnostic_extractors))

eval_result = tensorflow_model_analysis.load_eval_result(output_path=tfma_eval_result_path)

أخيرًا ، اعرض مؤشرات الإنصاف باستخدام الإرشادات الواردة في قسم "مؤشرات عدالة العرض" أعلاه.

مزيد من الأمثلة

و دليل مؤشرات الإنصاف أمثلة يحتوي على العديد من الأمثلة على ذلك: