SIG TFX-Addons topluluğuna katılın ve TFX'in daha da iyi olmasına yardımcı olun!
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Adalet Göstergeleri

Adillik Göstergeleri, ekipleri, daha geniş Tensorflow araç seti ile ortaklaşa, adalet endişelerine yönelik modelleri değerlendirme ve iyileştirme konusunda desteklemek için tasarlanmıştır. Araç şu anda birçok ürünümüz tarafından dahili olarak aktif olarak kullanılmaktadır ve artık kendi kullanım durumlarınız için denemek üzere BETA'da mevcuttur.

Adillik Göstergesi Panosu

Adalet Göstergeleri nedir?

Adillik Göstergeleri, ikili ve çok sınıflı sınıflandırıcılar için yaygın olarak tanımlanan adalet ölçütlerinin kolay hesaplanmasını sağlayan bir kitaplıktır. Adalet endişelerini değerlendirmeye yönelik birçok mevcut araç, büyük ölçekli veri kümelerinde ve modellerde pek işe yaramıyor. Google'da, milyar kullanıcılı sistemlerde çalışabilen araçlara sahip olmak bizim için önemlidir. Adillik Göstergeleri, her boyuttaki kullanım örneğini değerlendirmenize olanak tanır.

Adillik Göstergeleri özellikle şunları içerir:

  • Veri kümelerinin dağılımını değerlendirin
  • Model performansını, tanımlı kullanıcı grupları arasında dilimlenmiş olarak değerlendirin
    • Birden çok eşikte güven aralıkları ve değerlendirmelerle sonuçlarınız konusunda kendinizden emin olun
  • Temel nedenleri ve iyileştirme fırsatlarını keşfetmek için ayrı dilimlere derinlemesine dalın

Videolar ve programlama egzersizleriyle tamamlanan bu örnek olay incelemesi , Adalet Göstergelerinin zaman içinde adalet endişelerini değerlendirmek için kendi ürünlerinizden birinde nasıl kullanılabileceğini göstermektedir.

Pip paketinin indirilmesi şunları içerir:

Tensorflow Modelleriyle Adalet Göstergelerini Kullanma

Veri

Adillik Göstergelerini TFMA ile çalıştırmak için, değerlendirme veri kümesinin, ayırmak istediğiniz özellikler için etiketlendiğinden emin olun. Adalet endişeleriniz için kesin dilim özelliklerine sahip değilseniz, işe yarayan bir değerlendirme seti bulmaya çalışabilir veya özellik setinizdeki sonuç eşitsizliklerini vurgulayabilecek proxy özelliklerini düşünebilirsiniz. Ek rehberlik için buraya bakın.

Modeli

Modelinizi oluşturmak için Tensorflow Estimator sınıfını kullanabilirsiniz. Keras modelleri için destek yakında TFMA'ya geliyor. TFMA'yı bir Keras modelinde çalıştırmak istiyorsanız, lütfen aşağıdaki "Modelden bağımsız TFMA" bölümüne bakın.

Tahminciniz eğitildikten sonra, değerlendirme amacıyla kaydedilmiş bir modeli dışa aktarmanız gerekecektir. Daha fazla bilgi edinmek için TFMA kılavuzuna bakın .

Dilimleri Yapılandırma

Sonra üzerinde değerlendirmek istediğiniz dilimleri tanımlayın:

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

Kesişen dilimleri değerlendirmek istiyorsanız (örneğin, hem kürk rengi hem de yükseklik), aşağıdakileri ayarlayabilirsiniz:

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

Compute Fairness Metrikleri

metrics_callback listesine Adalet Göstergeleri geri metrics_callback . Geri aramada, modelin değerlendirileceği bir eşik listesi tanımlayabilirsiniz.

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)

Yapılandırmayı çalıştırmadan önce, güven aralıklarının hesaplanmasını etkinleştirmek isteyip istemediğinizi belirleyin. Güven aralıkları Poisson önyükleme kullanılarak hesaplanır ve 20 örnek üzerinde yeniden hesaplama gerektirir.

compute_confidence_intervals = True

TFMA değerlendirme hattını çalıştırın:

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)

Adillik Göstergelerini Oluştur

from tensorflow_model_analysis.addons.fairness.view import widget_view

widget_view.render_fairness_indicator(eval_result=eval_result)

Adalet Göstergeleri

Adillik Göstergelerini kullanmak için ipuçları:

  • Sol taraftaki kutuları işaretleyerek görüntülenecek ölçümleri seçin . Her metrik için ayrı grafikler, sırayla widget'ta görünecektir.
  • Açılır seçiciyi kullanarak grafikteki ilk çubuk olan taban çizgisi dilimini değiştirin . Deltalar, bu temel değer ile hesaplanacaktır.
  • Açılır seçiciyi kullanarak eşikleri seçin . Aynı grafikte birden çok eşiği görüntüleyebilirsiniz. Seçili eşikler kalın yazılacaktır ve kalın bir eşiği tıklayarak seçimini kaldırabilirsiniz.
  • Bir dilime ilişkin ölçümleri görmek için bir çubuğun üzerine gelin .
  • Mevcut dilim ile taban çizgisi arasındaki yüzde farkını tanımlayan "Diff w. Baseline" sütununu kullanarak taban çizgisiyle farklılıkları belirleyin .
  • What-If Aracını kullanarak bir dilimin veri noktalarını derinlemesine keşfedin . Örnek için buraya bakın.

Birden Çok Model için Adillik Göstergeleri Oluşturma

Adillik Göstergeleri, modelleri karşılaştırmak için de kullanılabilir. Tek bir eval_result içinde geçirmek yerine, eval_result nesnelerine iki model adını eşleyen bir sözlük olan multi_eval_results nesnesini iletin.

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)

Adillik Göstergeleri - Model Karşılaştırması

Model karşılaştırması eşik karşılaştırmasının yanında kullanılabilir. Örneğin, adalet ölçütleriniz için en uygun kombinasyonu bulmak için iki eşik kümesinde iki modeli karşılaştırabilirsiniz.

Adalet Göstergelerini TensorFlow Olmayan Modellerle Kullanma

Farklı modellere ve iş akışlarına sahip müşterileri daha iyi desteklemek için, değerlendirilen modelden bağımsız bir değerlendirme kitaplığı geliştirdik.

Makine öğrenimi sistemini değerlendirmek isteyen herkes, özellikle TensorFlow tabanlı olmayan modelleriniz varsa bunu kullanabilir. Apache Beam Python SDK'yı kullanarak, bağımsız bir TFMA değerlendirme ikili dosyası oluşturabilir ve ardından modelinizi analiz etmek için çalıştırabilirsiniz.

Veri

Bu adım, değerlendirmelerin üzerinde çalışmasını istediğiniz veri kümesini sağlamak içindir. Üzerinde dilimlemek isteyebileceğiniz etiketler, tahminler ve diğer özellikleri içeren tf.Example proto formatında olmalıdır.

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

Modeli

Bir model belirtmek yerine, TFMA'nın metrikleri hesaplamak için ihtiyaç duyduğu verileri ayrıştırmak ve sağlamak için bir model agnostic eval yapılandırması ve çıkarıcı oluşturursunuz. ModelAgnosticConfig belirtimi, girdi örneklerinden kullanılacak özellikleri, tahminleri ve etiketleri tanımlar.

Bunun için etiket ve tahmin anahtarları ve özelliğin veri türünü temsil eden değerler dahil olmak üzere tüm özellikleri temsil eden anahtarlara sahip bir özellik haritası oluşturun.

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

Etiket anahtarlarını, tahmin anahtarlarını ve özellik haritasını kullanarak modelden bağımsız bir yapılandırma oluşturun.

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'ı kurun

Extractor , model agnostik yapılandırmasını kullanarak girdiden özellikleri, etiketleri ve tahminleri çıkarmak için kullanılır. Verilerinizidilimlemek istiyorsanız, dilimlemek istediğiniz sütunlarla ilgili bilgileri içerendilim anahtarı özelliğini de tanımlamanız gerekir.

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’]),
    ])
]

Compute Fairness Metrikleri

EvalSharedModel'in bir parçası olarak, modelinizin değerlendirilmesini istediğiniz tüm metrikleri sağlayabilirsiniz. Metrik tanımlanan olanlar gibi metrikleri geri aramalar biçiminde temin edilmektedir post_export_metrics veya fairness_indicators .

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

Ayrıca, değerlendirmeyi gerçekleştirmek için bir tensorflow grafiği oluşturmak için kullanılan bir construct_fn de alır.

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

Her şey ayarlandıktan sonra, modeli değerlendirmek için model_eval_lib tarafından sağlanan ExtractEvaluate veya ExtractEvaluateAndWriteResults işlevlerinden birini kullanın.

_ = (
    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)

Son olarak, yukarıdaki "Adillik Göstergeleri Oluşturma" bölümündeki talimatları kullanarak Adalet Göstergelerini oluşturun.

Daha fazla örnek

Adillik Göstergeleri örnekleri dizini birkaç örnek içerir: