This page was translated by the Cloud Translation API.
Switch to English

شاخص های انصاف

شاخص های انصاف برای حمایت از تیم ها در ارزیابی و بهبود مدل ها برای نگرانی های انصاف در همکاری با مجموعه گسترده تر Tensorflow طراحی شده است. این ابزار در حال حاضر به طور فعال توسط بسیاری از محصولات ما به صورت داخلی استفاده می شود و اکنون در BETA در دسترس است تا موارد استفاده خود را امتحان کنید.

داشبورد شاخص انصاف

شاخص های انصاف چیست؟

Fairness Indicators کتابخانه ای است که محاسبه آسان معیارهای عدالت را که معمولاً برای طبقه بندی های باینری و چند طبقه انجام می شود امکان پذیر می کند. بسیاری از ابزارهای موجود برای ارزیابی نگرانی های انصاف در مجموعه داده ها و مدل های مقیاس بزرگ به خوبی کار نمی کنند. در Google ، داشتن ابزاری که بتواند روی سیستم های میلیارد کاربر کار کند ، برای ما مهم است. شاخص های عدالت به شما امکان می دهد در هر اندازه مورد استفاده را ارزیابی کنید.

به طور خاص ، شاخص های انصاف شامل توانایی زیر است:

  • توزیع مجموعه داده ها را ارزیابی کنید
  • عملکرد مدل را که در گروههای مشخص شده از کاربران برش داده شده است ، ارزیابی کنید
    • با فواصل اعتماد به نفس و نتایج بدست آمده در آستانه های مختلف ، از نتایج خود اطمینان داشته باشید
  • برای بررسی علل اصلی و فرصت های بهبود ، در برشهای جداگانه فرو بروید

این مطالعه موردی ، همراه با فیلم ها و تمرینات برنامه نویسی ، نشان می دهد که چگونه می توان از شاخص های انصاف در یکی از محصولات خود برای ارزیابی نگرانی های انصاف در طول زمان استفاده کرد.

بارگیری بسته pip شامل موارد زیر است:

استفاده از شاخص های عدالت با مدل های Tensorflow

داده ها

برای اجرای شاخص های عدالت با TFMA ، اطمینان حاصل کنید که مجموعه داده های ارزیابی برای ویژگی هایی که می خواهید برش داده شوند برچسب گذاری شده است. اگر ویژگی های دقیق قطعه ای را برای نگرانی های انصاف خود ندارید ، ممکن است سعی کنید یک مجموعه ارزیابی را پیدا کنید یا ویژگی های پروکسی را در مجموعه ویژگی های خود در نظر بگیرید که ممکن است اختلافات نتیجه را برجسته کند. برای راهنمایی بیشتر ، اینجا را ببینید.

مدل

برای ساخت مدل خود می توانید از کلاس Tensorflow Estimator استفاده کنید. پشتیبانی از مدل های Keras به زودی به TFMA ارائه می شود. اگر می خواهید TFMA را روی مدل Keras اجرا کنید ، لطفاً به بخش "Model-Agnostic 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 محاسبه می شود و نیاز به محاسبه بیش از 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)

شاخص های انصاف

نکاتی برای استفاده از شاخص های انصاف:

  • با علامت زدن در کادرهای سمت چپ ، معیارها را برای نمایش انتخاب کنید . نمودارهای جداگانه برای هر یک از معیارها به ترتیب در ویجت نمایش داده می شوند.
  • با استفاده از انتخابگر کشویی ، قطعه پایه ، اولین نوار نمودار را تغییر دهید. دلتاها با این مقدار پایه محاسبه می شوند.
  • با استفاده از انتخابگر کشویی آستانه ها را انتخاب کنید . می توانید چندین آستانه را در همان نمودار مشاهده کنید. آستانه های انتخاب شده پررنگ هستند و برای لغو انتخاب می توانید روی آستانه پررنگ کلیک کنید.
  • برای دیدن معیارهای مربوط به آن بر روی یک نوار بروید .
  • با استفاده از ستون "Diff w. baseline" که درصد اختلاف بین برش فعلی و پایه را تشخیص می دهد ، اختلافات را با خط پایه مشخص کنید.
  • با استفاده از ابزار What-If نقاط داده یک قطعه را عمیقاً کاوش کنید . برای نمونه به اینجا مراجعه کنید .

ارائه شاخص های انصاف برای چندین مدل

برای مقایسه مدل ها می توان از شاخص های عدالت نیز استفاده کرد. به جای عبور از یک نتیجه تکمیلی ، در یک شی multi_eval_results عبور کنید ، این یک فرهنگ لغت است که از دو نام مدل برای ارزیابی اشیاult نتیجه استفاده می کند.

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)

شاخص های انصاف - مقایسه مدل

از مقایسه مدل می توان در کنار مقایسه آستانه استفاده کرد. به عنوان مثال ، می توانید دو مدل را در دو مجموعه آستانه مقایسه کنید تا ترکیبی بهینه برای معیارهای عدالت خود پیدا کنید.

استفاده از شاخص های عدالت با مدل های غیر TensorFlow

برای پشتیبانی بهتر از مشتریانی که مدل ها و گردش کار آنها متفاوت است ، ما یک کتابخانه ارزیابی ایجاد کرده ایم که از نظر مدل ارزیابی می شود.

هر کسی که بخواهد سیستم یادگیری ماشین خود را ارزیابی کند ، می تواند از این مورد استفاده کند ، مخصوصاً اگر مدلهای غیر TensorFlow ندارید. با استفاده از Apache Beam Python SDK ، می توانید یک باینری ارزیابی TFMA مستقل ایجاد کنید و سپس آن را اجرا کنید تا مدل خود را تجزیه و تحلیل کنید.

داده ها

این مرحله تهیه مجموعه داده ای است که می خواهید ارزیابی ها روی آن اجرا شود. این باید در tf باشد. به عنوان مثال قالب اولیه دارای برچسب ، پیش بینی و سایر ویژگی هایی است که ممکن است بخواهید آنها را برش دهید.

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 } }
        }
    }
}

مدل

شما به جای مشخص کردن یک مدل ، یک پیکربندی و استخراج کننده agnostic eval مدل برای تجزیه و تهیه اطلاعات مورد نیاز TFMA برای محاسبه معیارها ایجاد می کنید. مشخصات ModelAgnosticConfig ویژگی ها ، پیش بینی ها و برچسب هایی را که باید از نمونه های ورودی استفاده شود ، تعریف می کند.

برای این منظور ، یک نقشه ویژگی با کلیدهای نمایانگر کلیه ویژگی ها از جمله کلیدهای برچسب و پیش بینی و مقادیر نشان دهنده نوع داده ویژگی ایجاد کنید.

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

با استفاده از کلیدهای برچسب ، کلیدهای پیش بینی و نقشه ویژگی ، یک پیکربندی agnostic مدل ایجاد کنید.

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

Model Agnostic Extractor را تنظیم کنید

Extractor برای استخراج ویژگی ها ، برچسب ها و پیش بینی ها از ورودی با استفاده از پیکربندی agnostic مدل استفاده می شود. و اگر می خواهید داده های خود را برش دهید ، باید مشخصات کلید قطعه را نیز حاوی اطلاعاتی در مورد ستون هایی که می خواهید برش دهید تعریف کنید.

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)

در آخر ، شاخص های عدالت را با استفاده از دستورالعمل های بخش "Render Fairness Indicators" در بالا ارائه دهید.

مثالهای بیشتر

فهرست نمونه های شاخص های عدالت شامل چندین مثال است: