CertNote/ 출퇴근 학습 노트
로드맵
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
SAA-C03 · AssociateSolutions Architect - Associate
SOA-C02 · AssociateCloudOps Engineer - Associate
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
SCS-C03 · SpecialtySecurity - Specialty
MLA-C01 · AssociateMachine Learning Engineer - Associate
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
MLS-C01 · SpecialtyMachine Learning - Specialty
  • Week 1
    • 1.ML 수명주기(ML Lifecycle): 비즈니스 문제 정의부터 A/B 테스트까지
    • 2.ML용 데이터 저장소: S3·EFS·FSx for Lustre·데이터 포맷
    • 3.데이터 수집: Kinesis·Glue·배치 vs 스트리밍
    • 4.데이터 레이블링: SageMaker Ground Truth·액티브 러닝(Active Learning)·레이블 품질
    • 5.1주차 종합 복습: ML 개요와 데이터 엔지니어링 1
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
    • 1.분류 평가지표: 정확도·정밀도·재현율·F1과 혼동행렬
    • 2.ROC/AUC와 임계값 조정: 곡선으로 읽는 모델 성능
    • 3.회귀 평가지표: RMSE·MAE·MAPE·R²와 잔차 분석
    • 4.모델 디버깅과 편향: SageMaker Debugger와 Clarify
    • 5.Week 9 종합 복습: 평가와 디버깅
  • Week 10
  • Week 11
  • Week 12
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← MLS-C01/Week 9/Day 4

기준: MLS-C01 시험 가이드·오류 제보

MLS-C01· AssociateWeek 9 · Day 4읽기 약 13분
핵심 정리
  • 지표가 좋아도 모델은 학습 중 망가지거나(기울기 소실·과적합), 특정 집단에 불공정하거나, 설명 불가능한 블랙박스일 수 있다.
  • Debugger = 학습 과정의 건강. 텐서(가중치·기울기·손실·활성값)를 캡처해 규칙으로 이상을 탐지하고 망가진 잡을 자동 중단해 비용을 아낀다.
  • Clarify = 편향 + 설명가능성. 학습 전(데이터)·학습 후(예측) 편향을 지표로 측정하고 SHAP으로 예측을 설명한다.
  • 학습 전 데이터가 공정해 보여도 모델이 편향을 증폭할 수 있으므로 pre/post 두 단계를 모두 확인한다.
  • 마지막 층은 사람이 하는 오류 분석이다. 틀린 케이스를 그룹핑해 가장 큰 오류 버킷부터 고친다.

Day 4 - 모델 디버깅과 편향: SageMaker Debugger와 Clarify

모델 디버깅의 세 층위

모델을 고치는 일은 서로 다른 질문 세 개로 갈라진다. 시험은 지문에 깔린 키워드로 어느 층인지 흘려준다.

층위도구답하는 질문지문 키워드
학습 과정SageMaker Debugger학습이 정상적으로 수렴하고 있는가기울기, 손실, 텐서, 과적합, 잡 중단
공정성·신뢰SageMaker Clarify집단 간 결과가 공정한가 / 왜 그런 예측인가성별·인종, 규제, Disparate Impact, SHAP
오류 패턴오류 분석(사람)어디서 어떻게 틀리는가특정 구간에서만 성능 급락

세 층은 순서가 있다. 학습이 애초에 수렴하지 않았다면(1층) 편향 지표를 재는 것(2층)은 의미가 없고, 학습이 정상인데 특정 구간만 나쁘면(3층) 하이퍼파라미터가 아니라 데이터가 원인이다.

SageMaker Debugger: 학습 과정을 들여다보다

Debugger는 학습 중 텐서(가중치, 기울기, 손실, 활성값 등)를 주기적으로 캡처해 S3에 저장하고, 규칙(Rule)으로 이상을 자동 탐지한다. 학습이 잘못된 방향으로 갈 때 조기에 알아챈다.

from sagemaker.debugger import Rule, rule_configs, DebuggerHookConfig
 
rules = [
    Rule.sagemaker(rule_configs.vanishing_gradient()),   # 기울기 소실
    Rule.sagemaker(rule_configs.overfit()),              # 과적합
    Rule.sagemaker(rule_configs.loss_not_decreasing()),  # 손실 정체
    Rule.sagemaker(rule_configs.exploding_tensor()),     # 발산
]
 
estimator = Estimator(
    ...,
    rules=rules,
    debugger_hook_config=DebuggerHookConfig(s3_output_path="s3://bucket/debug"),
)

증상 → 규칙 → 조치

학습 중 증상발화하는 규칙탐지하는 문제전형적 조치
손실이 거의 안 움직이고 깊은 층이 학습 안 됨vanishing_gradient기울기가 0에 수렴 → 학습 정체활성함수·초기화 변경, 잔차 연결, 정규화 층
손실이 NaN/Inf로 튐exploding_tensor값 발산(NaN/Inf)학습률 인하, 기울기 클리핑, 입력 스케일링
학습 손실↓ 검증 손실↑overfit검증-학습 손실의 괴리조기 종료, 정규화, 데이터 증강
여러 스텝 지나도 손실이 그대로loss_not_decreasing손실이 줄지 않음학습률·옵티마이저·피처 재검토
소수 클래스가 사실상 무시됨class_imbalance클래스 불균형리샘플링, 클래스 가중치, 지표 교체
초기부터 학습이 이상함poor_weight_initialization초기화 불량초기화 방식 변경(He/Xavier 등)

규칙이 발화하면 CloudWatch Events/EventBridge로 알림을 보내거나, 비용을 아끼기 위해 망가진 학습 잡을 자동 중단(early stopping)할 수 있다.

Debugger의 가치는 "실패를 일찍 잡아 비용을 줄이는 것"이다. 딥러닝 학습은 GPU 시간이 비싸므로, 기울기가 소실되거나 손실이 발산하는 잡을 끝까지 돌린 뒤에야 발견하면 큰 낭비다. Debugger 규칙은 학습 중간에 이를 감지해 자동 중단/알림을 트리거하므로, "왜 안 되는지"의 디버깅과 "돈 낭비 방지"를 동시에 해결한다.

⚠️ 함정: Debugger는 학습 중의 상태를 본다. 배포된 모델의 입력 분포가 변하는 운영 드리프트는 Model Monitor의 영역이고, 집단 공정성은 Clarify의 영역이다. 셋을 섞은 보기가 있다.

SageMaker Clarify: 편향과 설명가능성

Clarify는 두 가지를 한다: 편향 탐지와 설명가능성(SHAP). 공정성 규제나 모델 신뢰가 중요한 도메인에서 필수다.

학습 전 편향(Pre-training Bias)

모델을 만들기 전, 데이터 자체의 편향을 측정한다. 민감 속성(성별, 인종, 연령 등)을 기준으로 클래스/레이블 분포가 치우쳤는지 본다.

지표이름무엇을 재나
CIClass Imbalance특정 집단의 표본이 과대/과소한 정도
DPLDifference in Positive Proportions in Labels집단 간 긍정 레이블 비율 차이
KL / JS DivergenceKullback-Leibler / Jensen-Shannon집단 간 레이블 분포의 거리

학습 후 편향(Post-training Bias)

학습된 모델의 예측이 집단 간에 불공정한지 측정한다.

지표이름무엇을 재나
DPPLDifference in Positive Proportions in Predicted Labels집단 간 긍정 예측 비율 차이
DIDisparate Impact집단 간 긍정 예측률의 비율
RDRecall Difference집단 간 재현율 차이
ADAccuracy Difference집단 간 정확도 차이

학습 전 데이터는 공정해 보여도 모델이 편향을 증폭할 수 있으므로 두 단계 모두 확인한다.

상황별로 어떤 편향 지표를 보나

상황볼 지표이유
특정 집단의 표본이 애초에 너무 적다CI (학습 전)모델을 만들기도 전에 데이터가 기울어져 있다
데이터의 합격/승인 레이블 자체가 집단마다 다르다DPL (학습 전)과거 의사결정의 편향이 레이블에 박혀 있다
규제 대응으로 "집단 간 승인률 비율"을 보고해야 한다DI (학습 후)비율 형태라 기준선 대비 보고에 쓰기 쉽다
한 집단에서만 놓치는 케이스(FN)가 많다RD (학습 후)재현율 차이가 곧 "누구를 더 많이 놓치는가"
집단별 성능 차이를 한 숫자로 요약하고 싶다AD (학습 후)단, 아래 함정을 반드시 함께 본다

⚠️ 함정: 정확도 차이(AD)가 0에 가깝다고 공정한 것이 아니다. 소수 집단의 긍정 사례가 극히 적으면 그 집단을 전부 부정으로 찍어도 정확도는 높게 나온다. 즉 AD는 멀쩡한데 RD(재현율 차이)는 참담할 수 있다. 불균형 데이터에서 정확도를 믿지 말라는 원칙이 집단별 지표에도 그대로 적용된다 — DI·DPPL·RD를 함께 봐야 한다.

편향 완화는 어느 단계에서 하나

Clarify는 편향을 측정하는 도구다. 실제 완화는 파이프라인의 어느 지점에 손을 대느냐로 갈린다.

시점손대는 대상대표 수단한계
전처리(pre-processing)학습 데이터리샘플링, 재가중, 대리변수 제거원본 레이블의 편향은 남을 수 있음
학습 중(in-processing)목적함수·학습 절차공정성 제약/패널티를 손실에 추가알고리즘 선택이 제한됨
후처리(post-processing)예측 결과·임계값집단별 임계값 조정모델 내부의 편향 원인은 그대로

측정 지점은 명확하다. 전처리 효과는 학습 전 편향 지표(CI·DPL)로, 학습 중·후처리 효과는 학습 후 편향 지표(DPPL·DI·RD)로 확인한다.

SHAP 기반 설명가능성

Clarify는 SHAP(SHapley Additive exPlanations) 값을 계산해 "각 피처가 이 예측을 얼마나, 어느 방향으로 밀었는가"를 정량화한다. 게임이론의 Shapley 값을 기반으로 피처 기여도를 공정하게 분배한다.

from sagemaker.clarify import (
    SageMakerClarifyProcessor, BiasConfig, DataConfig, ModelConfig, SHAPConfig
)
 
bias_config = BiasConfig(
    label_values_or_threshold=[1],
    facet_name="gender",          # 민감 속성
    facet_values_or_threshold=[0],
)
shap_config = SHAPConfig(baseline=baseline_rows, num_samples=100)
 
clarify_processor.run_bias(data_config, bias_config, model_config)
clarify_processor.run_explainability(data_config, model_config, shap_config)
범위무엇을 말해주나전형적 용도
전역(global) 중요도전체 데이터에서 피처가 평균적으로 얼마나 중요한가모델 검토, 피처 정리, 대리변수 색출
국소(local) 설명이 한 건의 예측이 왜 그렇게 나왔는가고객·감사에게 개별 결정 설명

SageMaker Model Monitor와 결합하면 운영 중 피처 기여도 변화(설명가능성 드리프트)도 추적할 수 있다.

편향과 설명가능성은 다른 문제다. 편향 지표(DI, DPPL)는 "집단 간 결과가 공정한가"라는 윤리적/법적 질문에 답하고, SHAP은 "이 예측이 왜 나왔는가"라는 신뢰/디버깅 질문에 답한다. 그래서 SHAP은 편향의 원인을 진단하는 데도 쓰인다 — 어떤 피처가 민감 속성의 대리변수(proxy)로 작동해 편향을 만드는지 드러내기 때문이다.

두 서비스의 역할 분담

시험에서 가장 헷갈리는 지점이다. 키워드로 갈라낸다.

키워드/문제서비스언제 쓰면 안 되나
기울기 소실/폭발, 과적합 실시간 탐지Debugger배포 후 운영 드리프트 감시(→ Model Monitor)
학습 잡 자동 중단으로 비용 절감Debugger추론 비용 절감(→ 추론 옵션 선택)
텐서/가중치/활성값 캡처Debugger집단별 결과 공정성 측정
성별/인종 등 집단 간 공정성 측정Clarify (편향)학습 수렴 문제 진단
규제 대응, 데이터·모델 편향 보고서Clarify (편향)개별 예측의 이유 설명(→ SHAP)
피처 기여도(SHAP), 예측 설명Clarify (설명가능성)집단 공정성 수치 자체를 요구할 때

오류 분석: 지표 너머로

지표와 도구를 갖췄다면 마지막은 사람이 하는 오류 분석이다. 모델이 틀린 케이스를 모아 패턴을 찾는다.

오류 분석 흐름:
1) 오분류/큰 오차 샘플을 수집
2) 공통 특성으로 그룹핑 (특정 클래스? 특정 피처 구간? 특정 집단?)
3) 원인 가설: 데이터 부족 / 라벨 노이즈 / 피처 누락 / 편향
4) SHAP으로 그 예측에 기여한 피처 확인
5) 가장 큰 오류 버킷부터 데이터·피처·모델 개선
  • 사례: "야간 거래에서만 사기 탐지 재현율이 급락"한다면 → 야간 샘플 부족이나 시간 관련 피처 누락을 의심하고 SHAP으로 검증한다.
  • 오류 분석은 무작정 하이퍼파라미터를 돌리기 전에 "어디를 고칠지"를 알려준다.
오류 버킷의 모습유력한 원인확인 방법
특정 시간대·지역에서만 성능 급락해당 구간 데이터 부족, 피처 누락구간별 샘플 수와 지표를 쪼개서 비교
특정 클래스만 재현율 저조클래스 불균형, 레이블 노이즈class_imbalance 규칙, 레이블 재검수
민감 속성 집단별로 결과가 갈림편향, 대리변수Clarify 편향 지표 + SHAP 전역 중요도
전 구간에서 고르게 나쁨학습 자체가 수렴 실패Debugger 규칙(손실·기울기)

좋은 오류 분석은 가장 큰 오류 버킷에 자원을 집중시키는 우선순위화다. 전체 정확도를 1% 올리는 막연한 튜닝보다, 오류의 40%를 차지하는 단일 패턴(예: 특정 집단의 데이터 부족)을 고치는 편이 효과가 크다. SHAP과 편향 지표는 이 버킷을 정량적으로 식별하는 도구이고, Debugger는 그 원인이 학습 과정 자체에 있는지 가려낸다.

진단 파이프라인

[학습 데이터]
     │
 ① Clarify 학습 전 편향 (CI · DPL · KL/JS)
     │     └─ 치우쳤다 → 리샘플링·재가중 후 재측정
     │
 ② 학습 (Debugger 훅으로 텐서 캡처)
     │     ├─ vanishing_gradient / exploding_tensor → 학습률·초기화 수정
     │     └─ overfit / loss_not_decreasing → 자동 중단 + EventBridge 알림
     │
 ③ Clarify 학습 후 편향 (DPPL · DI · RD · AD)
     │     └─ 불공정 → 임계값 조정 등 후처리, 다시 ③
     │
 ④ Clarify 설명가능성 (SHAP 전역/국소)
     │     └─ 민감 속성의 대리변수 색출
     │
 ⑤ 오류 분석 → 가장 큰 오류 버킷부터 ①로 되돌아감
     │
 ⑥ 배포 후: Model Monitor로 드리프트·설명가능성 드리프트 추적

지문 단서 → 정답 매핑

지문 단서고를 답이유
"기울기가 0에 수렴해 학습이 정체된다"Debugger vanishing_gradient학습 과정의 텐서 이상 탐지
"망가진 학습 잡을 일찍 끊어 GPU 비용을 아끼고 싶다"Debugger 규칙 + 자동 중단규칙 발화 시 잡 중단·알림 트리거
"성별 집단 간 긍정 예측률 차이를 규제 보고용으로"Clarify 학습 후 편향(DPPL·DI)모델 예측의 집단 공정성
"모델을 만들기 전 데이터의 레이블 치우침"Clarify 학습 전 편향(CI·DPL)데이터 자체를 보는 단계
"이 한 건의 거절 사유를 고객에게 설명"Clarify SHAP 국소 설명개별 예측의 피처 기여도
"어떤 피처가 전반적으로 중요한가"Clarify SHAP 전역 중요도전체 데이터 평균 기여도
"집단별 정확도는 비슷한데 공정한가"함정 — RD·DI를 함께 확인소수 집단의 FN이 정확도에 가려진다
"야간 거래에서만 재현율 급락"오류 분석으로 버킷 식별 후 개선전면 재학습·무작위 튜닝은 비효율
"배포된 모델의 입력 분포가 변했다"Model MonitorDebugger는 학습 중 전용

내일은 Week 9 전체 — 분류·회귀 지표, 곡선과 임계값, 디버깅과 편향 — 를 하나의 평가·디버깅 흐름으로 종합 복습한다.

📖 용어

  • 기울기 소실(vanishing gradient) : 역전파로 전달되는 기울기가 점점 0에 가까워져 앞쪽 층이 사실상 학습되지 않는 현상.
  • 발산(exploding tensor) : 값이 폭주해 NaN/Inf가 되어 학습이 망가지는 상태.
  • 민감 속성(facet) : 성별·인종·연령처럼 공정성을 따질 때 기준이 되는 컬럼. Clarify에서 facet_name으로 지정한다.
  • CI (Class Imbalance) : 집단별 표본 수가 얼마나 치우쳤는지 재는 학습 전 편향 지표.
  • DPL / DPPL : 집단 간 긍정 레이블 비율 차이(학습 전) / 긍정 예측 비율 차이(학습 후).
  • Disparate Impact (DI) : 집단 간 긍정 예측률의 비율. 규제 대응 보고에 자주 쓰인다.
  • SHAP : 게임이론의 Shapley 값으로 "각 피처가 이 예측을 얼마나 밀었는가"를 나눠 계산하는 설명 기법.
  • 전역/국소 설명 : 전체 데이터 평균 기여도(전역) / 특정 한 건이 왜 그렇게 나왔는지(국소).
  • 대리변수(proxy) : 민감 속성을 직접 쓰지 않아도 그것을 사실상 대신하는 피처(예: 우편번호가 인종을 대신하는 경우).
  • 오류 버킷(error bucket) : 비슷한 원인으로 틀린 오류들을 묶은 그룹. 큰 버킷부터 고치는 것이 오류 분석의 요령이다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

딥러닝 학습 잡에서 기울기가 점점 0에 수렴해 학습이 정체되는 문제를 실시간으로 자동 탐지하고, 망가진 잡을 일찍 중단해 비용을 아끼고 싶다. 적절한 서비스는?

문제 2

대출 승인 모델이 성별 집단 간에 긍정 예측률이 크게 다른지 규제 대응을 위해 정량적으로 측정하려 한다. 사용할 도구와 지표 유형은?

문제 3

"이 특정 대출 거절 예측에서 어떤 피처가 결정에 가장 크게 기여했는가"를 고객에게 설명해야 한다. 가장 적절한 기법은?

문제 4

학습 전 편향(pre-training bias) 분석의 목적으로 옳은 것은?

문제 5

사기 탐지 모델이 전체 재현율은 양호하지만 "야간 거래"에서만 재현율이 급락한다. 가장 효과적인 다음 단계는?

이전회귀 평가지표: RMSE·MAE·MAPE·R²와 잔차 분석Week 9 · Day 3다음 Week 9 종합 복습: 평가와 디버깅Week 9 · Day 5

참고 공식 자료

  • MLS-C01 공식 시험 안내(새 탭에서 열림)
  • Amazon SageMaker AI 공식 문서(새 탭에서 열림)

이 페이지

  • 모델 디버깅의 세 층위
  • SageMaker Debugger: 학습 과정을 들여다보다
  • 증상 → 규칙 → 조치
  • SageMaker Clarify: 편향과 설명가능성
  • 학습 전 편향(Pre-training Bias)
  • 학습 후 편향(Post-training Bias)
  • 상황별로 어떤 편향 지표를 보나
  • 편향 완화는 어느 단계에서 하나
  • SHAP 기반 설명가능성
  • 두 서비스의 역할 분담
  • 오류 분석: 지표 너머로
  • 진단 파이프라인
  • 지문 단서 → 정답 매핑
  • 용어
  • 연습 문제