Amazon SageMaker、Amazon Neptune、Deep Graph Library PlatoBlockchain Data Intelligence を使用して、GNN ベースのリアルタイムの不正検出ソリューションを構築します。 垂直検索。 あい。

Amazon SageMaker、Amazon Neptune、Deep Graph Library を使用して、GNN ベースのリアルタイムの不正検出ソリューションを構築する

不正行為は、e コマース、ソーシャル メディア、金融サービスなど、多くの業界に深刻な影響を与えています。 詐欺は、企業や消費者に重大な損失をもたらす可能性があります。 アメリカの消費者は、5.8 年に詐欺で 2021 億ドル以上を失ったと報告しており、70 年に比べて 2020% 以上増加しています。. ルールベースのフィルター、異常検出、機械学習 (ML) モデルなど、詐欺師を検出するために多くの手法が使用されてきました。

実世界のデータでは、エンティティは多くの場合、他のエンティティとの豊富な関係を伴います。 このようなグラフ構造は、異常検出のための貴重な情報を提供できます。 たとえば、次の図では、ユーザーは Wi-Fi ID、物理的な場所、電話番号などの共有エンティティを介して接続されています。 電話番号など、これらのエンティティには多数の一意の値があるため、従来の機能ベースのモデルでそれらを使用することは困難です。たとえば、すべての電話番号をワンホット エンコードすることは現実的ではありません。 しかし、そのような関係は、ユーザーが詐欺師であるかどうかを予測するのに役立ちます。 ユーザーが既知の詐欺師と複数のエンティティを共有している場合、そのユーザーは詐欺師である可能性が高くなります。

最近では、グラフ ニューラル ネットワーク (GNN) が不正検出の一般的な方法になっています。 GNN モデルは、グラフ構造とノードまたはエッジ (ユーザーやトランザクションなど) の属性の両方を組み合わせて、意味のある表現を学習し、悪意のあるユーザーやイベントを正当なものから区別することができます。 この機能は、詐欺師が共謀して異常な特徴を隠し、関係の痕跡を残す詐欺を検出するために重要です。

現在の GNN ソリューションは、主にオフラインのバッチ トレーニングと推論モードに依存しており、悪意のあるイベントが発生して損失が発生した後に詐欺師を検出します。 ただし、不正なユーザーや不正行為をリアルタイムで把握することは、損失を防ぐために非常に重要です。 これは特に、不正行為を防止する機会が XNUMX 回しかないビジネス ケースに当てはまります。 たとえば、一部の電子商取引プラットフォームでは、アカウント登録が広く開かれています。 詐欺師は、XNUMX つのアカウントで一度だけ悪意を持って行動することができ、同じアカウントを二度と使用することはありません。

リアルタイムで詐欺師を予測することは重要です。 ただし、このようなソリューションを構築するのは困難です。 GNN は業界ではまだ新しいため、GNN モデルをバッチ サービングからリアルタイム サービングに変換するためのオンライン リソースは限られています。 さらに、着信イベントを GNN リアルタイム サービング API にフィードできるストリーミング データ パイプラインを構築するのは困難です。 著者の知る限り、この記事の執筆時点では、GNN ベースのリアルタイム推論ソリューションに使用できる参照アーキテクチャと例はありません。

開発者が GNN をリアルタイムの不正検出に適用できるようにするために、この投稿では使用方法を示します。 アマゾン海王星, アマゾンセージメーカー、 そしてその ディープグラフライブラリ(DGL)、他の AWS サービスの中でも、GNN モデルを使用したリアルタイムの不正検出のためのエンドツーエンドのソリューションを構築します。

次の XNUMX つのタスクに重点を置いています。

  • 表形式のトランザクション データセットを異種グラフ データセットに処理する
  • SageMaker を使用して GNN モデルをトレーニングする
  • トレーニング済み GNN モデルを SageMaker エンドポイントとしてデプロイする
  • 着信トランザクションのリアルタイム推論のデモンストレーション

この投稿は、以前の作業を拡張します Amazon SageMakerとDeep Graph Libraryを使用して異種ネットワークの不正を検出する、最初の XNUMX つのタスクに焦点を当てています。 異種グラフ、GNN、および GNN の半教師付きトレーニングの詳細については、その投稿を参照してください。

不正検出のための完全マネージド型の AWS AI サービスを探している企業も使用できます アマゾン詐欺検出器。これにより、偽のアカウントの作成やオンライン決済詐欺など、詐欺の可能性があるオンライン活動を簡単に特定できます。

ソリューションの概要

このソリューションには、XNUMX つの主要部分が含まれています。

最初の部分は、データを処理し、GNN モデルをトレーニングし、トレーニング済みのモデルをデプロイするパイプラインです。 それは使用しています AWSグルー トランザクションデータを処理し、処理されたデータを両方に保存します アマゾン海王星 および Amazon シンプル ストレージ サービス (アマゾン S3)。 次に、SageMaker トレーニングジョブがトリガーされ、Amazon S3 に保存されたデータで GNN モデルをトレーニングして、トランザクションが不正かどうかを予測します。 トレーニングされたモデルは、トレーニング ジョブの完了時に、他のアセットとともに Amazon S3 に保存されます。 最後に、保存されたモデルが SageMaker エンドポイントとしてデプロイされます。 パイプラインは AWSステップ関数、次の図に示すように。

Amazon SageMaker、Amazon Neptune、Deep Graph Library PlatoBlockchain Data Intelligence を使用して、GNN ベースのリアルタイムの不正検出ソリューションを構築します。 垂直検索。 あい。

ソリューションの XNUMX 番目の部分は、リアルタイムの不正取引検出を実装します。 これは、Neptune のグラフ データベースにクエリを実行して受信トランザクションに関連するサブグラフを抽出する RESTful API から始まります。 また、ビジネス アクティビティをシミュレートできる Web ポータルもあり、不正なトランザクションと正当なトランザクションの両方でオンライン トランザクションを生成します。 Web ポータルは、不正検出のライブ視覚化を提供します。 この部分は使用します アマゾンCloudFrontの, AWS 増幅, AWS アプリ同期, アマゾンAPIゲートウェイ、ステップ関数、および アマゾンドキュメントDB Web アプリケーションを迅速に構築します。 次の図は、リアルタイムの推論プロセスと Web ポータルを示しています。

Amazon SageMaker、Amazon Neptune、Deep Graph Library PlatoBlockchain Data Intelligence を使用して、GNN ベースのリアルタイムの不正検出ソリューションを構築します。 垂直検索。 あい。

このソリューションの実装は、 AWS CloudFormation AWS アカウントでアーキテクチャを起動できるテンプレートは、次の方法で公開されています。 GitHubレポ.

データ処理

このセクションでは、サンプル データセットを処理し、それを生のテーブルから、異なる列間で特定された関係を持つグラフに変換する方法について簡単に説明します。

このソリューションでは、同じデータセットを使用します。 IEEE-CIS不正データセット、前回の投稿の通り Amazon SageMakerとDeep Graph Libraryを使用して異種ネットワークの不正を検出する. したがって、データ処理の基本原理は同じです。 簡単に言うと、不正データセットにはトランザクション テーブルと ID テーブルが含まれており、約 500,000 件の匿名化されたトランザクション レコードとコンテキスト情報 (トランザクションで使用されたデバイスなど) が含まれています。 一部のトランザクションには、トランザクションが不正かどうかを示すバイナリ ラベルが付いています。 私たちのタスクは、ラベルのないトランザクションのうち、どれが不正でどれが正当なものかを予測することです。

次の図は、IEEE テーブルを異種グラフに変換する一般的なプロセスを示しています。 まず、各テーブルから 03 つの列を抽出します。 XNUMX つの列は常にトランザクション ID 列であり、一意の各 TransactionID を XNUMX つのノードとして設定します。 ProductCD 列や id_XNUMX 列などのカテゴリ列から別の列が選択され、各一意のカテゴリがノードとして設定されます。 TransactionID と一意のカテゴリが同じ行に表示される場合、それらを XNUMX つのエッジで接続します。 このようにして、テーブル内の XNUMX つの列を XNUMX つの XNUMX 列に変換します。 次に、それらの二部構成を TransactionID ノードと組み合わせます。ここで、同じ TransactionID ノードが XNUMX つの一意のノードにマージされます。 このステップの後、二部構成から構築された異種グラフが得られます。

Amazon SageMaker、Amazon Neptune、Deep Graph Library PlatoBlockchain Data Intelligence を使用して、GNN ベースのリアルタイムの不正検出ソリューションを構築します。 垂直検索。 あい。

グラフの作成に使用されない残りの列については、TransactionID ノードの機能として結合します。 isFraud 値を持つ TransactionID 値は、モデル トレーニングのラベルとして使用されます。 この異種グラフに基づいて、タスクは TransactionID ノードのノード分類タスクになります。 GNN をトレーニングするためのグラフ データの準備の詳細については、 特徴抽出 および グラフの作成 以前のブログ投稿のセクション。

このソリューションで使用されるコードは、 src/scripts/glue-etl.py. Jupyter ノートブックを使用してデータ処理を試すこともできます src/sagemaker/01.FD_SL_Process_IEEE-CIS_Dataset.ipynb.

前回の記事で行ったようにデータを手動で処理する代わりに、このソリューションでは、Apache Spark を介して膨大なデータセットを並行して処理することをサポートする Step Functions と AWS Glue によって調整された完全に自動化されたパイプラインを使用します。 Step Functions ワークフローは、 AWSクラウド開発キット (AWS CDK)。 以下は コードスニペット このワークフローを作成するには:

import { LambdaInvoke, GlueStartJobRun } from 'aws-cdk-lib/aws-stepfunctions-tasks';
    
    const parametersNormalizeTask = new LambdaInvoke(this, 'Parameters normalize', {
      lambdaFunction: parametersNormalizeFn,
      integrationPattern: IntegrationPattern.REQUEST_RESPONSE,
    });
    
    ...
    
    const dataProcessTask = new GlueStartJobRun(this, 'Data Process', {
      integrationPattern: IntegrationPattern.RUN_JOB,
      glueJobName: etlConstruct.jobName,
      timeout: Duration.hours(5),
      resultPath: '$.dataProcessOutput',
    });
    
    ...    
    
    const definition = parametersNormalizeTask
      .next(dataIngestTask)
      .next(dataCatalogCrawlerTask)
      .next(dataProcessTask)
      .next(hyperParaTask)
      .next(trainingJobTask)
      .next(runLoadGraphDataTask)
      .next(modelRepackagingTask)
      .next(createModelTask)
      .next(createEndpointConfigTask)
      .next(checkEndpointTask)
      .next(endpointChoice);

このワークフローは、GNN モデルトレーニング用のグラフデータを構築するだけでなく、グラフデータを Neptune にバッチロードして、後でリアルタイムの推論を実行します。 このバッチ データ ロード プロセス 次のコード スニペットに示されています。

from neptune_python_utils.endpoints import Endpoints
from neptune_python_utils.bulkload import BulkLoad

...

bulkload = BulkLoad(
        source=targetDataPath,
        endpoints=endpoints,
        role=args.neptune_iam_role_arn,
        region=args.region,
        update_single_cardinality_properties=True,
        fail_on_error=True)
        
load_status = bulkload.load_async()
status, json = load_status.status(details=True, errors=True)
load_status.wait()

GNNモデルのトレーニング

モデル トレーニング用のグラフ データが Amazon S3 に保存された後、 SageMakerトレーニングジョブは、トレーニング ジョブの実行中にのみ課金され、Bring Your Own Container (BYOC) モードで GNN モデル トレーニング プロセスを開始するためにトリガーされます。 モデルのトレーニング スクリプトと依存関係を Docker イメージにパックし、それを使用して SageMaker トレーニング インスタンスを作成できます。 BYOC 方式を使用すると、トレーニング環境をセットアップする際の労力を大幅に節約できます。 の src/sagemaker/02.FD_SL_Build_Training_Container_Test_Local.ipynbでは、GNN モデル トレーニングの詳細を確認できます。

Dockerイメージ

Jupyter ノートブック ファイルの最初の部分は、トレーニング用の Docker イメージの生成です (次のコード スニペットを参照)。

*!* aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 763104351884.dkr.ecr.us-east-1.amazonaws.com
image_name *=* 'fraud-detection-with-gnn-on-dgl/training'
*!* docker build -t $image_name ./FD_SL_DGL/gnn_fraud_detection_dgl

モデルのトレーニングには PyTorch ベースのイメージを使用しました。 Docker イメージのビルド時に、Deep Graph Library (DGL) とその他の依存関係がインストールされます。 の GNN モデル コード src/sagemaker/FD_SL_DGL/gnn_fraud_detection_dgl フォルダもイメージにコピーされます。

トランザクション データを異種グラフに処理するため、このソリューションでは、 リレーショナルグラフ畳み込みネットワーク (RGCN) モデル。異種グラフ用に特別に設計されています。 私たちの RGCN モデルは、異種グラフのノードの学習可能な埋め込みをトレーニングできます。 次に、学習された埋め込みは、ノード ラベルを予測するための全結合層の入力として使用されます。

ハイパーパラメータ

GNN をトレーニングするには、トレーニング プロセスの前に、構築されたグラフのファイル名、GNN モデルのレイヤー数、トレーニング エポック、オプティマイザー、最適化パラメーターなど、いくつかのハイパーパラメーターを定義する必要があります。 構成のサブセットについては、次のコードを参照してください。

edges *=* ","*.*join(map(*lambda* x: x*.*split("/")[*-*1], [file *for* file *in* processed_files *if* "relation" *in* file]))

params *=* {'nodes' : 'features.csv',
          'edges': edges,
          'labels': 'tags.csv',
          'embedding-size': 64,
          'n-layers': 2,
          'n-epochs': 10,
          'optimizer': 'adam',
          'lr': 1e-2}

すべてのハイパーパラメータとそのデフォルト値の詳細については、次を参照してください。 estimator_fns.py セクションに src/sagemaker/FD_SL_DGL/gnn_fraud_detection_dgl フォルダにコピーします。

SageMaker を使用したモデルのトレーニング

カスタマイズされたコンテナー Docker イメージがビルドされたら、前処理されたデータを使用して、定義したハイパーパラメーターで GNN モデルをトレーニングします。 トレーニング ジョブは、バックエンドのディープ ラーニング フレームワークとして PyTorch とともに DGL を使用して、GNN を構築およびトレーニングします。 SageMaker では、カスタマイズされた Docker イメージ (SageMaker estimator の入力引数) を使用して GNN モデルを簡単にトレーニングできます。 SageMaker で DGL を使用して GNN をトレーニングする方法の詳細については、次を参照してください。 ディープグラフネットワークのトレーニング.

SageMaker Python SDK は使用します 推定量 SageMaker 互換のカスタム Docker コンテナを実行する SageMaker でのトレーニングをカプセル化し、SageMaker Python SDK を使用して独自の ML アルゴリズムを実行できるようにします。 次のコード スニペットは、(ローカル環境またはクラウド インスタンスのいずれかで) SageMaker を使用してモデルをトレーニングする方法を示しています。

from sagemaker.estimator import Estimator
from time import strftime, gmtime
from sagemaker.local import LocalSession

localSageMakerSession = LocalSession(boto_session=boto3.session.Session(region_name=current_region))
estimator = Estimator(image_uri=image_name,
                      role=sagemaker_exec_role,
                      instance_count=1,
                      instance_type='local',
                      hyperparameters=params,
                      output_path=output_path,
                      sagemaker_session=localSageMakerSession)

training_job_name = "{}-{}".format('GNN-FD-SL-DGL-Train', strftime("%Y-%m-%d-%H-%M-%S", gmtime()))
print(training_job_name)

estimator.fit({'train': processed_data}, job_name=training_job_name)

トレーニング後、テスト セットでの GNN モデルのパフォーマンスが次の出力のように表示されます。 RGCN モデルは通常、約 0.87 AUC と 95% 以上の精度を達成できます。 RGCN モデルと他の ML モデルの比較については、 結果 詳細については、以前のブログ投稿のセクションを参照してください。

Epoch 00099 | Time(s) 7.9413 | Loss 0.1023 | f1 0.3745
Metrics
Confusion Matrix:
                        labels positive labels negative
    predicted positive  4343            576
    predicted negative  13494           454019

    f1: 0.3817, precision: 0.8829, recall: 0.2435, acc: 0.9702, roc: 0.8704, pr: 0.4782, ap: 0.4782

Finished Model training

モデルのトレーニングが完了すると、SageMaker はトレーニング済みのモデルを、トレーニング済みのノードの埋め込みを含む他のアセットと一緒に ZIP ファイルにパックし、指定された S3 の場所にアップロードします。 次に、リアルタイムの不正検出のためのトレーニング済みモデルの展開について説明します。

GNN モデルの展開

SageMaker を使用すると、トレーニング済み ML モデルのデプロイが簡単になります。 この段階では、SageMaker PyTorchModel クラスを使用してトレーニング済みモデルをデプロイします。これは、DGL モデルがバックエンド フレームワークとして PyTorch に依存しているためです。 展開コードは src/sagemaker/03.FD_SL_Endpoint_Deployment.ipynb ファイルにソフトウェアを指定する必要があります。

トレーニング済みのモデル ファイルとアセットに加えて、SageMaker には、カスタマイズされたモデルをデプロイするためのエントリ ポイント ファイルが必要です。 エントリ ポイント ファイルは、推論リクエストに応答するために実行され、推論エンドポイント インスタンスのメモリに格納されます。 この場合、エントリ ポイント ファイルは fd_sl_deployment_entry_point.py 内のファイル src/sagemaker/FD_SL_DGL/code 次の XNUMX つの主要な機能を実行します。

  • リクエストを受信し、リクエストの内容を解析して、予測されるノードとそれに関連するデータを取得します
  • データを RGCN モデルの入力として DGL 異種グラフに変換します
  • トレーニング済みの RGCN モデルを介してリアルタイムの推論を実行する
  • 予測結果をリクエスタに返す

SageMaker の規則に従い、最初の XNUMX つの関数は input_fn 方法。 次のコードを参照してください (簡単にするために、一部のコメント コードを削除しています)。

def input_fn(request_body, request_content_type='application/json'):

    # --------------------- receive request ------------------------------------------------ #
    input_data = json.loads(request_body)

    subgraph_dict = input_data['graph']
    n_feats = input_data['n_feats']
    target_id = input_data['target_id']

    graph, new_n_feats, new_pred_target_id = recreate_graph_data(subgraph_dict, n_feats, target_id)

    return (graph, new_n_feats, new_pred_target_id)

構築された DGL グラフと機能は、 predict_fn 第三の機能を満たす方法。 predict_fn XNUMX つの入力引数を取ります: の出力 input_fn そして訓練されたモデル。 次のコードを参照してください。

def predict_fn(input_data, model):

    # ---------------------  Inference ------------------------------------------------ #
    graph, new_n_feats, new_pred_target_id = input_data

    with th.no_grad():
        logits = model(graph, new_n_feats)
        res = logits[new_pred_target_id].cpu().detach().numpy()

    return res[1]

で使用されたモデル perdict_fn によって作成されます model_fn エンドポイントが初めて呼び出されたときのメソッド。 関数 model_fn 保存されたモデル ファイルと関連するアセットを model_dir 引数と SageMaker モデルフォルダー。 次のコードを参照してください。

def model_fn(model_dir):

    # ------------------ Loading model -------------------
    ntype_dict, etypes, in_size, hidden_size, out_size, n_layers, embedding_size = 
    initialize_arguments(os.path.join(BASE_PATH, 'metadata.pkl'))

    rgcn_model = HeteroRGCN(ntype_dict, etypes, in_size, hidden_size, out_size, n_layers, embedding_size)

    stat_dict = th.load('model.pth')

    rgcn_model.load_state_dict(stat_dict)

    return rgcn_model

の出力 predict_fn method は、クラス 0 とクラス 1 のロジットを示す 0 つの数値のリストです。1 は正当であることを意味し、XNUMX は不正であることを意味します。 SageMaker はこのリストを受け取り、それを内部メソッドと呼ばれるメソッドに渡します output_fn 最終的な機能を完了します。

GNN モデルをデプロイするには、まずエントリ ポイント ファイルとその他のパラメータ (保存された ZIP ファイルのパス、PyTorch フレームワーク バージョン、Python バージョンなど) を使用して GNN モデルを SageMaker PyTorchModel クラスにラップします。 次に、インスタンス設定で deploy メソッドを呼び出します。 次のコードを参照してください。

env = {
    'SAGEMAKER_MODEL_SERVER_WORKERS': '1'
}

print(f'Use model {repackged_model_path}')

sagemakerSession = sm.session.Session(boto3.session.Session(region_name=current_region))
fd_sl_model = PyTorchModel(model_data=repackged_model_path, 
                           role=sagemaker_exec_role,
                           entry_point='./FD_SL_DGL/code/fd_sl_deployment_entry_point.py',
                           framework_version='1.6.0',
                           py_version='py3',
                           predictor_cls=JSONPredictor,
                           env=env,
                           sagemaker_session=sagemakerSession)
                           
fd_sl_predictor *=* fd_sl_model*.*deploy(instance_type*=*'ml.c5.4xlarge',
                                     initial_instance_count*=*1,)

上記の手順とコード スニペットは、Jupyter ノートブックから GNN モデルをオンライン推論エンドポイントとしてデプロイする方法を示しています。 ただし、本番環境では、データの処理、モデルのトレーニング、推論エンドポイントのデプロイなど、ワークフロー全体で Step Functions によってオーケストレーションされた前述の MLOps パイプラインを使用することをお勧めします。 パイプライン全体は AWS CDK によって実装されます 、さまざまな地域やアカウントで簡単に複製できます。

リアルタイム推論

新しいトランザクションが到着したら、リアルタイム予測を実行するには、次の XNUMX つの手順を完了する必要があります。

  1. ノードとエッジの挿入 – TransactionID や ProductCD などのトランザクションの情報をノードとエッジとして抽出し、Neptune データベースに保存されている既存のグラフ データに新しいノードを挿入します。
  2. サブグラフ抽出 – 予測対象のトランザクション ノードを中心ノードとして設定し、GNN モデルの入力要件に従って n ホップ サブグラフを抽出します。
  3. 特徴抽出 – サブグラフのノードとエッジについて、関連する特徴を抽出します。
  4. 推論エンドポイントを呼び出す – サブグラフと機能をリクエストのコンテンツにパックしてから、リクエストを推論エンドポイントに送信します。

このソリューションでは、RESTful API を実装して、前の手順で説明したリアルタイムの不正な予測を実現します。 リアルタイム予測については、次の疑似コードを参照してください。 完全な実装は 完全なソース コード ファイル.

リアルタイムで予測するには、最初の XNUMX つのステップでレイテンシを低くする必要があります。 したがって、グラフ データベースは、これらのタスク、特にグラフ データベース クエリで効率的に達成できる部分グラフ抽出に最適な選択肢です。 疑似コードをサポートする下線付き関数は、Neptune の gremlin クエリに基づいています。

def handler(event, context):
    
    graph_input = GraphModelClient(endpoints)
    
    # Step 1: node and edge insertion
    trans_dict, identity_dict, target_id, transaction_value_cols, union_li_cols = 
        load_data_from_event(event, transactions_id_cols, transactions_cat_cols, dummied_col)
    graph_input.insert_new_transaction_vertex_and_edge(trans_dict, identity_dict , target_id, vertex_type = 'Transaction')
    
    
    # Setp 2: subgraph extraction
    subgraph_dict, transaction_embed_value_dict = 
        graph_input.query_target_subgraph(target_id, trans_dict, transaction_value_cols, union_li_cols, dummied_col)
    

    # Step 3 & 4: feature extraction & call the inference endpoint
    transaction_id = int(target_id[(target_id.find('-')+1):])
    pred_prob = invoke_endpoint_with_idx(endpointname = ENDPOINT_NAME, target_id = transaction_id, subgraph_dict = subgraph_dict, n_feats = transaction_embed_value_dict)
       
    function_res = {
                    'id': event['transaction_data'][0]['TransactionID'],
                    'flag': pred_prob > MODEL_BTW,
                    'pred_prob': pred_prob
                    }
       
    return function_res

GNN を使用したリアルタイムの不正検出に関する注意点の XNUMX つは、GNN 推論モードです。 リアルタイムの推論を実現するには、GNN モデルの推論を伝達モードから帰納モードに変換する必要があります。 伝達的推論モードの GNN モデルは、新しく出現したノードとエッジを予測できませんが、帰納的モードでは、GNN モデルは新しいノードとエッジを処理できます。 次の図は、変換モードと誘導モードの違いを示しています。

Amazon SageMaker、Amazon Neptune、Deep Graph Library PlatoBlockchain Data Intelligence を使用して、GNN ベースのリアルタイムの不正検出ソリューションを構築します。 垂直検索。 あい。

変換モードでは、予測されたノードとエッジは、トレーニング中にラベル付きのノードとエッジと共存します。 モデルは推論の前にそれらを識別し、トレーニングで推論できます。 帰納モードのモデルはトレーニング グラフでトレーニングされますが、見えないノード (右側の赤い点線の円内のノード) を、右側の灰色の三角形のノードのように、新しいノードである可能性がある関連する隣接ノードと共に予測する必要があります。

