Adalet Göstergeleri

Adillik Göstergeleri, ekipleri daha geniş Tensorflow araç seti ile ortaklaşa adalet endişeleri için 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ı denemek için BETA'da mevcuttur.

Adalet Gösterge Panosu

Adalet Göstergeleri Nedir?

Adalet Göstergeleri, ikili ve çok sınıflı sınıflandırıcılar için yaygın olarak tanımlanan adalet ölçümlerinin kolay hesaplanmasını sağlayan bir kitaplıktır. Adalet kaygılarını değerlendirmek için mevcut birçok araç, büyük ölçekli veri kümeleri ve modellerde iyi çalışmaz. Google'da milyarlarca kullanıcılı sistemlerde çalışabilecek araçlara sahip olmak bizim için önemlidir. Adillik Göstergeleri, her boyuttaki kullanım durumunu değerlendirmenize olanak tanır.

Adillik Göstergeleri özellikle aşağıdakileri yapma becerisini içerir:

  • Veri kümelerinin dağılımını değerlendirin
  • Tanımlanmış kullanıcı grupları arasında dilimlenmiş model performansını değerlendirin
    • Güven aralıkları ve birden çok eşikteki değerlendirmelerle sonuçlarınızdan emin olun
  • Temel nedenleri ve iyileştirme fırsatlarını keşfetmek için bireysel dilimlere derinlemesine dalın

Videolar ve programlama alıştırmaları ile tamamlanan bu vaka çalışması , zaman içinde adalet endişelerini değerlendirmek için Adalet Göstergelerinin kendi ürünlerinizden birinde nasıl kullanılabileceğini gösterir.

Pip paketi indirmesi şunları içerir:

Adillik Göstergelerini Tensorflow Modelleriyle Kullanma

Veri

Adalet Göstergelerini TFMA ile çalıştırmak için, değerlendirme veri setinin, dilimlemek istediğiniz özellikler için etiketlendiğinden emin olun. Adaletle ilgili endişeleriniz için tam dilim özelliklerine sahip değilseniz, bunu yapan bir değerlendirme seti bulmaya çalışabilir veya özellik setinizdeki sonuç eşitsizliklerini vurgulayabilecek proxy özelliklerini göz önünde bulundurabilirsiniz. Ek rehberlik için buraya bakın.

modeli

Modelinizi oluşturmak için Tensorflow Tahmincisi 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 “Model-Agnostik 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

Ardından, 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’])
]`

Hesaplama Adaleti Metrikleri

metrics_callback listesine bir Adalet Göstergeleri geri araması ekleyin. Geri aramada, modelin değerlendirileceği eşiklerin bir listesini 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üklemesi kullanılarak hesaplanır ve 20 örnek üzerinden yeniden hesaplama gerektirir.

compute_confidence_intervals = True

TFMA değerlendirme ardışık düzenini ç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)

Hakkaniyet Göstergeleri Oluşturun

from tensorflow_model_analysis.addons.fairness.view import widget_view

widget_view.render_fairness_indicator(eval_result=eval_result)

Adalet Göstergeleri

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

  • Sol taraftaki kutuları işaretleyerek görüntülenecek metrikleri seçin . Her bir metrik için ayrı grafikler widget'ta sırayla görünecektir.
  • Açılır seçiciyi kullanarak grafikteki ilk çubuk olan taban çizgisi dilimini değiştirin . Deltalar bu temel değerle hesaplanacaktır.
  • Açılır seçiciyi kullanarak eşikleri seçin . Aynı grafik üzerinde birden fazla eşiği görüntüleyebilirsiniz. Seçilen eşikler kalın harflerle gösterilir ve seçimini kaldırmak için kalınlaştırılmış bir eşiği tıklayabilirsiniz.
  • Söz konusu dilime ilişkin metrikleri görmek için fareyle bir çubuğun üzerine gelin .
  • Geçerli dilim ile taban çizgisi arasındaki yüzde farkını tanımlayan "Fark w. taban çizgisi" sütununu kullanarak tabanla arasındaki farklılıkları belirleyin .
  • What-If Aracını kullanarak bir dilimin veri noktalarını derinlemesine keşfedin . Bir örnek için buraya bakın.

Birden Fazla Model için Adalet Göstergeleri Oluşturma

Adalet Göstergeleri, modelleri karşılaştırmak için de kullanılabilir. Tek bir eval_result iletmek yerine, iki model adını eval_result nesneleri ile 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)

Adalet 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 metrikleriniz için en uygun kombinasyonu bulmak için iki modeli iki eşik setinde karşılaştırabilirsiniz.

Adillik Göstergelerini TensorFlow Olmayan Modellerle Kullanma

Farklı modellere ve iş akışlarına sahip istemcileri daha iyi desteklemek için değerlendirilmekte olan 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 bunu çalıştırabilirsiniz.

Veri

Bu adım, değerlendirmelerin üzerinde çalışmasını istediğiniz veri kümesini sağlamaktır. Etiketler, tahminler ve dilimlemek isteyebileceğiniz diğer özelliklere sahip tf.Örnek proto biçiminde 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 ölçümleri hesaplamak için ihtiyaç duyduğu verileri ayrıştırmak ve sağlamak için bir model agnostik değerlendirme yapılandırması ve çıkarıcı oluşturursunuz. ModelAgnosticConfig özelliği, giriş örneklerinden kullanılacak özellikleri, tahminleri ve etiketleri tanımlar.

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

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

Etiket tuşlarını, tahmin tuşlarını ve özellik haritasını kullanarak bir modelden bağımsız 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

Çıkarıcı , modelden bağımsız yapılandırmayı kullanarak girdiden özellikleri, etiketleri ve tahminleri çıkarmak için kullanılır. Ve verilerinizi dilimlemek istiyorsanız, dilimlemek istediğiniz sütunlar hakkında bilgi içeren dilim anahtarı belirtimini 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’]),
    ])
]

Hesaplama Adaleti Metrikleri

EvalSharedModel'in bir parçası olarak, modelinizin değerlendirilmesini istediğiniz tüm metrikleri sağlayabilirsiniz. Metrikler, post_export_metrics veya fairness_indicators içinde tanımlananlar gibi metrik geri aramaları şeklinde sağlanır.

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 tensör akışı grafiği construct_fn için kullanılan bir build_fn 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östergelerini Oluşturun" bölümündeki talimatları kullanarak Adillik Göstergeleri oluşturun.

Daha fazla örnek

Adalet Göstergeleri örnekler dizini birkaç örnek içerir: