Amazon SageMaker Clarify を使用してテキスト分類モデルの予測を説明する

Amazon SageMaker Clarify を使用してテキスト分類モデルの予測を説明する

モデルの説明可能性とは、機械学習 (ML) モデルの予測を、人間が理解できる用語でインスタンスの入力特徴値に関連付けるプロセスを指します。 このフィールドは、しばしば次のように呼ばれます。 説明可能な人工知能 (XAI)。 Amazon SageMaker の明確化 の特徴です アマゾンセージメーカー これにより、データ サイエンティストと ML エンジニアは、ML モデルの予測を説明できます。 次のようなモデルにとらわれない方法を使用します SHapely Additive の説明 (SHAP) 機能の帰属。 表形式データの説明のサポートとは別に、Clarify は、同じ SHAP アルゴリズムを使用して、コンピューター ビジョン (CV) と自然言語処理 (NLP) の両方の説明可能性もサポートします。

この投稿では、NLP モデルを説明するために Clarify を使用する方法を説明します。 具体的には、以下を使用してトレーニングされたテキスト分類モデルの予測を説明する方法を示します。 SageMaker ブレイジングテキスト アルゴリズム。 これは、テキストのどの部分または単語が、モデルによる予測にとって最も重要であるかを理解するのに役立ちます。 とりわけ、これらの観察結果は、データセットの偏りを減らすデータ取得やモデル検証などのさまざまなプロセスを改善して、モデルが意図したとおりに機能していることを確認し、モデルが展開されたときにすべての利害関係者から信頼を得るために使用できます。 これは、感情分析、法務審査、医療診断など、多くのアプリケーション ドメインで重要な要件となる可能性があります。

また、Clarify を次のいずれかで使用する際に使用できる一般的な設計パターンも提供します。 SageMaker アルゴリズム.

ソリューションの概要

SageMaker アルゴリズムには、入力と出力のデータ形式が固定されています。 たとえば、BlazingText アルゴリズム コンテナーは、JSON 形式の入力を受け入れます。 しかし、顧客は多くの場合、データ パイプラインと互換性のある特定の形式を必要とします。 Clarify を使用するために従うことができるいくつかのオプションを紹介します。

オプション

このオプションでは、SageMaker ホスティングの推論パイプライン機能を使用します。 推論パイプラインは、推論リクエストを処理する一連のコンテナを構成する SageMaker モデルです。 次の図は、例を示しています。

Clarify ジョブは、XNUMX つのコンテナーがデータの形式を処理し、もう XNUMX つのコンテナーがモデルを保持する推論パイプラインを呼び出します。

推論パイプラインを使用して、独自のカスタムモデルと、さまざまなコンテナーにパッケージ化された SageMaker 組み込みアルゴリズムの組み合わせをデプロイできます。 詳細については、次を参照してください。 XNUMX つのエンドポイントの背後にあるシリアル推論パイプラインとして、前処理ロジックと共にモデルをホストする. Clarify は入力として CSV および JSON 行のみをサポートするため、次の手順を完了する必要があります。

  1. モデルとコンテナーを作成して、データを CSV (または JSON 行) から JSON に変換します。
  2. BlazingText アルゴリズムを使用したモデル トレーニング ステップの後、直接 モデルをデプロイする. これにより、JSON を入力として受け入れる BlazingText コンテナーを使用してモデルがデプロイされます。 別のアルゴリズムを使用する場合、SageMaker はそのアルゴリズムのコンテナを使用してモデルを作成します。
  3. 前の XNUMX つのモデルを使用して パイプラインモデル. これにより、XNUMX つのモデルが直線的に連鎖し、XNUMX つのモデルが作成されます。 例については、次を参照してください。 Scikit-learn と Linear Learner を使用した推論パイプライン.

このソリューションにより、入力が Clarify と互換性があり、説明を生成するために使用できる単一のモデルの作成に成功しました。

オプションB

このオプションは、SageMaker モデルをホストするための独自のコンテナーを導入することで、Clarify と SageMaker アルゴリズムの間で異なるデータ形式の使用を統合する方法を示しています。 次の図は、ソリューションに含まれるアーキテクチャと手順を示しています。

Amazon SageMaker Clear PlatoBlockchain Data Intelligence を使用したテキスト分類モデルの予測について説明します。垂直検索。あい。

手順は以下の通りです。

  1. SageMaker Estimator を介して BlazingText アルゴリズムを使用して、テキスト分類モデルをトレーニングします。
  2. モデルがトレーニングされたら、SageMaker モデルの作成に使用できるカスタム Docker コンテナを作成し、オプションでモデルを SageMaker モデル エンドポイントとしてデプロイします。
  3. ホスティング コンテナーを使用して説明可能性レポートを生成するように Clarify ジョブを構成および作成します。
  4. カスタム コンテナは、推論リクエストを CSV として受け入れ、Clarify が説明を生成できるようにします。

このソリューションは、BlazingText モデルの Clarify を使用してオフラインで説明を取得するというアイデアを示していることに注意してください。 オンライン説明可能性の詳細については、次を参照してください。 SageMaker Clarify によるオンライン説明可能性.

この投稿の残りの部分では、XNUMX 番目のオプションの各手順について説明します。

BlazingText モデルをトレーニングする

まず、BlazingText アルゴリズムを使用してテキスト分類モデルをトレーニングします。 この例では、 DBpedia オントロジー データセット. DBpedia は、ウィキペディアなどのさまざまなウィキメディア プロジェクトからの情報を使用して、構造化されたコンテンツを抽出するためのクラウドソーシングによるイニシアチブです。 具体的には、によって作成された DBpedia オントロジー データセットを使用します。 張ら. これは、DBpedia 14 から 2014 個の重複しないクラスを選択することによって構築されます。フィールドには、ウィキペディアの記事の要約と対応するクラスが含まれます。 テキスト分類モデルの目標は、記事の抄録が与えられた場合に記事のクラスを予測することです。

モデルをトレーニングするための詳細な段階的なプロセスは、次で利用できます。 ノート. モデルをトレーニングしたら、次のことに注意してください。 Amazon シンプル ストレージ サービス (Amazon S3) モデル成果物が保存される URI パス。 ステップバイステップのガイドについては、次を参照してください。 SageMaker BlazingText を使用したテキスト分類.

SageMaker で独自のコンテナを使用して、トレーニング済みの BlazingText モデルをデプロイする

Clarify には、モデル情報を提供するための XNUMX つのオプションがあります。

  • エンドポイントにデプロイせずに SageMaker モデルを作成する – SageMaker モデルが Clarify に提供されると、モデルを使用して一時的なエンドポイントが作成されます。
  • SageMaker モデルを作成してエンドポイントにデプロイする – エンドポイントが Clarify で使用可能になると、そのエンドポイントを使用して説明を取得します。 これにより、一時的なエンドポイントの作成が回避され、Clarify ジョブの実行時間を短縮できます。

この投稿では、Clarify で最初のオプションを使用します。 私たちは、 SageMaker Python SDK この目的のために。 その他のオプションと詳細については、次を参照してください。 エンドポイントを作成してモデルをデプロイする.

自分のコンテナを持ち込む (BYOC)

最初に、作成に使用されるカスタム Docker イメージをビルドします。 SageMakerモデル. のファイルとコードを使用できます。 ソースディレクトリ 私たちの GitHub リポジトリの。

Dockerfile は、構築したいイメージを記述します。 標準の Ubuntu インストールから始めて、Scikit-learn をインストールします。 クローンも行います 高速テキスト そしてパッケージをインストールします。 これは、予測を行うために BlazingText モデルを読み込むために使用されます。 最後に、前述のファイルの形式でアルゴリズムを実装するコードを追加し、コンテナーに環境をセットアップします。 全体 ドッカーファイル はリポジトリに用意されており、そのままご利用いただけます。 参照する ホスティングサービスで独自の推論コードを使用する SageMaker が Docker コンテナとその要件と対話する方法の詳細については、.