当社の RGCN モデルは、伝達モードでトレーニングおよびテストされています。 トレーニング中のすべてのノードにアクセスでき、IP アドレスやカードの種類など、機能のない各ノードの埋め込みもトレーニングされます。 テスト段階では、RGCN モデルはこれらの埋め込みをノード機能として使用して、テスト セット内のノードを予測します。 ただし、リアルタイムの推論を行うと、新しく追加された機能のないノードの一部には、トレーニング グラフにないため、そのような埋め込みがありません。 この問題に取り組む XNUMX つの方法は、同じノード タイプのすべての埋め込みの平均を新しいノードに割り当てることです。 このソリューションでは、この方法を採用しています。

さらに、このソリューションは Web ポータル (次のスクリーンショットを参照) を提供し、事業者の視点からリアルタイムの不正予測を示します。 シミュレートされたオンライン トランザクションを生成し、検出された不正なトランザクション情報をリアルタイムで視覚化できます。

Amazon SageMaker、Amazon Neptune、Deep Graph Library PlatoBlockchain Data Intelligence を使用して、GNN ベースのリアルタイムの不正検出ソリューションを構築します。 垂直検索。 あい。

クリーンアップ

ソリューションの探索が終了したら、次のことができます。 リソースをきれいにする 料金が発生しないようにします。

まとめ

この投稿では、SageMaker、Neptune、および DGL を使用して、GNN ベースのリアルタイム不正検出ソリューションを構築する方法を示しました。 このソリューションには、次の XNUMX つの主な利点があります。

  • 予測精度と AUC 指標の点で優れたパフォーマンスを発揮します
  • ストリーミング MLOps パイプラインと SageMaker エンドポイントを介してリアルタイムの推論を実行できます
  • 提供された CloudFormation テンプレートを使用して展開プロセス全体を自動化し、関心のある開発者が自分のアカウントのカスタム データを使用してこのソリューションを簡単にテストできるようにします。

ソリューションの詳細については、 GitHubレポ.

このソリューションをデプロイした後、GNN モデルを変更せずに、独自のデータ形式に合わせてデータ処理コードをカスタマイズし、リアルタイムの推論メカニズムを変更することをお勧めします。 レイテンシをさらに最適化せずに、リアルタイム推論を XNUMX つのステップに分割したことに注意してください。 これらの XNUMX つのステップでは、デモ データセットで予測を取得するのに数秒かかります。 サブグラフと特徴抽出のための Neptune グラフ データ スキーマ設計とクエリを最適化することで、推論のレイテンシーを大幅に削減できると考えています。


著者について

Amazon SageMaker、Amazon Neptune、Deep Graph Library PlatoBlockchain Data Intelligence を使用して、GNN ベースのリアルタイムの不正検出ソリューションを構築します。 垂直検索。 あい。ジャン・チャン 機械学習技術を使用して、詐欺の検出、装飾画像の生成など、顧客がさまざまな問題を解決するのを支援してきた応用科学者です。 グラフベースの機械学習、特にグラフ ニューラル ネットワーク、中国、米国、シンガポールの顧客向けソリューションの開発に成功しました。 AWS のグラフ機能の啓蒙者として、Zhang は GNN、Deep Graph Library (DGL)、Amazon Neptune、およびその他の AWS サービスに関する多くの公開プレゼンテーションを行ってきました。

Amazon SageMaker、Amazon Neptune、Deep Graph Library PlatoBlockchain Data Intelligence を使用して、GNN ベースのリアルタイムの不正検出ソリューションを構築します。 垂直検索。 あい。朱蒙心 AWS のソリューション アーキテクトのマネージャーであり、再利用可能な AWS ソリューションの設計と開発に重点を置いています。 彼は長年ソフトウェア開発に携わっており、さまざまな規模のいくつかのスタートアップ チームを担当してきました。 彼はまた、オープンソース ソフトウェアの支持者でもあり、Eclipse コミッターでもありました。

Amazon SageMaker、Amazon Neptune、Deep Graph Library PlatoBlockchain Data Intelligence を使用して、GNN ベースのリアルタイムの不正検出ソリューションを構築します。 垂直検索。 あい。王浩珠 は、Amazon ML Solutions Lab の研究科学者であり、強化学習バーティカルを共同でリードしています。 彼は、グラフ学習、自然言語処理、強化学習、および AutoML に関する最新の研究を使用して、顧客が高度な機械学習ソリューションを構築するのを支援しています。 Haozhu は、ミシガン大学で電気およびコンピューター エンジニアリングの博士号を取得しています。

タイムスタンプ:

より多くの AWS機械学習