Amazon Web Services 한국 블로그

Amazon SageMaker Clarify – 데이터 편향성 감지를 통한 기계 학습 모델의 투명성 개선

오늘 Amazon SageMaker Clarify를 발표하게 되어 매우 기쁩니다. Amazon SageMaker의 새로운 기능인 Clarify는 이해관계자와 고객에게 모델의 동작을 설명함으로써 기계 학습(ML) 모델의 바이어스를 감지하고 투명성을 개선하는 데 도움이 됩니다.

데이터 세트에 존재하는 통계 패턴을 학습하는 훈련 알고리즘에 의해 ML 모델이 구축되기 때문에 몇 가지 질문이 즉시 떠오릅니다. 첫째, ML 모델이 특정 예측을 제시하는 이유를 설명할 수 있다면 좋지 않을까? 둘째, 모델링하려는 실제 문제가 데이터 세트로 충실히 설명되지 않는다면 어떻게 될까? 이러한 문제를 감지할 수는 있을까? 이러한 문제로 인해 감지할 수 없는 방식으로 일종의 바이어스가 발생하지는 않을지. 이러한 질문들은 추측에 근거한 것이 절대 아닙니다. 매우 현실적이며 그 영향의 범위는 매우 넓을 수 있습니다.

바이어스 문제부터 시작합시다. 비정상적인 신용 카드 거래를 감지하는 모델을 연구하고 있다고 가정합시다. 다행히 대다수의 거래는 합법적이며 데이터 세트의 99.9%를 차지합니다. 즉, 십만 개 중에서 100개인 0.1%만 비정상적인 거래입니다. 바이너리 분류 모델(합법적 거래 대 비정상 거래)을 훈련하면 대다수 그룹에 의해 모델에 강하게 영향을 받거나 편향될 가능성이 큽니다. 사실 간단한 모델은 거래가 항상 합법적이라고 간단한 결정을 내릴 수 있습니다. 이 모델은 쓸모가 없지만 99.9%의 시간에 대해서는 여전히 옳습니다! 이 단순한 예는 데이터의 통계적 속성과, 모델 정확도 측정에 사용되는 지표에 얼마나 주의를 기울여야 하는지 보여줍니다.

이 과소 평가된 문제에는 많은 변형이 있습니다. 클래스, 특성 및 고유 특성 값의 수가 증가하면 특정 그룹에 대한 극소수의 훈련 인스턴스만 데이터 세트에 포함될 수 있습니다. 실제로 이러한 그룹 중 일부는 성별, 연령 범위 또는 국적과 같은 사회적으로 민감한 다양한 특성에 해당할 수 있습니다. 이러한 그룹이 과소 평가되면 예측 결과에 균형이 맞지 않는 영향이 발생할 수 있습니다.

안타깝지만 최선을 다하더라도 데이터 세트에는 바이어스 문제가 존재할 수 있고 이러한 문제는 비즈니스, 윤리 및 규제 관련 결과로 인해 모델 내에 포함될 수 있습니다. 따라서 모델 관리자는 프로덕션 시스템에서 바이어스의 잠재적 원인을 인식하는 것이 중요합니다.

이제 설명 가능성 문제에 대해 알아봅시다. 선형 회귀 또는 트리 기반 알고리즘과 같이 간단하고 많이 알려진 알고리즘의 경우 모델을 열어 훈련 중에 배운 파라미터를 검사하고 주로 사용하는 기능을 파악하는 것이 꽤 쉽습니다. 그런 다음 기본적으로 “예. 전문가라면 이렇게 했을 것입니다”라고 말하면서 이 프로세스가 비즈니스 방식과 일치하는지 여부를 결정할 수 있습니다.

그러나 딥 러닝과 같이 모델이 점점 더 복잡해지면 이런 종류의 분석이 불가능합니다. 우리는 종종 스탠리 큐브릭의 “2001 스페이스 오디세이”에 나오는 선사 시대 부족들처럼 보이지 않는 모노리스를 응시하면서 그 의미를 궁금해 합니다. 많은 회사와 조직에서는 ML 모델을 프로덕션에서 사용하기 전에 설명해야 할 수 있습니다. 또한 일부 규정의 경우 결과적 의사 결정의 일부로 ML 모델을 사용할 때 모델의 설명 가능성을 요구할 수 있습니다. 또한 설명 가능성은 작업을 마무리할 때 바이어스를 감지하는 데 도움이 될 수 있습니다.

그렇기 때문에 AWS 고객들은 데이터 세트와 모델의 바이어스를 감지하고 모델의 예측 방식을 이해할 수 있는 기능을 요청했습니다. 그 결과로 나온 기능이 SageMaker Clarify입니다.

Amazon SageMaker Clarify 소개
SageMaker Clarify는 AWS의 완전관리형 ML 서비스인 Amazon SageMaker의 새로운 기능 세트입니다. ML용 웹 기반 통합 개발 환경인 SageMaker Studio와 통합되며 Amazon SageMaker Data Wrangler, Amazon SageMaker ExperimentsAmazon SageMaker Model Monitor와 같은 다른 SageMaker 기능과도 통합됩니다.

데이터 사이언티스트는 SageMaker Clarify를 사용하여 다음을 수행할 수 있습니다.

  • 훈련 전 데이터 세트와 훈련 후 모델에서 바이어스를 감지합니다.
  • 다양한 통계 지표를 사용하여 바이어스를 측정합니다.
  • 특성 값이 전체 모델과 개별 예측에서 예측된 결과에 어떻게 기여하는지 설명합니다.
  • Amazon SageMaker Model Monitor와 통합하여 바이어스 드리프트 및 특성 중요도 드리프트를 시간대별로 감지합니다.

이러한 각 기능을 살펴봅시다.

데이터 세트 바이어스 감지: 중요한 첫 번째 단계입니다. 실제로 바이어스가 심한 데이터 세트는 훈련에 적합하지 않을 수 있습니다. 이 사실을 조기에 알면 시간과 돈, 불만을 확실히 줄일 수 있습니다! 데이터 세트에서 SageMaker Clarify로 계산된 바이어스 지표를 확인한 다음 데이터 처리 파이프라인에 자체 바이어스 감소 기술을 추가할 수 있습니다. 데이터 세트가 수정되고 처리된 후 바이어스를 다시 측정하고 실제로 감소했는지 확인할 수 있습니다.

모델 바이어스 감지: 모델을 훈련한 후 SageMaker Clarify 바이어스 분석을 실행할 수 있습니다. 그러면 모델이 임시 엔드포인트에 자동으로 배포되고 모델 및 데이터 세트를 사용하여 바이어스 지표가 계산됩니다. 이러한 지표를 계산하여 훈련된 모델의 예측 동작이 그룹 간에 유사한지 여부를 확인할 수 있습니다.

바이어스 측정: SageMaker Clarify에서는 다수의 바이어스 지표를 선택할 수 있습니다. 몇 가지 예는 다음과 같습니다.

  • 레이블의 양수 비율 차이(DPL): 데이터 세트의 레이블이 민감한 특성 값과 상관 관계에 있습니까? 예를 들어 특정 도시에 거주하는 사람들은 긍정적인 답을 얻을 확률이 더 높습니까?
  • 예측된 레이블의 양수 비율 차이(DPPL): 특정 그룹에 대한 양수 레이블이 높게 예측됩니까?
  • 정확도 차이(AD): 한 그룹에 대한 모델의 예측이 다른 그룹에 대한 예측보다 정확합니까?
  • 반사실적 서술 – 플립테스트(FT): 한 그룹의 각 구성원을 보고 다른 그룹의 유사한 구성원과 비교할 때 모델의 예측이 서로 다릅니까?

예측 설명 – 모델의 예측 방식을 설명하기 위해 SageMaker ClarifySHapley Additive exPlanations(SHAP)라고 하는 대중적인 기술을 지원합니다. 게임 이론에서 시작된 SHAP는 각 데이터 인스턴스에서 예측된 출력에 대한 특성 값의 기여도를 분석하고 이를 양수 또는 음수 값으로 나타냅니다. 예를 들어 신용 대출 신청서 모델을 예측하는 경우 Alice의 신청서는 87.5%의 점수로 승인되는 것을 알 수 있습니다. 이 점수에 가장 많은 기여를 한 특성은 Alice의 고용 상태(+27.2%)와 신용 점수(+32.4%)이고 소득 수준(-5%)은 약간 부정적인 영향을 미칩니다. 이러한 인사이트는 모델이 예상대로 작동하고 있다는 신뢰를 쌓고 고객 및 규제 기관에 특정 예측이 발생하는 이유를 설명하는 데 매우 중요한 역할을 합니다. 전체 데이터 세트에 대한 SHAP 값을 추가로 분석하면 특성 및 특성 값의 상대적 중요도를 파악하는 데 도움이 되며 잠재적으로 예측 문제와 바이어스를 발견할 수 있습니다.

이처럼 SageMaker Clarify는 바이어스 감지 및 설명 가능성을 위한 몇 가지 강력한 기능을 제공합니다. 이러한 기능은 사용하기도 매우 쉽습니다. 우선, 테이블 형식 데이터 세트(CSV 또는 JSON)를 정리하고 전처리하여 Amazon Simple Storage Service(S3)에 업로드합니다. 그런 다음 기본 제공 컨테이너를 사용하고 대상 속성의 이름, 바이어스 분석에 중요한 열의 이름 및 값과 계산하려는 바이어스 지표를 정의하는 간단한 구성 파일을 전달하여 데이터 세트에서 Amazon SageMaker Processing 작업을 시작합니다. 예상하듯이 이 작업은 완전관리형 인프라에서 실행됩니다. 훈련 후 분석의 경우 작업에서 임시 엔드포인트도 자동으로 생성되고 삭제됩니다. 작업이 완료되면 S3SageMaker Studio에서 결과를 사용할 수 있으며 결과를 요약한 보고서가 자동으로 생성됩니다.

이제 SageMaker Clarify를 시작하는 방법을 알아보겠습니다.

Amazon SageMaker Clarify로 데이터 세트 및 모델 탐색
German Credit Data 데이터 세트에는 레이블이 지정된 1,000개의 신용 대출 신청서가 포함되어 있습니다. 저는 이 데이터 세트를 사용하여 XGBoost로 바이너리 분류 모델을 훈련했습니다. 각 데이터 인스턴스에는 신용 대출의 목적, 신용 대출 금액, 주거 상태, 고용 기록과 같은 20가지 특성이 포함됩니다. 범주형 특성은 Axx 값으로 인코딩되었습니다. 예를 들어 신용 대출 기록 특성은 다음과 같이 인코딩됩니다. A30은 ‘신용 대출 없음’을 의미하고 A31은 ‘이 은행의 모든 신용 대출을 기한 내에 상환’을 의미합니다.

특히 이 데이터 세트에는 고객이 외국인 근로자인지 여부를 설명하는 특성이 포함되어 있습니다. 사실, 데이터 세트를 간단히 살펴보면 외국인 근로자에게 이익이 되는 불균형이 크다는 것을 알 수 있습니다. 여기에 바이어스가 숨어 있을 수 있을까요? 모델은 어떨까요? XGBoost는 이 바이어스를 늘렸을까요? 줄였을까요? 예측된 결과에 가장 큰 기여를 하는 특성은 무엇일까요? 이제 그 답을 알아봅시다.

모델을 훈련한 후 다음 단계는 데이터 세트에서 바이어스 지표를 계산할 기본 제공 컨테이너 이미지를 사용하여 SageMaker Clarify 바이어스 분석 작업을 실행하는 것입니다. 작업 입력은 데이터 세트와 다음을 정의하는 JSON 구성 파일입니다.

  • 대상 속성의 이름(Class1Good2Bad)과 긍정적인 답변의 값(1)
  • 분석할 중요한 특성(“패싯(facets)”이라고 함)과 해당하는 값 이 데이터 세트에서는 외국인 근로자가 과소 평가된 것으로 보이므로 ForeignWorker0으로 설정된 인스턴스에 중점을 두겠습니다.
  • 작업에서 이 바이어스 지표를 계산해야 합니다. 모델은 이미 있으므로 모델 이름을 전달하여 훈련 후 지표를 임시 엔드포인트에 계산합니다.

다음은 구성 파일의 관련된 코드 조각입니다.

"label": "Class1Good2Bad",
"label_values_or_threshold": [1],
"facet": [
        {
         "name_or_index" : "ForeignWorker",
         "value_or_threshold": [0]
        }
    ],
. . .
"methods": {
    "pre_training_bias": {"methods": "all"}
    "post_training_bias": {"methods": "all"}
},
"predictor": {
        "model_name": "xgboost-german-model",
        "instance_type": "ml.m5.xlarge",
        "initial_instance_count": 1
    }

그런 다음 S3의 모든 해당하는 경로를 전달하여 작업 입력(데이터 세트 및 구성 파일)과 출력(보고서)을 구성합니다.

config_input = ProcessingInput(
                    input_name="analysis_config",
                    source=analysis_config_s3_path,
                    destination="/opt/ml/processing/input/config")
data_input = ProcessingInput(
                    input_name="dataset",
                    source=train_data_s3_path,
                    destination="/opt/ml/processing/input/data")
result_output = ProcessingOutput(
                    source="/opt/ml/processing/output",
                    destination=analysis_result_s3_path,
                    output_name="analysis_result")

마지막으로 처리 작업을 실행합니다.

from sagemaker.processing import Processor, ProcessingInput, ProcessingJob, ProcessingOutput
analyzer_image_uri = f'678264136642.dkr.ecr.us-east-2.amazonaws.com/sagemaker-xai-analyzer:latest'
analyzer = Processor(base_job_name='analyzer',
                     image_uri=analyzer_image_uri,
                     role=sagemaker.get_execution_role(),
                     instance_count=1,
                     instance_type='ml.c5.xlarge')
analyzer.run(inputs=[ data_input, config_input], outputs=[result_output])

처리 작업이 완료되면 보고서를 검색할 수 있습니다. 바이어스 지표를 살펴보겠습니다.

Amazon SageMaker Clarify로 바이어스 감지
다음은 훈련 전 바이어스 지표의 일부입니다.

"ForeignWorker": [
    {
     "value_or_threshold": "0",
     "metrics": [
      {
       "name": "CI",
       "description": "계층 불균형(CI)",
       "value": 0.9225
      },
      {
       "name": "DPL",
       "description": "레이블의 양수 비율 차이(DPL)",
       "value": -0.21401904442300435
      },
. . . 

계층 불균형 지표로 시각적 인상을 확인할 수 있습니다. 이 데이터 세트에서는 내국인 근로자보다 약 92% 더 많은 외국인 근로자를 평가해야 합니다. 이 불균형이 원인이든 아니든 내국인 근로자에 대한 양수 비율의 차이도 음수 값이 높다는 것을 볼 수 있습니다. 다시 말해 양수 레이블을 가진 내국인 근로자의 비율이 더 작습니다. ML 알고리즘이 이 통계 패턴을 선택할 경우 내국인 근로자의 많은 비율이 부정적인 답변을 받게 됩니다. 이것이 실제로 합법적인지 추가 분석이 필요하지 않은지 여부를 알아보는 과정에서는 SageMaker Clarify가 경고한 이 잠재적 문제가 도움이 됩니다.

훈련된 모델을 제공해드린 것처럼 훈련 후 지표도 확인할 수 있습니다. DPPL과 DPL을 비교하면 XGBoost가 양수 비율에 대한 바이어스가 약간 감소한 것을 알 수 있습니다(-18.8% 대 -21.4%). 또한 DAR이 음수라는 것을 알 수 있습니다. 이는 모델의 정밀도가 외국인 근로자보다 내국인 근로자에서 더 높다는 것을 나타냅니다.

"ForeignWorker": [
    {
     "value_or_threshold": "0",
     "metrics": [
      {
       "name": "DPPL",
       "description": "\"예측된 레이블의 양수 비율 차이(DPPL)\")",
       "value": -0.18801124208230213
      },
      {
       "name": "DAR",
       "description": "승인율 차이(DAR)",
       "value": -0.050909090909090904
      },
      {
       "name": "DRR",
       "description": "거부율 차이(DRR)",
       "value": 0.0365296803652968
      },
. . .

SageMaker ClarifySageMaker Studio와 통합하면 같은 화면에서 바이어스 지표를 시각화할 수 있습니다. 시험 목록에서 처리 작업을 찾은 다음 [시험 세부 정보 열기(Open in trial details)]를 마우스 오른쪽 버튼을 클릭하고 [바이어스 보고서(Bias report)] 보기를 선택하면 됩니다.

SageMaker 스크린샷

마지막으로 특정 바이어스 지표의 높은 값이 문제가 있는지 여부를 결정할 때는 각 분야와 관련된 사항을 고려합니다. 윤리적, 사회적, 규제 및 비즈니스 고려 사항을 가이드로 사용해야 합니다. 마찬가지로 바이어스 제거를 위해 개입할 때는 문제 구성부터 배포의 피드백 루프에 이르는 전체 ML 수명 주기를 신중하게 분석해야 할 수 있습니다.

이제 SageMaker Clarify를 통해 모델의 예측 기준으로 사용된 특성을 파악하는 방법을 알아봅시다.

Amazon SageMaker Clarify로 예측 설명
보고서에는 데이터 세트의 모든 특성에 대한 상대적 중요도를 보여주는 글로벌 SHAP 값이 포함됩니다. SageMaker Studio에서 사용할 수 있는 특성 중요도 그래프를 보면 신용 기간, 결제 계좌 없음(A14) 및 대출 금액이라는 세 가지 중요한 특성이 표시되어 있습니다. 모든 것이 동일할 때 은행에서는 수표를 쓸 가능성 없이 단기간 소액을 빌리는 고객을 안전한 고객이라고 여길 것입니다.

SageMaker 스크린샷

S3에서 개별 데이터 인스턴스에 대한 SHAP 값이 있는 CSV 파일을 찾아서 특성과 특성 값 중요도를 전체적으로 파악할 수도 있습니다.

시작하기
앞서 살펴본 것처럼, SageMaker Clarify는 바이어스를 감지하고 모델의 작동 방식을 이해할 수 있는 강력한 도구입니다. 오늘부터 Amazon SageMaker가 제공되는 모든 리전에서 추가 비용 없이 이 기능을 사용할 수 있습니다.

샘플 노트북을 사용하여 빠르게 시작할 수 있습니다. 사용해보시고 의견을 알려주세요. 언제든지 AWS 지원 담당자나 SageMaker에 대한 AWS 포럼을 통해 피드백을 보내 주시기 바랍니다.

– Julien

도움을 주신 동료 분들인 Sanjiv Das, Michele Donini, Jason Gelman, Krishnaram Kenthapadi, Pinar Yilmaz와 Bilal Zafar 씨에게 특별한 감사를 드립니다.

데이터 세트 제공: Dua, D와 Graff, C (2019). UCI Machine Learning Repository. 캘리포니아주 어바인: 캘리포니아대학교 정보컴퓨터공학부