また、 予測子.py モデルをロードして予測を行うためのコードが含まれています。 入力データを CSV として受け入れるため、Clarify と互換性があります。

Dockerfile を取得したら、Docker コンテナを構築してアップロードします。 Amazon エラスティック コンテナ レジストリ (アマゾン ECR)。 ステップバイステップのプロセスは、次の形式で見つけることができます。 シェルスクリプト これは、Docker イメージを作成して Amazon ECR にアップロードするために使用できます。

BlazingText モデルを作成する

次のステップは、SageMaker Python SDK からモデル オブジェクトを作成することです。 モデルクラス HTTPS エンドポイントにデプロイできます。 このモデルを使用して説明を生成するように Clarify を構成します。 この手順のコードとその他の要件については、次を参照してください。 Amazon SageMaker の独自のコンテナを使用して、トレーニング済みの SageMaker BlazingText モデルをデプロイします.

明確化を構成する

Clarify NLP は、回帰および分類モデルと互換性があります。 入力テキストのどの部分がモデルの予測に影響するかを理解するのに役立ちます。 Clarify は 62 の言語をサポートし、複数の言語のテキストを処理できます。 SageMaker Python SDK を使用して、Clarify が説明可能性レポートを作成するために使用する XNUMX つの構成を定義します。

まず、プロセッサ オブジェクトを作成し、予測と特徴属性に使用される入力データセットの場所も指定する必要があります。

import sagemaker
sagemaker_session = sagemaker.Session()
from sagemaker import clarify
clarify_processor = clarify.SageMakerClarifyProcessor(
role=role,
instance_count=1,
instance_type="ml.m5.xlarge",
sagemaker_session=sagemaker_session,
)
file_path = "<location of the input dataset>"

データ構成

ここでは、入力データの場所、機能列、および Clarify ジョブが出力を保存する場所を構成する必要があります。 これは、DataConfig オブジェクトの作成中に関連する引数を渡すことによって行われます。

explainability_output_path = "s3://{}/{}/clarify-text-explainability".format(
sagemaker_session.default_bucket(), "explainability"
) explainability_data_config = clarify.DataConfig(
s3_data_input_path=file_path,
s3_output_path=explainability_output_path,
headers=["Review Text"],
dataset_type="text/csv",
)

モデル構成

ModelConfig では、トレーニング済みのモデルに関する情報を指定する必要があります。 ここでは、前のステップで作成した BlazingText SageMaker モデルの名前を指定し、次のような他のパラメーターも設定します。 アマゾン エラスティック コンピューティング クラウド (Amazon EC2) インスタンスの種類とコンテンツの形式:

model_config = clarify.ModelConfig(
model_name=model_name,
instance_type="ml.m5.xlarge",
instance_count=1,
accept_type="application/jsonlines",
content_type="text/csv",
endpoint_name_prefix=None,
)

SHAPConfig

これは、特徴の属性を取得する方法を Clarify に通知するために使用されます。 TextConfig は、テキストと言語の粒度を指定するために使用されます。 このデータセットでは、入力テキストを単語に分解したいので、言語は英語であるため、これらの値をそれぞれトークンと英語に設定します。 データセットの性質に応じて、粒度を文または段落に設定できます。 ベースラインは特別なトークンに設定されます。 これは、SHAP 値を計算するための予測を取得しながら、Clarify が入力テキストのサブセットを削除し、それらをベースラインからの値に置き換えることを意味します。 これは、モデルの予測に対するトークンの影響を決定し、それらの重要性を識別する方法です。 カーネル SHAP アルゴリズムで使用されるサンプルの数は、 num_samples 口論。 値が高いほど、特徴の属性がより堅牢になりますが、ジョブの実行時間が長くなる可能性もあります。 したがって、XNUMX つの間でトレードオフを行う必要があります。 次のコードを参照してください。

shap_config = clarify.SHAPConfig(
baseline=[["<UNK>"]],
num_samples=1000,
agg_method="mean_abs",
save_local_shap_values=True,
text_config=clarify.TextConfig(granularity="token", language="english"),
)

詳細については、を参照してください。 シャープレイ値を使用する機能の帰属 および AmazonAIの公平性と説明性に関するホワイトペーパー.

モデル予測ラベル構成

Clarify が予測ラベルまたは予測スコアまたは確率を抽出するには、この構成オブジェクトを設定する必要があります。 次のコードを参照してください。

from sagemaker.clarify import ModelPredictedLabelConfig
modellabel_config = ModelPredictedLabelConfig(probability="prob", label="label")

詳細については、 ドキュメント SDKで。

明確化ジョブを実行する

さまざまな構成を作成したら、Clarify 処理ジョブをトリガーする準備が整いました。 処理ジョブは、入力とパラメーターを検証し、エフェメラル エンドポイントを作成し、SHAP アルゴリズムを使用してローカルおよびグローバルの特徴属性を計算します。 それが完了すると、エフェメラル エンドポイントが削除され、出力ファイルが生成されます。 次のコードを参照してください。

clarify_processor.run_explainability(
data_config=explainability_data_config,
model_config=model_config,
explainability_config=shap_config,
model_scores=modellabel_config,
)

このステップの実行時間は、データセットのサイズと、SHAP によって生成されるサンプルの数によって異なります。

結果を視覚化する

最後に、Clarify 処理ジョブによって生成されたローカル フィーチャ アトリビューション レポートの結果の視覚化を示します。 出力は JSON Lines 形式で、いくつかの処理が行われます。 次の例のように、入力テキスト内のトークンのスコアをプロットできます。 バーが高いほど、ターゲット ラベルへの影響が大きくなります。 さらに、正の値はターゲット変数のより高い予測に関連付けられ、負の値はより低い予測に関連付けられます。 この例では、モデルは入力テキスト「Wesebach is a river of Hesse Germany」を予測します。 予測されたクラスは Natural Place であり、スコアは、モデルがこの予測を行うのに最も有益な単語「river」を検出したことを示しています。 これは人間にとって直感的であり、より多くのサンプルを調べることで、モデルが正しい機能を学習し、期待どおりに動作しているかどうかを判断できます。

Amazon SageMaker Clear PlatoBlockchain Data Intelligence を使用したテキスト分類モデルの予測について説明します。垂直検索。あい。

まとめ

この投稿では、Clarify を使用して、SageMaker BlazingText を使用してトレーニングされたテキスト分類モデルからの予測を説明する方法について説明しました。 サンプル ノートブックを使用して、テキスト分類モデルからの予測を説明することから始めましょう SageMaker BlazingText のテキストの説明可能性.

また、SageMaker 組み込みアルゴリズムで Clarify を使用するときに使用できる、より一般的な設計パターンについても説明しました。 詳細については、次を参照してください。 機械学習予測の公平性とモデルの説明可能性とは. もお読みになることをお勧めします。 AmazonAIの公平性と説明性に関するホワイトペーパーでは、トピックの概要を説明し、ベスト プラクティスと制限事項について説明します。


著者について

Amazon SageMaker Clear PlatoBlockchain Data Intelligence を使用したテキスト分類モデルの予測について説明します。垂直検索。あい。 ピナック・パニグラヒ お客様と協力して機械学習主導のソリューションを構築し、AWS での戦略的なビジネス上の問題を解決します。 機械学習に専念していないときは、ハイキングをしたり、本を読んだり、スポーツをしたりしています。

Amazon SageMaker Clear PlatoBlockchain Data Intelligence を使用したテキスト分類モデルの予測について説明します。垂直検索。あい。 ダワル・パテル AWSのプリンシパル機械学習アーキテクトです。 彼は、分散コンピューティングや人工知能に関連する問題について、大企業から中規模の新興企業に至るまでの組織と協力してきました。 彼は、NLPおよびコンピュータービジョンドメインを含むディープラーニングに焦点を当てています。 彼は、顧客がSageMakerで高性能モデルの推論を実現するのを支援します。

タイムスタンプ:

より多くの AWS機械学習