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ö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:
- Tensorflow Veri Doğrulaması (TFDV)
- Tensorflow Model Analizi (TFMA)
- Adalet Göstergeleri
- What-If Aracı (WIT)
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ö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)
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:
- Fairness_Indicators_Example_Colab.ipynb , TensorFlow Model Analizindeki Adalet Göstergelerine ve bunun gerçek bir veri kümesiyle nasıl kullanılacağına ilişkin bir genel bakış sunar. Bu not defterinde ayrıca, Adillik Göstergeleri ile paketlenmiş TensorFlow modellerini analiz etmeye yönelik iki araç olan TensorFlow Veri Doğrulaması ve Durum Aracı da ele alınmaktadır.
- Fairness_Indicators_on_TF_Hub.ipynb , farklı metin yerleştirmelerinde eğitilmiş modelleri karşılaştırmak için Adalet Göstergelerinin nasıl kullanılacağını gösterir. Bu not defteri, model bileşenlerini yayınlamak, keşfetmek ve yeniden kullanmak için TensorFlow'un kitaplığı olan TensorFlow Hub'daki metin yerleştirmelerini kullanır.
- Fairness_Indicators_TensorBoard_Plugin_Example_Colab.ipynb , TensorBoard'da Adalet Göstergelerinin nasıl görselleştirileceğini gösterir.