Amazon SageMaker, Amazon Neptune 및 Deep Graph Library PlatoBlockchain Data Intelligence를 사용하여 GNN 기반 실시간 사기 탐지 솔루션을 구축하십시오. 수직 검색. 일체 포함.

Amazon SageMaker, Amazon Neptune 및 Deep Graph Library를 사용하여 GNN 기반 실시간 사기 탐지 솔루션 구축

사기 행위는 전자 상거래, 소셜 미디어 및 금융 서비스와 같은 많은 산업에 심각한 영향을 미칩니다. 사기는 기업과 소비자에게 상당한 손실을 초래할 수 있습니다. 미국 소비자들은 5.8년에 사기로 인해 2021억 달러 이상의 손실을 입었다고 보고했으며, 이는 70년보다 2020% 이상 증가한 수치입니다.. 규칙 기반 필터, 이상 탐지, 머신 러닝(ML) 모델 등 사기범을 탐지하는 데 많은 기술이 사용되었습니다.

실제 데이터에서 엔터티는 종종 다른 엔터티와의 풍부한 관계를 포함합니다. 이러한 그래프 구조는 이상 감지에 유용한 정보를 제공할 수 있습니다. 예를 들어 다음 그림에서 사용자는 Wi-Fi ID, 물리적 위치 및 전화번호와 같은 공유 엔터티를 통해 연결됩니다. 전화번호와 같은 이러한 엔터티의 고유한 값이 많기 때문에 기존 기능 기반 모델에서 사용하기 어렵습니다. 예를 들어 모든 전화번호를 원-핫 인코딩하는 것은 실행 가능하지 않습니다. 그러나 이러한 관계는 사용자가 사기꾼인지 여부를 예측하는 데 도움이 될 수 있습니다. 사용자가 알려진 사기꾼과 여러 엔티티를 공유한 경우 사용자는 사기꾼일 가능성이 더 큽니다.

최근에는 그래프 신경망(GNN)이 사기 탐지에 널리 사용되는 방법이 되었습니다. GNN 모델은 사용자 또는 트랜잭션과 같은 노드 또는 에지의 그래프 구조와 속성을 결합하여 의미 있는 표현을 학습하여 악의적인 사용자 및 이벤트를 합법적인 것과 구별할 수 있습니다. 이 기능은 사기꾼이 공모하여 비정상적인 기능을 숨기지만 관계의 흔적을 남기는 사기를 감지하는 데 중요합니다.

현재 GNN 솔루션은 주로 악성 이벤트가 발생하고 손실이 발생한 후 사기범을 탐지하는 오프라인 배치 교육 및 추론 모드에 의존합니다. 그러나 사기성 사용자와 활동을 실시간으로 포착하는 것은 손실을 방지하는 데 중요합니다. 사기 행위를 방지할 수 있는 기회가 단 한 번뿐인 비즈니스 사례에서 특히 그렇습니다. 예를 들어, 일부 전자 상거래 플랫폼에서는 계정 등록이 활짝 열려 있습니다. 사기꾼은 계정으로 한 번만 악의적으로 행동하고 같은 계정을 다시는 사용하지 않을 수 있습니다.

사기꾼을 실시간으로 예측하는 것이 중요합니다. 그러나 그러한 솔루션을 구축하는 것은 어려운 일입니다. GNN은 아직 업계에 생소하기 때문에 GNN 모델을 일괄 제공에서 실시간 제공으로 변환하는 데 필요한 온라인 리소스가 제한적입니다. 또한 수신 이벤트를 GNN 실시간 제공 API에 공급할 수 있는 스트리밍 데이터 파이프라인을 구성하는 것이 어렵습니다. 저자가 아는 한, 이 글을 쓰는 시점에서 GNN 기반 실시간 추론 솔루션에 사용할 수 있는 참조 아키텍처와 예제가 없습니다.

개발자가 실시간 사기 탐지에 GNN을 적용할 수 있도록 이 게시물은 사용 방법을 보여줍니다. 아마존 해왕성, 아마존 세이지 메이커딥 그래프 라이브러리 (DGL), 다른 AWS 서비스 중에서 GNN 모델을 사용하여 실시간 사기 탐지를 위한 종단 간 솔루션을 구성합니다.

우리는 네 가지 작업에 중점을 둡니다.

  • 테이블 형식 트랜잭션 데이터세트를 이기종 그래프 데이터세트로 처리
  • SageMaker를 사용하여 GNN 모델 훈련
  • 훈련된 GNN 모델을 SageMaker 엔드포인트로 배포
  • 들어오는 트랜잭션에 대한 실시간 추론 시연

이 게시물은 이전 작업을 확장합니다. Amazon SageMaker 및 Deep Graph Library를 사용하여 이기종 네트워크의 사기 탐지, 처음 두 작업에 중점을 둡니다. 이종 그래프, GNN 및 GNN의 반 지도 교육에 대한 자세한 내용은 해당 게시물을 참조할 수 있습니다.

사기 탐지를 위한 완전 관리형 AWS AI 서비스를 찾는 기업도 다음을 사용할 수 있습니다. 아마존 사기 탐지기을 통해 가짜 계정 생성 또는 온라인 결제 사기와 같은 사기성 온라인 활동을 쉽게 식별 할 수 있습니다.

솔루션 개요

이 솔루션에는 두 가지 주요 부분이 포함되어 있습니다.

첫 번째 부분은 데이터를 처리하고, GNN 모델을 훈련하고, 훈련된 모델을 배포하는 파이프라인입니다. 그것은 사용 AWS 접착제 트랜잭션 데이터를 처리하고 처리된 데이터를 둘 다에 저장합니다. 아마존 해왕성아마존 단순 스토리지 서비스 (아마존 S3). 그런 다음 SageMaker 교육 작업이 트리거되어 트랜잭션이 사기인지 여부를 예측하기 위해 Amazon S3에 저장된 데이터에 대한 GNN 모델을 교육합니다. 훈련된 모델은 훈련 작업 완료 시 다른 자산과 함께 Amazon S3에 다시 저장됩니다. 마지막으로 저장된 모델은 SageMaker 끝점으로 배포됩니다. 파이프라인은 AWS 단계 함수, 다음 그림과 같이.

Amazon SageMaker, Amazon Neptune 및 Deep Graph Library PlatoBlockchain Data Intelligence를 사용하여 GNN 기반 실시간 사기 탐지 솔루션을 구축하십시오. 수직 검색. 일체 포함.

솔루션의 두 번째 부분은 실시간 사기 거래 탐지를 구현합니다. Neptune의 그래프 데이터베이스를 쿼리하여 들어오는 트랜잭션과 관련된 하위 그래프를 추출하는 RESTful API에서 시작합니다. 또한 비즈니스 활동을 시뮬레이션할 수 있는 웹 포털이 있어 사기 및 합법적 거래 모두와 온라인 거래를 생성합니다. 웹 포털은 사기 탐지에 대한 실시간 시각화를 제공합니다. 이 부분은 사용 아마존 CloudFront를, AWS 증폭, AWS 앱싱크, 아마존 API 게이트웨이, 단계 기능 및 아마존 문서 DB 웹 애플리케이션을 빠르게 구축할 수 있습니다. 다음 다이어그램은 실시간 추론 프로세스와 웹 포털을 보여줍니다.

Amazon SageMaker, Amazon Neptune 및 Deep Graph Library PlatoBlockchain Data Intelligence를 사용하여 GNN 기반 실시간 사기 탐지 솔루션을 구축하십시오. 수직 검색. 일체 포함.

이 솔루션의 구현과 함께 AWS 클라우드 포메이션 AWS 계정에서 아키텍처를 시작할 수 있는 템플릿은 다음을 통해 공개적으로 사용할 수 있습니다. GitHub 레포.

데이터 처리

이 섹션에서는 예제 데이터 세트를 처리하고 원시 테이블에서 다른 열 간에 식별된 관계가 있는 그래프로 변환하는 방법을 간략하게 설명합니다.

이 솔루션은 동일한 데이터세트를 사용하며, IEEE-CIS 사기 데이터 세트, 이전 게시물과 같이 Amazon SageMaker 및 Deep Graph Library를 사용하여 이기종 네트워크의 사기 탐지. 따라서 데이터 처리의 기본 원리는 동일합니다. 간단히 말해서, 사기 데이터 세트에는 컨텍스트 정보(예: 트랜잭션에 사용되는 장치)와 함께 거의 500,000개의 익명화된 트랜잭션 레코드가 있는 트랜잭션 테이블과 ID 테이블이 포함됩니다. 일부 거래에는 거래가 사기인지 여부를 나타내는 바이너리 레이블이 있습니다. 우리의 임무는 어떤 레이블이 없는 거래가 사기이고 어떤 것이 합법적인지 예측하는 것입니다.

다음 그림은 IEEE 테이블을 이종 그래프로 변환하는 일반적인 프로세스를 보여줍니다. 먼저 각 테이블에서 두 개의 열을 추출합니다. 하나의 열은 항상 트랜잭션 ID 열이며 각 고유한 TransactionID를 하나의 노드로 설정합니다. 다른 열은 ProductCD 및 id_03 열과 같은 범주 열에서 선택되며, 여기서 각 고유 범주는 노드로 설정됩니다. TransactionID와 고유한 카테고리가 같은 행에 나타나면 하나의 에지로 연결합니다. 이런 식으로 테이블의 두 열을 하나의 이분법으로 변환합니다. 그런 다음 동일한 TransactionID 노드가 하나의 고유한 노드로 병합되는 TransactionID 노드와 함께 이러한 이분법을 결합합니다. 이 단계 후에 우리는 이분법으로 구성된 이종 그래프를 갖게 됩니다.

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를 통해 병렬로 거대한 데이터 세트를 처리하는 것을 지원하는 AWS Glue 및 Step Functions에서 오케스트레이션하는 완전 자동 파이프라인을 사용합니다. 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 교육 작업훈련 작업이 실행 중일 때만 청구되는 는 BYOC(Bring Your Own Container) 모드에서 GNN 모델 훈련 프로세스를 시작하도록 트리거됩니다. SageMaker 교육 인스턴스를 생성하는 데 사용하는 Docker 이미지에 모델 교육 스크립트 및 종속성을 패키징할 수 있습니다. 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 기반 이미지를 사용했습니다. DGL(Deep Graph Library) 및 기타 종속성은 Docker 이미지를 빌드할 때 설치됩니다. 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 FBI 증오 범죄 보고서 src/sagemaker/FD_SL_DGL/gnn_fraud_detection_dgl 폴더에 있습니다.

SageMaker를 사용한 모델 교육

맞춤형 컨테이너 Docker 이미지가 빌드된 후 사전 처리된 데이터를 사용하여 정의한 하이퍼파라미터로 GNN 모델을 교육합니다. 훈련 작업은 PyTorch를 백엔드 딥 러닝 프레임워크로 사용하여 DGL을 사용하여 GNN을 구성하고 훈련합니다. SageMaker를 사용하면 SageMaker 추정기의 입력 인수인 사용자 지정 Docker 이미지로 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 모델의 배포를 간단하게 만듭니다. 이 단계에서는 DGL 모델이 백엔드 프레임워크로 PyTorch에 의존하기 때문에 SageMaker PyTorchModel 클래스를 사용하여 훈련된 모델을 배포합니다. 배포 코드는 다음에서 찾을 수 있습니다. src/sagemaker/03.FD_SL_Endpoint_Deployment.ipynb 파일.

훈련된 모델 파일 및 자산 외에도 SageMaker에는 사용자 지정 모델 배포를 위한 진입점 파일이 필요합니다. 진입점 파일은 추론 요청에 응답하기 위해 실행되고 추론 끝점 인스턴스의 메모리에 저장됩니다. 우리의 경우 진입점 파일은 fd_sl_deployment_entry_point.py 에 파일을 src/sagemaker/FD_SL_DGL/code 네 가지 주요 기능을 수행하는 폴더:

  • 예측할 노드 및 관련 데이터를 얻기 위해 요청을 수신하고 요청 내용을 구문 분석합니다.
  • RGCN 모델에 대한 입력으로 데이터를 DGL 이종 그래프로 변환
  • 훈련된 RGCN 모델을 통해 실시간 추론 수행
  • 요청자에게 예측 결과 반환

SageMaker 규칙에 따라 처음 두 기능은 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 두 개의 입력 인수를 취합니다. 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은 사기를 의미합니다. SageMaker는 이 목록을 가져와 이라는 내부 메서드에 전달합니다. output_fn 최종 기능을 완료합니다.

GNN 모델을 배포하려면 먼저 GNN 모델을 진입점 파일 및 기타 매개변수(저장된 ZIP 파일의 경로, PyTorch 프레임워크 버전, Python 버전 등)가 있는 SageMaker PyTorchModel 클래스로 래핑합니다. 그런 다음 인스턴스 설정으로 배포 메서드를 호출합니다. 다음 코드를 참조하십시오.

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

앞의 절차와 코드 조각은 GNN 모델을 Jupyter 노트북에서 온라인 추론 끝점으로 배포하는 방법을 보여줍니다. 그러나 프로덕션의 경우 데이터 처리, 모델 교육 및 추론 엔드포인트 배포를 포함하여 전체 워크플로에 대해 Step Functions에서 조정하는 앞에서 언급한 MLOps 파이프라인을 사용하는 것이 좋습니다. 전체 파이프라인은 AWS CDK로 구현됩니다. 신청, 다른 리전 및 계정에서 쉽게 복제할 수 있습니다.

실시간 추론

새 트랜잭션이 도착하면 실시간 예측을 수행하려면 다음 XNUMX단계를 완료해야 합니다.

  1. 노드 및 에지 삽입 – TransactionID, ProductCD 등의 트랜잭션 정보를 노드와 에지로 추출하고, Neptune 데이터베이스에 저장된 기존 그래프 데이터에 새로운 노드를 삽입한다.
  2. 부분 그래프 추출 – 예측할 트랜잭션 노드를 중심 노드로 설정하고 GNN 모델의 입력 요구 사항에 따라 n-hop 하위 그래프를 추출합니다.
  3. 특징 추출 – 하위 그래프의 노드와 간선에 대해 관련 기능을 추출합니다.
  4. 추론 엔드포인트 호출 – 하위 그래프와 기능을 요청의 내용으로 묶은 다음 요청을 추론 끝점으로 보냅니다.

이 솔루션에서는 RESTful API를 구현하여 이전 단계에서 설명한 실시간 사기성 예측을 구현합니다. 실시간 예측은 다음 의사 코드를 참조하십시오. 전체 구현은 완전한 소스 코드 파일.

실시간 예측을 위해 처음 세 단계는 더 짧은 지연 시간이 필요합니다. 따라서 그래프 데이터베이스는 이러한 작업, 특히 그래프 데이터베이스 쿼리로 효율적으로 달성할 수 있는 하위 그래프 추출에 최적의 선택입니다. 의사 코드를 지원하는 밑줄 기능은 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을 사용한 실시간 사기 탐지에 대한 한 가지 주의 사항은 GNN 추론 모드입니다. 실시간 추론을 수행하려면 GNN 모델 추론을 변환 모드에서 유도 모드로 변환해야 합니다. 변환적 추론 모드의 GNN 모델은 새로 나타나는 노드와 가장자리에 대해 예측을 할 수 없는 반면, 귀납적 모드의 GNN 모델은 새로운 노드와 가장자리를 처리할 수 있습니다. 변환 모드와 유도 모드의 차이점에 대한 데모가 다음 그림에 나와 있습니다.

Amazon SageMaker, Amazon Neptune 및 Deep Graph Library PlatoBlockchain Data Intelligence를 사용하여 GNN 기반 실시간 사기 탐지 솔루션을 구축하십시오. 수직 검색. 일체 포함.

변환 모드에서 예측된 노드 및 에지는 훈련 중에 레이블이 지정된 노드 및 에지와 공존합니다. 모델은 추론 전에 모델을 식별하고 교육에서 추론할 수 있습니다. 인덕티브 모드의 모델은 훈련 그래프에서 훈련되지만 관련 이웃과 함께 보이지 않는 노드(오른쪽의 빨간색 점선 원 안에 있는 노드)를 예측해야 합니다. 이 노드는 오른쪽의 회색 삼각형 노드와 같은 새 노드일 수 있습니다.

우리의 RGCN 모델은 변환 모드에서 훈련되고 테스트되었습니다. 훈련 중인 모든 노드에 액세스할 수 있으며 IP 주소 및 카드 유형과 같은 기능이 없는 각 노드에 대한 임베딩도 훈련했습니다. 테스트 단계에서 RGCN 모델은 이러한 임베딩을 노드 기능으로 사용하여 테스트 세트의 노드를 예측합니다. 그러나 실시간 추론을 수행할 때 새로 추가된 기능이 없는 노드 중 일부는 훈련 그래프에 없기 때문에 이러한 임베딩이 없습니다. 이 문제를 해결하는 한 가지 방법은 동일한 노드 유형에 있는 모든 임베딩의 평균을 새 노드에 할당하는 것입니다. 이 솔루션에서는 이 방법을 채택합니다.

또한 이 솔루션은 비즈니스 운영자의 관점에서 실시간 사기 예측을 보여주는 웹 포털(다음 스크린샷 참조)을 제공합니다. 시뮬레이션된 온라인 거래를 생성하고 탐지된 사기 거래 정보를 실시간으로 시각화할 수 있습니다.

Amazon SageMaker, Amazon Neptune 및 Deep Graph Library PlatoBlockchain Data Intelligence를 사용하여 GNN 기반 실시간 사기 탐지 솔루션을 구축하십시오. 수직 검색. 일체 포함.

정리

솔루션 탐색을 마치면 다음을 수행할 수 있습니다. 자원을 청소하다 비용이 발생하지 않도록 합니다.

결론

이번 포스트에서는 SageMaker, Neptune, DGL을 이용하여 GNN 기반의 실시간 사기 탐지 솔루션을 구축하는 방법을 보여드렸습니다. 이 솔루션에는 세 가지 주요 이점이 있습니다.

  • 예측 정확도 및 AUC 메트릭 측면에서 우수한 성능을 제공합니다.
  • 스트리밍 MLOps 파이프라인 및 SageMaker 엔드포인트를 통해 실시간 추론을 수행할 수 있습니다.
  • 제공된 CloudFormation 템플릿으로 전체 배포 프로세스를 자동화하므로 관심 있는 개발자가 계정의 사용자 지정 데이터로 이 솔루션을 쉽게 테스트할 수 있습니다.

솔루션에 대한 자세한 내용은 GitHub 레포.

이 솔루션을 배포한 후에는 데이터 처리 코드를 사용자 고유의 데이터 형식에 맞게 사용자 지정하고 GNN 모델을 변경하지 않은 상태에서 실시간 추론 메커니즘을 수정하는 것이 좋습니다. 대기 시간을 추가로 최적화하지 않고 실시간 추론을 XNUMX단계로 분할했습니다. 이 XNUMX단계는 데모 데이터 세트에 대한 예측을 가져오는 데 몇 초가 걸립니다. Neptune 그래프 데이터 스키마 설계와 하위 그래프 및 기능 추출 쿼리를 최적화하면 추론 대기 시간을 크게 줄일 수 있습니다.


저자 소개

Amazon SageMaker, Amazon Neptune 및 Deep Graph Library PlatoBlockchain Data Intelligence를 사용하여 GNN 기반 실시간 사기 탐지 솔루션을 구축하십시오. 수직 검색. 일체 포함.장 지안 사기 탐지, 장식 이미지 생성 등과 같은 다양한 문제를 고객이 해결하도록 돕기 위해 기계 학습 기술을 사용해 온 응용 과학자입니다. 그는 그래프 기반 기계 학습, 특히 그래프 신경망, 중국, 미국 및 싱가포르 고객을 위한 솔루션을 성공적으로 개발했습니다. AWS의 그래프 기능에 대한 계몽사로서 Zhang은 GNN, DGL(Deep Graph Library), Amazon Neptune 및 기타 AWS 서비스에 대한 많은 공개 프레젠테이션을 제공했습니다.

Amazon SageMaker, Amazon Neptune 및 Deep Graph Library PlatoBlockchain Data Intelligence를 사용하여 GNN 기반 실시간 사기 탐지 솔루션을 구축하십시오. 수직 검색. 일체 포함.주멍신 재사용 가능한 AWS 솔루션 설계 및 개발에 중점을 둔 AWS의 Solutions Architects 관리자입니다. 그는 수년 동안 소프트웨어 개발에 종사했으며 다양한 규모의 여러 스타트업 팀을 책임지고 있습니다. 그는 또한 오픈 소스 소프트웨어의 옹호자이며 Eclipse Committer였습니다.

Amazon SageMaker, Amazon Neptune 및 Deep Graph Library PlatoBlockchain Data Intelligence를 사용하여 GNN 기반 실시간 사기 탐지 솔루션을 구축하십시오. 수직 검색. 일체 포함.왕하오주 Amazon ML Solutions Lab의 연구원이며 Reinforcement Learning Vertical을 공동으로 이끌고 있습니다. 그는 그래프 학습, 자연어 처리, 강화 학습 및 AutoML에 대한 최신 연구를 통해 고객이 고급 기계 학습 솔루션을 구축하도록 돕습니다. Haozhu는 University of Michigan에서 전기 및 컴퓨터 공학 박사 학위를 받았습니다.

타임 스탬프 :

더보기 AWS 기계 학습