本記事では Vertex Explainable AI の概要について解説します。
Vertex Explainable AI とは
分類タスクや回帰タスクのモデル出力に各特徴がどの程度影響しているかを説明してくれる機能です。
この情報を使用してモデルが正常に動作していることを確認し、モデルのバイアスを認識してモデルやトレーニングデータの改善方法を確認できます。
この各特徴がどの程度影響しているかを示す指標のことを特徴アトリビューションといいます。
特徴
特徴アトリビューション
モデル内の各特徴が予測にどの程度影響を及ぼしたかを示します。
特徴アトリビューションは、各特徴(表形式データの場合はそれぞれの列)が予測にどの程度影響を及ぼしたかを可視化することができます。現在は表形式データ、画像データのモデルにのみ使用することが出来ます。モデルに予測をリクエストする際に特徴アトリビューションもリクエストするかを任意で選択できます。
例えば、モデルが画像から犬とネコを分類するモデルだった場合、特徴アトリビューションをリクエストすると予測されたクラスに加えて、予測結果にもっとも強く影響を及ぼした画像内の部分を示すオーバーレイが返されます。
以下はオーバーレイを表示した画像の例です。
特徴アトリビューションの方式
特徴アトリビューションには、サンプリングされた Shapley、統合勾配、XRAI という三つの方式があります。
それぞれの特徴アトリビューションに適しているモデルを簡単にまとめると
サンプリングされた Shapley
表形式データの分類と回帰
AutoML 表形式モデル、カスタムトレーニングモデル(任意の予測コンテナ)
統合勾配
表形式データの分類と回帰、画像データの分類
カスタムトレーニング済みの TensorFlow モデル、AutoML 画像モデル
XRAI(eXplanation with Ranked Area Integrals)
画像データの分類
カスタムトレーニング済みの TensorFlow モデル、AutoML 画像モデル
になります。より詳細な機能の説明は公式のページやAI Explanations のホワイトペーパー を参照されると良いでしょう。
メリット
モデルのデバッグに役立ちます。
重要度の低い特徴を削除してモデルを最適化します。
デメリット
AutoML のローカル特徴量の重要度など、特徴アトリビューションは個々の予測に固有のものです。個々の予測の特徴アトリビューションを調べることで詳細な洞察を得ることができますが、クラス全体やモデル全体にその洞察を当てはめることができない場合があります。
特徴アトリビューションはモデルのデバッグに役立ちますが、ある問題が特定のモデルから発生しているのか、モデルをトレーニングしたデータから発生しているのかを必ずしも明確に示すものではありません。
使い方
特徴アトリビューションの使用例を示します。
学習済みのバイナリ分類モデル(AutoML)への予測リクエストに特徴アトリビューションを含める方法をご紹介します。
トレーニングに使用したデータは表形式データです。
batch_predict_job = model.batch_predict(
job_display_name="bank_" + UUID,
gcs_source=gcs_input_uri,
gcs_destination_prefix=BUCKET_URI,
instances_format="csv",
predictions_format="jsonl",
generate_explanation=True,
sync=False,
)
batch_predict()は学習済みのモデルにバッチで予測リクエストするメソッドです。 以下にパラメータの意味を示します。
job_display_name
gcs_source
cloud storage に格納している入力ファイル名を指定します。
gcs_destination_prefi
instances_format
入力ファイルの形式を指定します。csv や json 形式を指定できます。デフォルトでは jsonl です。
generate_explanations
True にすることで特徴アトリビューションが予測リクエストの結果に含まれます。
sync
ジョブを同期または非同期で処理するかを指定します。False の場合は非同期でジョブが処理されます。
ジョブの実行が完了すると結果はパラメータに指定した cloud storage の bucket に出力されます。iter_outputs()で cloud storage に出力されるファイルのリストを取得できます。それぞれのファイルは CSV 形式で特徴アトリビューションの情報を含んでいます。
import tensorflow as tf
bp_iter_outputs = batch_predict_job.iter_outputs()
explanation_results = list()
for blob in bp_iter_outputs:
if blob.name.split("/")[-1].startswith("explanation"):
explanation_results.append(blob.name)
tags = list()
for explanation_result in explanation_results:
gfile_name = f"gs://{bp_iter_outputs.bucket.name}/{explanation_result}"
with tf.io.gfile.GFile(name=gfile_name, mode="r") as gfile:
for line in gfile.readlines():
print(line)
ここでは学習済みの AutoML モデルへの予測リクエストの結果から特徴アトリビューションを取得する例を示しましたが、AutoML のモデルを作成するプロセス全体にご興味のある方はこちら を参照されると良いでしょう。
料金
Vertex Explainable AI は特徴アトリビューションを有効にしたモデルの予測と同じ料金で課金されます。ただし、特徴アトリビューションを処理するには通常の予測よりも時間がかかるため、自動スケーリングで Vertex Explainable AI を多用すると、開始されるノード数が増え予測料金が増加する可能性があります。
以下は使い方の例で示した表形式データに対する AutoML の利用料金です。
独自にカスタムしたモデルの場合も予測と同じ料金で課金されますが、リージョンやマシンタイプによって
課金額が変わってきます。詳細はVertex AI の料金 を確認すると良いでしょう。
参照