ইউক্রেনের জন্য ডেভফেস্টে আমাদের সাথে যোগ দিন 14-15 জুন অনলাইন নিবন্ধন করুন

ন্যায্যতা নির্দেশক

ফেয়ারনেস ইন্ডিকেটরগুলি বৃহত্তর টেনসরফ্লো টুলকিটের সাথে অংশীদারিত্বে ন্যায্যতার উদ্বেগের জন্য মডেলগুলি মূল্যায়ন এবং উন্নত করতে দলগুলিকে সহায়তা করার জন্য ডিজাইন করা হয়েছে৷ টুলটি বর্তমানে আমাদের অনেক পণ্য দ্বারা অভ্যন্তরীণভাবে সক্রিয়ভাবে ব্যবহার করা হয়, এবং আপনার নিজের ব্যবহারের ক্ষেত্রে চেষ্টা করার জন্য এখন BETA-তে উপলব্ধ।

ন্যায্যতা নির্দেশক ড্যাশবোর্ড

ন্যায্যতা সূচক কি?

ফেয়ারনেস ইন্ডিকেটর হল একটি লাইব্রেরি যা বাইনারি এবং মাল্টিক্লাস শ্রেণীবিভাগের জন্য সাধারণভাবে চিহ্নিত ন্যায্যতা মেট্রিক্সের সহজ গণনা সক্ষম করে। ন্যায্যতার উদ্বেগের মূল্যায়নের জন্য বিদ্যমান অনেক সরঞ্জামগুলি বড় আকারের ডেটাসেট এবং মডেলগুলিতে ভাল কাজ করে না। Google-এ, বিলিয়ন-ব্যবহারকারী সিস্টেমে কাজ করতে পারে এমন সরঞ্জাম থাকা আমাদের জন্য গুরুত্বপূর্ণ৷ ন্যায্যতা সূচক আপনাকে যেকোন আকারের ব্যবহারের ক্ষেত্রে মূল্যায়ন করার অনুমতি দেবে।

বিশেষ করে, ন্যায্যতা সূচকগুলির মধ্যে রয়েছে:

  • ডেটাসেট বিতরণ মূল্যায়ন
  • মডেল কর্মক্ষমতা মূল্যায়ন, ব্যবহারকারীদের সংজ্ঞায়িত গ্রুপ জুড়ে কাটা
    • একাধিক থ্রেশহোল্ডে আত্মবিশ্বাসের ব্যবধান এবং ইভাল সহ আপনার ফলাফল সম্পর্কে আত্মবিশ্বাসী বোধ করুন
  • মূল কারণ এবং উন্নতির সুযোগগুলি অন্বেষণ করতে পৃথক স্লাইসের গভীরে ডুব দিন

এই কেস স্টাডি , সঙ্গে সম্পূর্ণ ভিডিও এবং প্রোগ্রামিং অনুশীলনের, প্রমান কিভাবে ফর্সা সূচক সময়ের সততা উদ্বেগ নির্ণয় করা আপনার নিজের পণ্যগুলির মধ্যে একটি ব্যবহার করা যেতে পারে।

পিপ প্যাকেজ ডাউনলোড অন্তর্ভুক্ত:

টেনসরফ্লো মডেলের সাথে ন্যায্যতা সূচক ব্যবহার করা

ডেটা

TFMA এর সাথে ফেয়ারনেস ইন্ডিকেটরগুলি চালানোর জন্য, নিশ্চিত করুন যে মূল্যায়ন ডেটাসেটটিতে আপনি যে বৈশিষ্ট্যগুলিকে স্লাইস করতে চান তার জন্য লেবেল করা আছে৷ যদি আপনার ন্যায্যতার উদ্বেগের জন্য সঠিক স্লাইস বৈশিষ্ট্যগুলি না থাকে, তাহলে আপনি একটি মূল্যায়ন সেট খুঁজে বের করার চেষ্টা করতে পারেন যা করে, বা আপনার বৈশিষ্ট্য সেটের মধ্যে প্রক্সি বৈশিষ্ট্যগুলি বিবেচনা করে যা ফলাফলের বৈষম্যগুলিকে হাইলাইট করতে পারে। অতিরিক্ত নির্দেশের জন্য, দেখুন এখানে

মডেল

আপনি আপনার মডেল তৈরি করতে টেনসরফ্লো এস্টিমেটর ক্লাস ব্যবহার করতে পারেন। কেরাস মডেলের জন্য সমর্থন শীঘ্রই TFMA-তে আসছে। আপনি যদি কেরাস মডেলে TFMA চালাতে চান, অনুগ্রহ করে নীচের "মডেল-অ্যাগনস্টিক 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)

ন্যায্যতা সূচক

ন্যায্যতা সূচক ব্যবহার করার জন্য টিপস:

  • বাম দিকে বাক্সগুলি চেক করে প্রদর্শনে মেট্রিক্স নির্বাচন করুন। প্রতিটি মেট্রিকের জন্য পৃথক গ্রাফগুলি উইজেটে, ক্রমানুসারে প্রদর্শিত হবে।
  • বেসলাইন ফালি, গ্রাফ প্রথম বার পরিবর্তন করুন, ড্রপডাউন নির্বাচক ব্যবহার করে। এই বেসলাইন মান দিয়ে ডেল্টা গণনা করা হবে।
  • প্রান্তিক মান নির্বাচন ড্রপডাউন নির্বাচক ব্যবহার করে। আপনি একই গ্রাফে একাধিক থ্রেশহোল্ড দেখতে পারেন। নির্বাচিত থ্রেশহোল্ডগুলিকে বোল্ড করা হবে এবং আপনি এটিকে আন-সিলেক্ট করতে একটি বোল্ড থ্রেশহোল্ডে ক্লিক করতে পারেন৷
  • একটি বার উপর কার্সার রেখে যে ছে জন্য মেট্রিক্স দেখতে।
  • "পার্থক্য ওয়াট। বেসলাইন" কলাম, যা বর্তমান ফালি এবং বেসলাইন মধ্যে শতকরা পার্থক্য চিহ্নিত ব্যবহার বেসলাইন সঙ্গে অসমতা সনাক্ত করুন।
  • ব্যবহার গভীরতা একটি ফালি ডাটা পয়েন্ট এক্সপ্লোর কি-যদি টুল । দেখুন এখানে একটি উদাহরণ জন্য।

একাধিক মডেলের জন্য ন্যায্যতা সূচক রেন্ডারিং

ন্যায্যতা সূচক মডেল তুলনা করতে ব্যবহার করা যেতে পারে. একটি একক eval_result এ পাস করার পরিবর্তে, একটি multi_eval_results অবজেক্টে পাস করুন, যা একটি অভিধান যা 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)

ন্যায্যতা সূচক - মডেল তুলনা

থ্রেশহোল্ড তুলনার পাশাপাশি মডেল তুলনা ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, আপনি আপনার ন্যায্যতা মেট্রিক্সের জন্য সর্বোত্তম সমন্বয় খুঁজে পেতে থ্রেশহোল্ডের দুটি সেটে দুটি মডেলের তুলনা করতে পারেন।

নন-টেনসরফ্লো মডেলের সাথে ফেয়ারনেস ইন্ডিকেটর ব্যবহার করা

বিভিন্ন মডেল এবং ওয়ার্কফ্লো আছে এমন ক্লায়েন্টদের আরও ভালভাবে সমর্থন করার জন্য, আমরা একটি মূল্যায়ন লাইব্রেরি তৈরি করেছি যা মূল্যায়ন করা মডেলের জন্য অজ্ঞেয়।

যে কেউ তাদের মেশিন লার্নিং সিস্টেমের মূল্যায়ন করতে চান তারা এটি ব্যবহার করতে পারেন, বিশেষ করে যদি আপনার নন-টেনসরফ্লো ভিত্তিক মডেল থাকে। Apache Beam Python SDK ব্যবহার করে, আপনি একটি স্বতন্ত্র TFMA মূল্যায়ন বাইনারি তৈরি করতে পারেন এবং তারপর আপনার মডেল বিশ্লেষণ করতে এটি চালাতে পারেন।

ডেটা

এই পদক্ষেপটি হল ডেটাসেট প্রদান করা যা আপনি মূল্যায়নগুলি চালাতে চান৷ এটা হওয়া উচিত tf.Example লেবেল, ভবিষ্যৎবাণী এবং অন্যান্য বৈশিষ্ট্য আপনি যেভাবেই করতে চাইবেন না থাকার প্রোটো বিন্যাস।

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

মডেল

একটি মডেল নির্দিষ্ট করার পরিবর্তে, আপনি একটি মডেল অজ্ঞেয়বাদী ইভাল কনফিগারেশন এবং এক্সট্রাক্টর তৈরি করুন এবং মেট্রিক্স গণনা করার জন্য TFMA-এর প্রয়োজনীয় ডেটা পার্স এবং প্রদান করুন। ModelAgnosticConfig বৈশিষ্ট সংজ্ঞায়িত বৈশিষ্ট্য, পূর্বাভাস, এবং লেবেল ইনপুট উদাহরণ থেকে ব্যবহার করা হয়।

এর জন্য, লেবেল এবং ভবিষ্যদ্বাণী কী এবং বৈশিষ্ট্যের ডেটা টাইপ প্রতিনিধিত্বকারী মান সহ সমস্ত বৈশিষ্ট্য উপস্থাপন করে কীগুলির সাথে একটি বৈশিষ্ট্য মানচিত্র তৈরি করুন।

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

লেবেল কী, পূর্বাভাস কী এবং বৈশিষ্ট্য মানচিত্র ব্যবহার করে একটি মডেল অজ্ঞেয়বাদী কনফিগার তৈরি করুন।

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

মডেল অ্যাগনস্টিক এক্সট্র্যাক্টর সেট আপ করুন

এক্সট্রাক্টর মডেল অজ্ঞেয়বাদী কনফিগ ব্যবহার বৈশিষ্ট্য, লেবেল এবং ইনপুট থেকে ভবিষ্যৎবাণী বের করে আনতে ব্যবহার করা হয়। এবং যদি আপনি আপনার ডেটা যেভাবেই করতে চাই, আপনার কাছে সংজ্ঞায়িত করতে প্রয়োজন ফালি কী বৈশিষ্ট , কলাম আপনার উপর ছে করতে চান সম্পর্কে তথ্য রয়েছে।

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 , আপনি সমস্ত বৈশিষ্ট্যের মান আপনি আপনার মডেল মূল্যায়ন করা করতে ইচ্ছুক সেটির প্রদান করতে পারেন। মেট্রিক্স সংজ্ঞায়িত বেশী মত মেট্রিক্স callbacks আকারে প্রদান করা হয় 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)

অবশেষে, উপরের "রেন্ডার ফেয়ারনেস ইন্ডিকেটর" বিভাগ থেকে নির্দেশাবলী ব্যবহার করে ন্যায্যতা সূচক রেন্ডার করুন।

আরো উদাহরণ

ফর্সা সূচক উদাহরণ ডিরেক্টরি বিভিন্ন উদাহরণ রয়েছে: