모델을 고치는 일은 서로 다른 질문 세 개로 갈라진다. 시험은 지문에 깔린 키워드로 어느 층인지 흘려준다.
층위 도구 답하는 질문 지문 키워드 학습 과정 SageMaker Debugger 학습이 정상적으로 수렴하고 있는가 기울기, 손실, 텐서, 과적합, 잡 중단 공정성·신뢰 SageMaker Clarify 집단 간 결과가 공정한가 / 왜 그런 예측인가 성별·인종, 규제, Disparate Impact, SHAP 오류 패턴 오류 분석 (사람)어디서 어떻게 틀리는가 특정 구간에서만 성능 급락
세 층은 순서가 있다. 학습이 애초에 수렴하지 않았다면(1층) 편향 지표를 재는 것(2층)은 의미가 없고, 학습이 정상인데 특정 구간만 나쁘면(3층) 하이퍼파라미터가 아니라 데이터가 원인이다.
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의 영역이다. 셋을 섞은 보기가 있다.
Clarify는 두 가지를 한다: 편향 탐지 와 설명가능성(SHAP) . 공정성 규제나 모델 신뢰가 중요한 도메인에서 필수다.
모델을 만들기 전, 데이터 자체 의 편향을 측정한다. 민감 속성(성별, 인종, 연령 등)을 기준으로 클래스/레이블 분포가 치우쳤는지 본다.
지표 이름 무엇을 재나 CI Class Imbalance 특정 집단의 표본이 과대/과소한 정도 DPL Difference in Positive Proportions in Labels 집단 간 긍정 레이블 비율 차이 KL / JS Divergence Kullback-Leibler / Jensen-Shannon 집단 간 레이블 분포의 거리
학습된 모델의 예측 이 집단 간에 불공정한지 측정한다.
지표 이름 무엇을 재나 DPPL Difference in Positive Proportions in Predicted Labels 집단 간 긍정 예측 비율 차이 DI Disparate Impact 집단 간 긍정 예측률의 비율 RD Recall Difference 집단 간 재현율 차이 AD Accuracy 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) 로 확인한다.
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 Monitor Debugger는 학습 중 전용
내일은 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) : 비슷한 원인으로 틀린 오류들을 묶은 그룹. 큰 버킷부터 고치는 것이 오류 분석의 요령이다.
📝 연습 문제 선택지를 클릭하면 정답·해설이 펼쳐집니다.
딥러닝 학습 잡에서 기울기가 점점 0에 수렴해 학습이 정체되는 문제를 실시간으로 자동 탐지하고, 망가진 잡을 일찍 중단해 비용을 아끼고 싶다. 적절한 서비스는?
A SageMaker Clarify B SageMaker Model Monitor C SageMaker Ground Truth D SageMaker Debugger 대출 승인 모델이 성별 집단 간에 긍정 예측률이 크게 다른지 규제 대응을 위해 정량적으로 측정하려 한다. 사용할 도구와 지표 유형은?
A Clarify의 학습 후 편향 지표(예: Disparate Impact) B Debugger의 vanishing_gradient 규칙 C RMSE D Ground Truth 라벨 합의율 "이 특정 대출 거절 예측에서 어떤 피처가 결정에 가장 크게 기여했는가"를 고객에게 설명해야 한다. 가장 적절한 기법은?
A Debugger의 overfit 규칙 B Clarify의 SHAP 값(국소 설명) C 혼동행렬 D ROC 곡선 학습 전 편향(pre-training bias) 분석의 목적으로 옳은 것은?
A 학습된 모델의 예측이 집단 간 공정한지 본다 B 기울기 폭발을 탐지한다 C 모델을 만들기 전 데이터 자체의 집단 간 레이블 분포 치우침을 본다 D 추론 지연시간을 측정한다 사기 탐지 모델이 전체 재현율은 양호하지만 "야간 거래"에서만 재현율이 급락한다. 가장 효과적인 다음 단계는?
A 오류 분석으로 야간 오류 버킷을 식별하고 SHAP·데이터 부족 여부를 확인해 그 버킷부터 개선한다 B 즉시 모델을 폐기하고 처음부터 다시 학습한다 C 전체 학습률만 무작위로 바꿔 본다 D 정확도 지표만 보고 배포를 강행한다