Chỉ báo về sự công bằng

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Các Chỉ số Công bằng được thiết kế để hỗ trợ các nhóm đánh giá và cải thiện các mô hình về mối quan tâm về công bằng khi hợp tác với bộ công cụ Tensorflow rộng lớn hơn. Công cụ này hiện đang được nhiều sản phẩm của chúng tôi tích cực sử dụng trong nội bộ và hiện có sẵn trong BETA để dùng thử cho các trường hợp sử dụng của riêng bạn.

Bảng điều khiển Chỉ báo Công bằng

Các Chỉ số Công bằng là gì?

Chỉ báo Công bằng là một thư viện cho phép dễ dàng tính toán các chỉ số công bằng thường được xác định cho các bộ phân loại nhị phân và đa lớp. Nhiều công cụ hiện có để đánh giá mối quan tâm về công bằng không hoạt động tốt trên các mô hình và bộ dữ liệu quy mô lớn. Tại Google, điều quan trọng đối với chúng tôi là phải có các công cụ có thể hoạt động trên hệ thống hàng tỷ người dùng. Các Chỉ số Công bằng sẽ cho phép bạn đánh giá trên mọi quy mô của trường hợp sử dụng.

Đặc biệt, các Chỉ số Công bằng bao gồm khả năng:

  • Đánh giá sự phân phối của các tập dữ liệu
  • Đánh giá hiệu suất của mô hình, chia nhỏ trên các nhóm người dùng xác định
    • Cảm thấy tự tin về kết quả của mình với khoảng tin cậy và số lần thử nghiệm ở nhiều ngưỡng
  • Đi sâu vào từng lát cắt riêng lẻ để khám phá nguyên nhân gốc rễ và cơ hội cải thiện

Nghiên cứu điển hình này , hoàn chỉnh với các video và bài tập lập trình, chứng minh cách Các chỉ số công bằng có thể được sử dụng trên một trong các sản phẩm của chính bạn để đánh giá các mối quan tâm về công bằng theo thời gian.

Tải xuống gói pip bao gồm:

Sử dụng các Chỉ báo Công bằng với Mô hình Tensorflow

Dữ liệu

Để chạy Chỉ báo công bằng với TFMA, hãy đảm bảo rằng tập dữ liệu đánh giá được gắn nhãn cho các tính năng bạn muốn phân tích. Nếu bạn không có các tính năng phần chính xác cho mối quan tâm về tính công bằng của mình, bạn có thể khám phá thử tìm một bộ đánh giá phù hợp hoặc xem xét các tính năng proxy trong bộ tính năng có thể làm nổi bật sự chênh lệch kết quả. Để biết thêm hướng dẫn, hãy xem tại đây .

Người mẫu

Bạn có thể sử dụng lớp Công cụ ước tính Tensorflow để xây dựng mô hình của mình. TFMA sẽ sớm có hỗ trợ cho các mô hình Keras. Nếu bạn muốn chạy TFMA trên mô hình Keras, vui lòng xem phần “TFMA mô hình bất khả tri” bên dưới.

Sau khi Công cụ ước tính của bạn được đào tạo, bạn sẽ cần xuất một mô hình đã lưu cho mục đích đánh giá. Để tìm hiểu thêm, hãy xem hướng dẫn TFMA .

Định cấu hình Slices

Tiếp theo, xác định các lát bạn muốn đánh giá:

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

Nếu bạn muốn đánh giá các lát cắt xen kẽ (ví dụ: cả màu lông và chiều cao), bạn có thể đặt như sau:

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

Tính toán các chỉ số công bằng

Thêm lệnh gọi lại Chỉ báo Công bằng vào danh sách metrics_callback . Trong lệnh gọi lại, bạn có thể xác định danh sách các ngưỡng mà mô hình sẽ được đánh giá.

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)

Trước khi chạy cấu hình, hãy xác định xem bạn có muốn bật tính toán khoảng tin cậy hay không. Khoảng tin cậy được tính bằng cách sử dụng khởi động Poisson và yêu cầu tính toán lại trên 20 mẫu.

compute_confidence_intervals = True

Chạy đường dẫn đánh giá 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)

Hiển thị các Chỉ số Công bằng

from tensorflow_model_analysis.addons.fairness.view import widget_view

widget_view.render_fairness_indicator(eval_result=eval_result)

Các chỉ số công bằng

Mẹo sử dụng Chỉ báo Công bằng:

  • Chọn các chỉ số để hiển thị bằng cách chọn các hộp ở phía bên trái. Các biểu đồ riêng lẻ cho từng số liệu sẽ xuất hiện trong tiện ích con, theo thứ tự.
  • Thay đổi lát đường cơ sở , thanh đầu tiên trên biểu đồ, sử dụng công cụ chọn thả xuống. Deltas sẽ được tính toán với giá trị cơ sở này.
  • Chọn các ngưỡng bằng cách sử dụng công cụ chọn thả xuống. Bạn có thể xem nhiều ngưỡng trên cùng một biểu đồ. Các ngưỡng đã chọn sẽ được in đậm và bạn có thể nhấp vào ngưỡng được in đậm để bỏ chọn nó.
  • Di chuột qua một thanh để xem các chỉ số cho phần đó.
  • Xác định sự chênh lệch với đường cơ sở bằng cách sử dụng cột "Chênh lệch với đường cơ sở", xác định phần trăm chênh lệch giữa lát hiện tại và đường cơ sở.
  • Khám phá sâu các điểm dữ liệu của một lát cắt bằng Công cụ What-If . Xem ví dụ ở đây .

Hiển thị các Chỉ báo Công bằng cho Nhiều Mô hình

Các Chỉ báo Công bằng cũng có thể được sử dụng để so sánh các mô hình. Thay vì chuyển vào một eval_result duy nhất, hãy chuyển vào một đối tượng multi_eval_results, là một từ điển ánh xạ hai tên mô hình thành các đối tượng 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)

Các chỉ số Công bằng - So sánh Mô hình

So sánh mô hình có thể được sử dụng cùng với so sánh ngưỡng. Ví dụ: bạn có thể so sánh hai mô hình ở hai bộ ngưỡng để tìm ra sự kết hợp tối ưu cho các chỉ số công bằng của mình.

Sử dụng Chỉ báo Công bằng với Mô hình không TensorFlow

Để hỗ trợ tốt hơn cho các khách hàng có các mô hình và quy trình làm việc khác nhau, chúng tôi đã phát triển một thư viện đánh giá không phù hợp với mô hình đang được đánh giá.

Bất kỳ ai muốn đánh giá hệ thống học máy của họ đều có thể sử dụng điều này, đặc biệt nếu bạn có các mô hình không dựa trên TensorFlow. Sử dụng Apache Beam Python SDK, bạn có thể tạo một tệp nhị phân đánh giá TFMA độc lập và sau đó chạy nó để phân tích mô hình của bạn.

Dữ liệu

Bước này là cung cấp tập dữ liệu mà bạn muốn các đánh giá chạy trên đó. Nó phải ở định dạng proto tf.Example có nhãn, dự đoán và các tính năng khác mà bạn có thể muốn cắt.

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

Người mẫu

Thay vì chỉ định một mô hình, bạn tạo một cấu hình và trình trích xuất đánh giá bất khả tri mô hình để phân tích cú pháp và cung cấp dữ liệu TFMA cần để tính toán các chỉ số. Thông số ModelAgnosticConfig xác định các tính năng, dự đoán và nhãn sẽ được sử dụng từ các ví dụ đầu vào.

Để làm được điều này, hãy tạo một bản đồ đối tượng với các khóa đại diện cho tất cả các đối tượng địa lý bao gồm các khóa nhãn và dự đoán cũng như các giá trị đại diện cho kiểu dữ liệu của đối tượng địa lý.

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

Tạo cấu hình bất khả tri mô hình bằng cách sử dụng các khóa nhãn, khóa dự đoán và bản đồ tính năng.

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

Thiết lập trình trích xuất bất khả tri mô hình

Trình trích xuất được sử dụng để trích xuất các tính năng, nhãn và dự đoán từ đầu vào bằng cách sử dụng cấu hình bất khả tri mô hình. Và nếu bạn muốn cắt dữ liệu của mình, bạn cũng cần xác định thông số kỹ thuật của khóa lát , chứa thông tin về các cột bạn muốn cắt.

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

Tính toán các chỉ số công bằng

Là một phần của EvalSharedModel , bạn có thể cung cấp tất cả các chỉ số mà bạn muốn đánh giá mô hình của mình. Các chỉ số được cung cấp dưới dạng gọi lại các chỉ số giống như các chỉ số được xác định trong post_export_metrics hoặc fair_indicators .

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

Nó cũng sử dụng một construct_fn được sử dụng để tạo một biểu đồ tensorflow để thực hiện đánh giá.

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

Sau khi mọi thứ được thiết lập, hãy sử dụng một trong các ExtractEvaluate hoặc ExtractEvaluateAndWriteResults do model_eval_lib cung cấp để đánh giá mô hình.

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

Cuối cùng, hiển thị các Chỉ số Công bằng bằng cách sử dụng các hướng dẫn từ phần "Hiển thị Chỉ báo Công bằng" ở trên.

Các ví dụ khác

Thư mục ví dụ về Chỉ số Công bằng chứa một số ví dụ: