본문 바로가기

시험/기본개념

XAI , cam, grad cam, lime, shap

 

XAI 기술을 이해하기 위해 반드시 알아야 할 분류 기준과 대표적인 방법론들입니다.

1. 설명의 범위 (Scope)

  • 전역적 설명 (Global Explanation): 모델 전체가 어떻게 동작하는지를 설명합니다. 어떤 특성(feature)이 모델의 전반적인 예측에 중요하게 작용하는지를 보여줍니다.
  • 지역적 설명 (Local Explanation): 하나의 특정 예측에 대해 왜 그런 결과가 나왔는지를 설명합니다. "왜 이 환자가 암이라고 진단했는가?" 와 같은 질문에 답합니다.

2. 모델 의존성 (Model Specificity)

  • 모델 특화 (Model-Specific): 특정 모델 구조(예: 의사결정나무, CNN)에만 적용할 수 있는 설명 기법입니다. 모델의 내부 구조를 활용하기 때문에 더 정확할 수 있습니다.
  • 모델 불특정 (Model-Agnostic): 어떤 모델이든 상관없이 적용할 수 있는 기법입니다. 모델의 입력과 출력만 가지고 설명하므로 범용성이 매우 높습니다. LIME, SHAP이 대표적입니다.

3. 대표적인 XAI 기법 (반드시 알아야 할 해법)

기법 이름 전체 이름 핵심 개념 장점 단점
LIME Local Interpretable Model-agnostic Explanations 특정 예측 주변의 데이터를 샘플링하여, 그 **주변에서만 잘 동작하는 단순하고 해석 가능한 모델(Local Surrogate Model)**을 만들어 설명 빠르고 직관적이며, 모델 종류에 상관없이 적용 가능 설명의 일관성이 부족할 수 있고, 샘플링 방식에 따라 결과가 변동됨
SHAP SHapley Additive exPlanations **게임 이론의 섀플리 값(Shapley Value)**을 활용하여 각 특성이 예측에 기여한 정도를 공정하게 분배하여 설명 이론적 기반이 탄탄하며(공정성, 일관성 보장), 전역/지역 설명 모두 가능 계산량이 매우 많아 속도가 느림
CAM Class Activation Mapping CNN 모델에서 특정 클래스를 예측하는 데 어떤 이미지 영역이 활성화되었는지 히트맵(heatmap)으로 보여줌 시각적으로 명확하게 판단 근거를 제시 모델의 마지막 Pooling Layer 이전에 GAP(Global Average Pooling)이 있어야 하는 등 모델 구조 변경이 필요함
Grad-CAM Gradient-weighted CAM CAM의 단점을 보완. Gradient(기울기) 정보를 활용하여 모델 구조 변경 없이도 히트맵을 생성 범용성이 높고, 다양한 CNN 구조에 적용 가능 CAM보다 해상도가 낮거나 노이즈가 있을 수 있음

 

XAI 모델의 충실성 이란?

더보기

## 충실성 (Faithfulness): 설명이 모델에게 얼마나 '정직'한가 🔎

충실성은 XAI가 제공하는 설명이 원본 AI 모델의 실제 작동 방식을 얼마나 정확하게 반영하는가를 의미합니다.

  • 충실성이 높다: 설명이 복잡하더라도, 모델이 예측을 내릴 때 고려한 수많은 요인과 그 상호작용을 거의 그대로 보여줍니다. 모델의 '생각'을 왜곡 없이 전달하는 정직한 설명입니다.
  • 충실성이 낮다: 설명이 너무 단순화되어, 모델이 실제로는 복잡하게 내린 결정을 일부 중요한 요인만으로 설명합니다. 이 과정에서 중요한 정보가 생략되거나 왜곡될 수 있습니다.

아날로지: 의사가 복잡한 질병에 대해 설명할 때, 모든 의학 용어와 데이터를 총동원해서 논문 수준으로 설명하는 것과 같습니다. 매우 정확하고 충실하지만, 환자가 이해하기는 어렵습니다.


## 해석가능성 (Interpretability): 설명이 사람에게 얼마나 '친절'한가 🙋

해석가능성은 XAI가 제공하는 설명이 사람(사용자)에게 얼마나 이해하기 쉬운가를 의미합니다.

  • 해석가능성이 높다: 설명이 간결하고 직관적이어서, 해당 분야의 전문가가 아니더라도 예측의 주요 원인을 쉽게 파악할 수 있습니다. 사용자 친화적인 설명입니다.
  • 해각가능성이 낮다: 설명이 너무 복잡하거나 전문적인 형태(예: 수많은 숫자 리스트, 복잡한 수식)로 제공되어 이해하는 데 많은 노력이 필요합니다.

아날로지: 위와 같은 상황에서 의사가 "간단히 말해, 푹 쉬고 약 잘 챙겨 드시면 됩니다."라고 요점만 설명하는 것과 같습니다. 이해하기는 매우 쉽지만, 병의 복잡한 원인에 대한 정보(충실성)는 많이 생략되었습니다.


## 상충 관계 (Trade-off): 왜 둘 다 가질 수 없을까? ⚖️

현대의 AI 모델은 수백만 개의 파라미터를 가진 매우 복잡한 블랙박스입니다. 이 복잡한 모델의 작동 방식을...

  • 완벽히 정확하게(충실성↑) 설명하려면 그 설명 또한 복잡해져서 이해하기 어렵습니다(해석가능성↓).
  • 완벽히 쉽게(해석가능성↑) 설명하려면 내용을 많이 단순화해야 해서 원래 모델의 작동 방식과 달라집니다(충실성↓).

이것이 바로 두 개념의 상충 관계입니다.


퀴즈 문제 다시보기

"LIME에서 설명을 더 간단하게 만들기 위해 사용하는 피처 개수를 5개에서 3개로 줄이는 것"

이 예시는 상충 관계를 완벽하게 보여줍니다.

  • 피처 수를 3개로 줄임: 설명이 더 간결해져 사람이 이해하기 쉬워집니다. ➡️ 해석가능성 증가
  • 하지만...: 원래 모델은 5개(혹은 그 이상)의 피처를 보고 판단했는데, 2개를 무시했으므로 설명의 정확도는 떨어집니다. ➡️ 충실성 감소

결국 XAI는 이 두 가지 척도 사이에서 사용 목적에 맞는 최적의 균형점을 찾는 것이 중요합니다.

 

1. LIME vs. SHAP

구분 LIME (라임) SHAP (샵)
기반 이론 지역적 대리 모델 (Local Surrogate Model) 게임 이론 (섀플리 값)
핵심 아이디어 설명하려는 데이터 포인트 주변을 단순한 모델(선형 회귀 등)로 근사하여 설명 모든 특성 조합(Coalition)을 고려하여 각 특성의 평균적인 기여도를 공정하게 계산
장점 속도가 빠르고 직관적 이론적 보장 (Local Accuracy, Missingness, Consistency), 전역/지역 설명의 일관성
단점 샘플링에 따라 설명이 불안정 계산 복잡도가 높고 속도가 매우 느림
결론 빠르고 직관적인 설명이 필요할 때 유용 정확하고 신뢰도 높은 설명이 필요할 때 유용

2. 전역적 설명(Global) vs. 지역적 설명(Local)

  • 질문의 차이:
    • 전역적: "우리 은행의 대출 승인 모델은 주로 어떤 고객 특성을 중요하게 보나요?"
    • 지역적: "김철수 씨의 대출 신청이 왜 거절되었나요?"
  • 목적의 차이:
    • 전역적: 모델의 전반적인 행동 양식과 편향성을 이해하는 데 목적이 있습니다.
    • 지역적: 개별 예측 사례에 대한 신뢰를 얻고 디버깅하는 데 목적이 있습니다.

 

🍋 LIME (Local Interpretable Model-agnostic Explanations)

한 줄 요약

"설명하고 싶은 데이터 주변만 잘 따라하는 단순한 '대리 모델(Surrogate Model)'을 만들어, 그 단순한 모델로 복잡한 원본 모델의 예측을 설명하는 기법"

핵심 원리 (Step-by-Step)

LIME의 작동 방식을 차근차근 따라가 봅시다. '고객 A의 대출이 왜 거절되었는가?'를 설명하는 상황을 가정해 볼게요.

  1. Step 1: 설명 대상 선정
    • 설명하고 싶은 하나의 데이터 포인트(고객 A의 정보)를 선택합니다.
  2. Step 2: 주변 데이터 생성 (Perturbation)
    • 고객 A의 데이터(나이, 소득, 부채 등)를 약간씩 바꿔가며 수많은 가상의 데이터 샘플들을 생성합니다.
    • 예: (35세, 소득 5천, 부채 2천) → (36세, 소득 5천, 부채 2천), (35세, 소득 5100, 부채 2천) 등
  3. Step 3: 원본 모델로 예측
    • 생성된 가상의 샘플들을 **원본 블랙박스 모델(대출 승인 모델)**에 입력하여 각각의 예측 결과(대출 승인/거절 확률)를 얻습니다.
  4. Step 4: 거리 가중치 부여 (Locality)
    • 생성된 샘플들 중, 원본 데이터(고객 A)와 가까울수록 높은 가중치를 부여합니다. 멀리 떨어진, 현실성 없는 데이터는 낮은 가중치를 줍니다. 이것이 LIME의 핵심인 'Local' 개념입니다. 즉, "나는 고객 A 주변의 세상에만 관심 있다!"는 뜻입니다.
  5. Step 5: 대리 모델 학습 및 설명
    • 가중치가 부여된 샘플 데이터와 그 예측 결과를 가지고, **해석 가능한 단순한 모델(예: 선형 회귀, 의사결정나무)**을 학습시킵니다. 이 모델을 '지역적 대리 모델(Local Surrogate Model)'이라고 부릅니다.
    • 학습된 선형 회귀 모델의 회귀 계수(가중치)를 통해 "소득이 100만 원 증가할 때 거절 확률이 5% 감소했고, 부채가 100만 원 증가할 때 거절 확률이 15% 증가했다" 와 같이 설명을 생성합니다.

🚨 헷갈리기 쉬운 포인트 & 주관식 대비

  • (함정) LIME은 원본 모델의 전체를 설명한다? → (X) 절대 아닙니다.
    • LIME의 설명은 오직 설명 대상 데이터 포인트 주변의 매우 좁은 영역에서만 유효합니다. 고객 A에 대한 설명이 고객 B에게는 전혀 들어맞지 않을 수 있습니다. 'Local'이라는 단어를 반드시 기억해야 합니다.
  • (함정) LIME의 설명 결과는 항상 일정하다? → (X) 그렇지 않습니다.
    • LIME은 주변 데이터를 **무작위 샘플링(Random Perturbation)**하는 과정이 포함됩니다. 따라서 LIME을 여러 번 실행하면 샘플링 결과에 따라 설명이 조금씩 달라질 수 있습니다. 이를 **'설명의 불안정성(Instability)'**이라고 하며, LIME의 주요 단점 중 하나입니다.
  • 'Model-agnostic'의 진정한 의미
    • LIME은 원본 모델의 내부 구조나 코드를 전혀 보지 않습니다. 오직 입력(Input)을 넣었을 때 출력(Output)이 무엇인지만 관찰하여 대리 모델을 학습시킵니다. 그래서 어떤 종류의 블랙박스 모델(신경망, XGBoost 등)에도 구애받지 않고 적용할 수 있는 것입니다.

✨ SHAP (SHapley Additive exPlanations)

한 줄 요약

"협력 게임 이론의 '섀플리 값'을 활용하여, 각 특성(Feature)이 모델의 예측에 '공정하게' 얼마나 기여했는지를 수학적으로 계산하는 기법"

핵심 원리 (게임 이론 비유)

'팀 프로젝트 점수'를 '모델 예측값'에, '팀원'을 '특성'에 비유하면 이해하기 쉽습니다.

  1. Step 1: 게임 설정
    • 모델의 예측 과정을 하나의 '게임'으로 봅니다. 모든 특성({소득, 나이, 부채})이 게임에 참여하여 예측값(예: 대출 승인 확률 80%)이라는 최종 '보상'을 만들어 냅니다.
  2. Step 2: 모든 조합(Coalition) 고려
    • 특정 팀원(예: '소득')의 기여도를 알기 위해, 그 팀원이 참여할 수 있는 모든 부분집합 팀을 고려합니다.
    • 예: {나이}팀, {부채}팀, {나이, 부채}팀 등
  3. Step 3: 한계 기여도(Marginal Contribution) 계산
    • '소득'이 각 팀에 합류했을 때, 팀 점수가 얼마나 오르는지를 계산합니다.
    • ('소득'이 합류한 {나이, 소득}팀 점수) - ('소득'이 없던 {나이}팀 점수) = '소득'의 한계 기여도
  4. Step 4: 가중 평균 계산
    • 모든 가능한 조합에 대해 계산된 한계 기여도들의 가중 평균을 냅니다. 이 최종 평균값이 바로 '소득' 특성의 **섀플리 값(SHAP Value)**이 됩니다.
    • 이 값은 해당 특성의 예측에 대한 최종 기여도를 의미합니다. (양수: 예측 확률을 높임, 음수: 예측 확률을 낮춤)

 

 

 

shap가는 가중치 + 평균이다.

설명은 다음과 같다.

더보기

## 왜 '평균 예측치'가 필요한가? 🤔

SHAP 값()의 본질적인 의미는 '예측값 그 자체'가 아니라, **'평균 예측값'이라는 기준점에서부터 각 피처가 예측값을 얼마나 밀어 올렸는지(+), 또는 끌어내렸는지(-)**를 나타내는 **'변화량' 또는 '기여분'**이기 때문입니다.

'서울에서 부산 가기' 아날로지 🚗

  • 최종 예측값 : 최종 목적지인 부산
  • 평균 예측치 (Base Value): 모든 여정의 공통된 출발점인 서울
  • 각 피처의 SHAP 값 : 각 구간별 이동 내역
    • '경부고속도로' 피처: 남쪽으로 +300km 이동
    • '공사구간' 피처: 서쪽으로 -20km 우회
    • '남해고속도로' 피처: 다시 남동쪽으로 +150km 이동

우리가 최종적으로 부산에 도착했다는 사실()은, 단순히 이동 내역(+300, -20, +150)만 더해서는 알 수 없습니다. **어디에서 출발했는지(서울, )**를 반드시 알아야 합니다.

최종 위치(부산) = 출발점(서울) + 모든 이동 내역의 합

이것이 SHAP의 계산 방식과 정확히 일치합니다.


## 수식 다시보기 🧐

이제 수식을 다시 보면서 각 부분이 무엇을 의미하는지 살펴보겠습니다.

  • : 최종 예측값 (최종 목적지: 부산)
  • : 바로 이 부분이 '평균 예측치(base value)'입니다. 모든 설명의 공통된 기준점이자 출발점(서울) 역할을 합니다.
  • : 모든 피처들의 SHAP 값(기여분)의 총합 (모든 이동 내역의 합)

수식 자체가 **"최종 예측값은 평균 예측치에 모든 SHAP 값의 합을 더한 것과 같다"**고 명확하게 정의하고 있습니다. 이것이 바로 SHAP의 '지역적 정확성' 속성입니다.

## 핵심 정리 ✅

SHAP 값은 그 자체로 절대적인 점수가 아니라, '평균'이라는 기준점에서부터의 상대적인 '변화량'입니다.

따라서 항상 기준점인 평균 예측치()가 더해져야만 최종 예측값()이 완성되는 것입니다. 매우 중요한 포인트를 정확히 짚어주셨어요

 

 

 

 

 

 

🚨 헷갈리기 쉬운 포인트 & 주관식 대비

  • (함정) SHAP은 LIME과 원리가 비슷하다? → (X) 완전히 다릅니다.
    • LIME은 **'근사(Approximation)'**의 철학입니다. 복잡한 것을 단순한 것으로 근사해서 설명합니다.
    • SHAP은 **'분배(Allocation)'**의 철학입니다. 예측이라는 결과를 각 특성에게 공정하게 나눠줍니다. 이 이론적 배경(Axiom: Local Accuracy, Missingness, Consistency) 덕분에 SHAP은 LIME보다 훨씬 더 신뢰도가 높고 일관된 설명을 제공합니다.
  • 계산 복잡도 문제
    • 특성이 N개일 때 고려해야 할 조합의 수는 개로 기하급수적으로 늘어납니다. 따라서 모든 조합을 계산하는 것은 사실상 불가능합니다.
    • KernelSHAP, TreeSHAP 등은 이 계산을 효율적으로 근사/최적화하는 알고리즘입니다. 특히 KernelSHAP은 LIME의 아이디어(샘플링 및 가중치 부여)를 영리하게 차용하여 섀플리 값을 근사합니다. 이 점이 두 기법이 연관되어 보이지만, 목표(섀플리 값 계산)는 명확히 다릅니다.
  • 'Additive'의 의미
    • 이름의 'Additive(가산적인)'가 중요한 특징입니다. (전체 특성의 SHAP 값의 합) + (기본값) = (최종 예측값) 이라는 항등식이 성립합니다. 이 덕분에 각 특성이 예측에 얼마나 더하고 뺐는지 명확하게 설명할 수 있습니다.

 

특성들

 

  • 지역적 정확성 (Local Accuracy): 하나의 설명 내에서 설명의 합 = 예측값 이라는 수학적 일치를 보장합니다.
  • 일관성 (Consistency): 서로 다른 모델을 비교할 때, "피처가 더 중요해지면, SHAP 값도 반드시 올라간다"는 비교의 신뢰성을 보장합니다.
  • 결측성 (Missingness): 예측에 영향을 주지 않는 피처의 SHAP 값은 반드시 0이 된다는 합리성을 보장합니다.

 

 

 

 

 


 

 

SHAP(SHapley Additive exPlanations)

배경: "팀 프로젝트 기여도 공정하게 나누기"

어떤 팀이 성공적으로 프로젝트를 마쳤고, 최종 성과로 100점을 받았다고 해봅시다. 이 100점이라는 성과에 팀원 A, B, C가 각각 얼마나 기여했는지 공정하게 배분하려면 어떻게 해야 할까요?

  • A가 없었다면 몇 점이었을까?
  • B와 C만 있었다면 몇 점이었을까?
  • A와 B가 함께했을 때 C가 합류해서 얼마나 성과가 올랐을까?

이처럼 모든 가능한 팀원 조합을 고려해서 각 팀원의 평균적인 기여도를 계산하는 것이 바로 SHAP의 핵심 아이디어입니다.


1. SHAP (SHapley Additive exPlanations) 이란?

한 줄 요약: 협력 게임 이론에 기반한 '섀플리 값(Shapley Value)'을 사용하여, 하나의 특정 예측에 대해 각 피처(feature)가 얼마나 기여했는지를 공정하게 배분하여 설명하는 기법입니다.

즉, 모델이 "이 고객은 대출 승인 확률이 80%입니다"라고 예측했다면, 왜 80%가 나왔는지 그 이유를 각 피처별 기여도로 쪼개서 보여주는 것입니다.

2. SHAP 값 읽는 법 (반드시 알아야 할 내용)

SHAP의 설명은 '더하기'의 원리로 이루어집니다.

  1. 베이스 값 (Base Value):
    • 모델이 아무 정보도 없을 때 내놓는 평균적인 예측값입니다. 전체 학습 데이터의 평균 예측 확률이라고 생각하시면 됩니다. (예: "우리 은행의 평균 대출 승인 확률은 30%입니다.")
  2. SHAP 값 (각 피처의 기여도):
    • 각 피처가 이 베이스 값을 얼마나 높이거나 낮췄는지를 나타내는 값입니다.
    • (+) 양수 SHAP 값: 해당 피처가 예측 확률을 베이스 값보다 높이는 방향으로 밀어 올렸다는 의미입니다. (예: 소득=1억이라는 피처가 승인 확률을 +20% 올렸습니다.)
    • (-) 음수 SHAP 값: 해당 피처가 예측 확률을 베이스 값보다 낮추는 방향으로 끌어내렸다는 의미입니다. (예: 연체기록=있음이라는 피처가 승인 확률을 -15% 내렸습니다.)
  3. 최종 예측 값 (Final Prediction):
    • 최종 예측값 = 베이스 값 + 모든 피처의 SHAP 값의 합
    • 예: 80%(최종) = 30%(베이스) + 20%(소득) - 15%(연체) + ...

퀴즈에 나왔던 "SHAP 값이 양수라는 것은 무엇을 의미할까요?"라는 질문의 답이 바로 이것입니다. 해당 피처가 평균적인 예측치(베이스 값)보다 최종 예측치를 더 높이는 데 긍정적인 기여를 했다는 뜻이죠.

3. 수식을 통한 이해 (백그라운드)

SHAP은 게임 이론의 **섀플리 값(Shapley Value)**에 기반합니다. 어떤 피처 의 기여도 는 다음과 같이 계산됩니다.

수식이 복잡해 보이지만, 아이디어는 간단합니다. (복사해서 사용해 보세요!)

  • : 전체 피처의 집합
  • : 피처 를 제외한 일부 피처들의 조합 (모든 가능한 조합을 다 고려합니다)
  • : 피처 조합 만 사용했을 때의 모델 예측값
  • : 기존 조합 에 피처 추가되었을 때 예측값이 얼마나 변했는지 (이것이 바로 피처 의 '순수 기여도')

결국 이 수식의 의미는, "피처 가 특정 조합에 참여했을 때의 기여도를 모든 가능한 조합에 대해 평균 낸 값" 이라고 할 수 있습니다. 모든 경우의 수를 고려하기 때문에 매우 공정한 배분 방식입니다.

4. 헷갈리기 쉬운 내용 (주관식 대비)

  • Q: SHAP은 피처 중요도(Feature Importance)와 같은 건가요?
    • A: 아닙니다! 이것이 가장 중요한 차이점입니다.
      • 피처 중요도 (Global): 모델 전체에 대해 "어떤 피처가 평균적으로 가장 큰 영향을 미치는가?"를 알려줍니다. (예: "우리 모델에서는 '소득'이 가장 중요한 피처입니다.")
      • SHAP (Local): 단 하나의 예측 건에 대해 "이 사람의 예측에서는 어떤 피처가 어떤 영향을 미쳤는가?"를 알려줍니다. (예: "A씨의 대출 승인에는 '소득'이 긍정적으로, '직업'이 부정적으로 작용했습니다.")
  • Q: 피처 값이 크면 SHAP 값도 항상 큰가요?
    • A: 아닙니다. 피처의 값과 SHAP 값의 크기/부호는 다를 수 있습니다. 예를 들어, '나이=60'이라는 값은 대출 상환 능력 예측에서는 긍정적(+) SHAP 값을 가질 수 있지만, IT 기기 구매 확률 예측에서는 부정적(-) SHAP 값을 가질 수 있습니다.

shap 주관식 신용카드 사기 탐지 

더보기

3. SHAP (SHapley Additive exPlanations)

문제: 신용카드 사기 탐지(Fraud Detection) 모델이 특정 거래 A를 '사기 의심(확률 95%)'으로 예측했습니다. 이 예측에 대한 SHAP 분석 결과가 아래와 같다고 가정합시다.

  • 베이스 값 (평균 사기 확률): 5%
  • 결제 금액 = 300만원의 SHAP 값: +50%
  • 최근 1시간 내 접속 국가 변경 = 있음의 SHAP 값: +45%
  • 과거 정상 거래 횟수 = 500회의 SHAP 값: -5%
  1. 위 SHAP 분석 결과를 바탕으로, 이 모델이 왜 거래 A를 '사기 의심'으로 판단했는지 그 핵심적인 이유 2가지를 서술하세요.
  2. 만약 이 모델의 전역적인(Global) 피처 중요도에서 '과거 정상 거래 횟수'가 가장 중요한 피처로 나왔다고 가정합시다. 이것이 위 거래 A에 대한 SHAP 분석 결과(-5%)와 어떻게 양립할 수 있는지, 'Local 설명'과 'Global 설명'의 차이점을 들어 설명하세요.

답변 예시:

  1. 거래 A를 '사기 의심'으로 판단한 핵심 이유: 이 모델이 거래 A를 사기 의심으로 판단한 핵심적인 이유는 첫째, 결제 금액이 300만원으로 매우 컸다는 점입니다. 이 피처는 사기 확률을 평균(5%)보다 50%나 높이는 가장 큰 긍정적 기여를 했습니다. 둘째, 최근 1시간 내에 접속 국가가 변경되었다는 점입니다. 이는 일반적인 거래 패턴에서 벗어난 이상 징후로, 사기 확률을 45% 높이는 결정적인 역할을 했습니다. 이 두 피처의 강력한 긍정적 기여도(+95%)가 정상 거래 횟수로 인한 부정적 기여도(-5%)를 압도하여 최종적으로 95%라는 높은 사기 확률이 도출되었습니다.
  2. Local 설명과 Global 설명의 양립 가능성: 전역적인 피처 중요도와 특정 예측에 대한 SHAP 값은 서로 다른 것을 설명하기 때문에 충분히 양립 가능합니다.
    • Global 설명 (피처 중요도): '과거 정상 거래 횟수'가 전역적으로 가장 중요하다는 것은, 모델이 모든 거래를 통틀어 평균적으로 사기와 정상을 구분하는 데 이 피처를 가장 강력하게 사용한다는 의미입니다. 즉, 이 피처의 값이 낮으면 사기일 확률이 매우 높고, 높으면 정상일 확률이 매우 높다는 규칙이 모델 전체에 강하게 학습되어 있다는 뜻입니다.
    • Local 설명 (SHAP 값): 거래 A의 경우 '과거 정상 거래 횟수'가 500회로 매우 높았습니다. 이는 이 특정 거래에 한해서는 사기가 아니라는 강력한 증거로 작용했기 때문에, 사기 확률을 5% 낮추는 음수(-)의 SHAP 값을 가지게 된 것입니다.
    결론적으로, '과거 정상 거래 횟수'는 모델 전체에서는 매우 중요한 판단 기준(Global)이지만, 이번 특정 예측에서는 다른 피처들의 영향력이 너무나도 커서 그 중요성이 상대적으로 작게(-5%) 나타난(Local) 것입니다.

 

 

shap 의 일관성과 공정성 전역/지역

 

더보기

## 1. SHAP의 근간: 게임 이론과 공정성 (Fairness)

SHAP의 모든 장점은 그 시작점인 **섀플리 값(Shapley Value)**에서 나옵니다. 이걸 이해하면 나머지는 자연스럽게 따라옵니다.

  • 핵심 아이디어: 모델의 예측 과정을 '협력 게임'으로 비유합니다.
    • 게임 참여자 (Players): 모델에 입력되는 각 **피처(feature)**들 (예: 집값 예측 모델의 '평수', '역세권 여부', '건축 연도')
    • 게임의 결과 (Payout): 모델의 최종 예측값 (예: '이 집의 가격은 5억 원이다')
    • 섀플리 값의 목표: 게임 결과(예측값)에 대해 각 참여자(피처)가 얼마나 공정하게 기여했는지 그 몫을 분배하는 것입니다.
  • 어떻게 '공정성'을 보장하는가? '평수'라는 피처의 기여도를 계산하기 위해, SHAP은 이 피처가 참여할 수 있는 모든 조합(coalition)을 고려합니다.
    1. 아무 피처도 없을 때 '평수'가 추가되면 예측값이 얼마나 변하는가?
    2. '역세권 여부'만 있을 때 '평수'가 추가되면 예측값이 얼마나 변하는가?
    3. '역세권 여부'와 '건축 연도'가 모두 있을 때 '평수'가 추가되면 예측값이 얼마나 변하는가? ... (이하 모든 조합에 대해 반복)
    이처럼 모든 가능한 시나리오에서 '평수'의 평균적인 기여분을 계산하기 때문에, 특정 피처의 중요도를 매우 공정하고 합리적으로 측정할 수 있습니다. 이것이 SHAP이 보장하는 이론적인 공정성입니다.

## 2. SHAP의 핵심 보증: 일관성 (Consistency)

바로 이 부분이 7번 문제의 핵심이자, 다른 설명 기법(LIME 등)이 갖지 못하는 강력한 보증입니다.

  • 정의: "만약 모델이 특정 피처에 더 많이 의존하도록 변경되었다면, 그 피처에 할당되는 중요도(기여도)는 절대로 감소해서는 안 된다." 는 원칙입니다.
  • 이게 왜 그렇게 중요한가요? 상식적으로 생각해 보세요. 모델을 개선해서 '소득 수준'이라는 피처를 더 중요하게 반영하도록 만들었다면, XAI 결과에서도 당연히 '소득 수준'의 중요도가 더 높게 나와야 합니다. 하지만 몇몇 XAI 기법들은 이 상식을 위배하는 경우가 있습니다. 모델은 A피처를 더 중요하게 생각하는데, 설명 결과는 A피처가 덜 중요하다고 말하는 모순적인 상황이 발생할 수 있습니다.
  • 직관적인 예시:
    • 모델 A: 신용 점수 = 0.3 * 소득 + 0.7 * 부채
    • 모델 B (개선): 신용 점수 = 0.5 * 소득 + 0.5 * 부채 ('소득'의 영향력을 높임)
    '일관성'을 갖춘 XAI 기법이라면, 모델 B를 설명할 때 '소득'의 중요도를 모델 A보다 반드시 같거나 높게 평가해야 합니다. SHAP은 섀플리 값의 수학적 특성 덕분에 이 일관성을 항상 보장합니다. 이 특성 덕분에 우리는 모델의 변화를 신뢰하고 해석할 수 있습니다.

## 3. SHAP의 압도적 유연성: 지역적(Local) & 전역적(Global) 설명

SHAP은 하나의 예측을 아주 상세하게 분석하는 동시에, 모델 전체의 경향성까지 완벽하게 보여줍니다.

1. 지역적 설명 (Local Explanation)

하나의 데이터 포인트(예: 고객 한 명, 이미지 한 장)에 대한 예측을 설명합니다.

  • 어떻게 동작하는가: "모든 고객의 평균 신용 점수 예측치(Base Value)에서 시작해서, A 고객의 '소득' 피처 때문에 점수가 +20점, '부채' 피처 때문에 -10점, '연체 기록' 때문에 -15점이 되어 최종 점수가 나왔습니다." 와 같이 각 피처가 예측에 미친 영향(SHAP 값)을 덧셈으로 설명합니다.
  • 수식으로 이해하기: 하나의 예측값 $f(x)$는 다음과 같이 표현됩니다. 이 수식은 복사해서 사용하기 좋습니다.
    • : 특정 데이터 에 대한 최종 예측값
    • : 예측값들의 평균 (Base value)
    • : 피처 에 대한 SHAP 값 (해당 피처의 기여도)
    • : 전체 피처의 수
    이처럼 예측값이 각 피처의 기여도로 분해되기 때문에 매우 직관적입니다.

2. 전역적 설명 (Global Explanation)

모델이 전체적으로 어떤 피처를 중요하게 생각하는지 설명합니다.

  • 어떻게 만드는가: 매우 간단합니다. 모든 데이터에 대해 계산한 지역적 SHAP 값들의 절대값을 취한 후, 피처별로 평균을 냅니다.
  • Global Importance of '소득' = (|고객1의 소득 SHAP 값| + |고객2의 소득 SHAP 값| + ... ) / (전체 고객 수)
  • 무엇을 알 수 있는가: 이 값을 통해 "우리 신용 평가 모델은 평균적으로 부채, 소득, 연체 기록 순서로 중요하게 생각하는구나" 와 같은 모델 전체의 경향성을 파악할 수 있습니다. SHAP Summary Plot 같은 시각화를 통해 각 피처가 예측에 긍정적/부정적 영향을 미치는지 분포까지 한눈에 볼 수 있습니다.

 

 

lime 과 흡사한 고비용 KernelSHA

 

더보기

KernelSHAP은 모델의 종류를 전혀 가리지 않는 범용 SHAP 기법입니다. 어떤 모델이든 입출력만 있으면 섀플리 값을 근사 계산할 수 있는, SHAP의 "만능 도구" 같은 존재이죠.

이전 퀴즈에서 봤던 TreeSHAP이나 DeepSHAP이 특정 모델(트리, 딥러닝)에 최적화된 '전용 도구'라면, KernelSHAP은 어떤 자물쇠든 열 수 있는 '마스터키' 🔑 와 같습니다.


## 핵심 아이디어: 어떻게 모든 모델에 적용될까?

이론적으로 완벽한 섀플리 값을 계산하려면, 특정 피처의 유무에 따른 모든 경우의 수를 다 테스트해야 합니다. 피처가 20개만 되어도 (약 100만) 가지 조합을 테스트해야 해서 현실적으로 불가능합니다.

KernelSHAP은 이 문제를 LIME과 유사한 방식으로, 하지만 더 정교하게 해결합니다.

  1. 가상의 데이터 조합 생성 (Coalitions): 설명하려는 데이터 한 건을 기준으로, 일부 피처는 그대로 두고 나머지 피처는 '없다'고 가정(보통 배경 데이터의 평균값 등으로 대체)한 수많은 가상 데이터 조합을 만듭니다.
  2. 모델 예측값 확인: 이 가상의 데이터들을 마치 새로운 데이터처럼 모델에 넣어 예측값을 모두 받아옵니다. 이 과정에서 모델 내부를 볼 필요 없이 입출력만 사용하므로, 어떤 모델이든 상관없습니다.
  3. 가중 선형 회귀 모델 학습 (The 'Kernel' Part ✨):
    • 생성된 가상 데이터들과 그 예측값들을 이용해, 해석하기 쉬운 선형 회귀 모델을 학습시킵니다.
    • 이때 '커널(Kernel)' 이라는 가중치를 사용하는데, 원래 데이터와 피처 수가 비슷할수록(피처가 거의 다 있거나 거의 없을 때) 더 높은 가중치를 부여합니다.
    • 이 특별한 가중치 방식 덕분에, 결과적으로 학습된 선형 모델의 계수(coefficient)가 섀플리 값의 이론적 특성(일관성, 지역적 정확성 등)을 만족하게 됩니다.
  4. 회귀 계수 = SHAP 값: 최종적으로 학습된 선형 모델에서 각 피처에 해당하는 계수가 바로 그 피처의 SHAP 값이 됩니다.

## LIME과의 놀라운 관계

위 과정을 보면 LIME과 매우 비슷하다는 것을 알 수 있습니다.

  • 공통점: 특정 데이터 주변에 가상의 데이터를 만들고, 그 예측 결과를 바탕으로 단순한 선형 모델을 학습시켜 설명을 얻는다.
  • 차이점: LIME은 가중치를 부여하는 방식이 직관적(heuristic)인 반면, KernelSHAP은 섀플리 값의 이론을 만족시키도록 수학적으로 설계된 특별한 가중치(커널)를 사용합니다.

KernelSHAP은 LIME의 작동 방식에 섀플리 값의 이론적 보증을 더한, 매우 특별하고 정교한 형태의 LIME이라고 할 수 있습니다.


## 장점과 단점

  • 👍 장점:
    • 완벽한 범용성: 모델 종류, 아키텍처에 전혀 구애받지 않는 진정한 Model-Agnostic 기법입니다.
    • 이론적 보증: LIME과 달리 SHAP의 중요한 특성들(일관성, 지역적 정확성 등)을 모두 만족하여 설명의 신뢰도가 높습니다.
  • 👎 단점:
    • 매우 느린 속도: 수많은 가상 데이터를 만들고 일일이 모델 예측을 해야 하므로, 피처가 많아지면 계산 속도가 기하급수적으로 느려집니다.

결론적으로 KernelSHAP은 TreeSHAP이나 DeepSHAP 같은 전용 도구를 쓸 수 없을 때, 계산 비용을 감수하고서라도 이론적으로 가장 신뢰도 높은 설명을 얻고 싶을 때 사용하는 강력한 최후의 수단입니다.


 

Gradient CAM

 

### 1단계: 정방향 계산 (Forward Pass) - '사건 발생 및 현장 기록'

  1. 이미지를 CNN 모델에 입력합니다.
  2. 모델은 평소처럼 이미지를 분석하여 최종 예측 점수(예: '고양이' 확률 0.95)를 계산합니다.
  3. 이 과정에서, 모델의 각 층에서는 **피처 맵(Feature Map)**들이 생성됩니다. 우리는 이 중 마지막 합성곱 층의 피처 맵들에 주목합니다. 이 피처 맵들은 '도로 지도'처럼, 이미지의 어떤 위치에서 어떤 특징('뾰족한 귀', '수염' 등)이 감지되었는지를 기록한 **'현장 기록'**입니다.

### 2단계: 역전파 (Backward Pass) - '영향력 심문 및 단서 수집'

  1. 이제 우리는 "왜 '고양이'라고 확신했나?"라는 질문을 던집니다.
  2. 이 질문의 답을 찾기 위해, 최종 '고양이' 점수(시작 기울기=1)로부터 역전파를 시작합니다.
  3. 이 역전파는 가중치를 곱하는 '분배'와 여러 경로의 기울기를 더하는 '합산' 과정을 거쳐, 영향력 신호를 마지막 합성곱 층까지 전달합니다.
  4. 최종 결과물로, 우리는 각 피처 맵에 대한 **기울기 맵(Gradient Map)**을 얻습니다. 이것은 '실시간 교통 정보'처럼, '현장 기록(피처 맵)'의 각 픽셀이 이번 '고양이' 판단에 얼마나 결정적인 영향력을 미쳤는지를 보여주는 **'심문 결과'**입니다.

### 3단계: 중요도 가중치(α) 계산 - '핵심 증거 요약'

  1. 우리는 수많은 '심문 결과(기울기 맵)'를 하나의 간단한 결론으로 요약해야 합니다.
  2. 각각의 기울기 맵(Gradient Map)에 있는 모든 숫자들의 평균을 구합니다.
  3. 이 평균값이 바로 해당 피처 맵('뾰족한 귀', '수염' 등)이 이번 결정에 전반적으로 얼마나 중요했는지를 나타내는 **중요도 가중치(α)**가 됩니다.
    • α_뾰족한귀 = ('뾰족한 귀' 기울기 맵의 전체 평균)
    • α_수염 = ('수염' 기울기 맵의 전체 평균)

### 4단계: 히트맵 생성 - '사건 현장 재구성'

  1. 이제 모든 증거를 종합하여 사건 현장을 재구성합니다.
  2. 1단계에서 얻은 원본 **'현장 기록(피처 맵)'**들을 가져옵니다.
  3. 각 피처 맵에 3단계에서 계산한 각각의 **'중요도 가중치(α)'**를 곱해줍니다.
    • (중요도가 높은 '뾰족한 귀' 피처 맵) × 높은 α값 → 영향력이 증폭됨
    • (중요도가 낮은 '배경 질감' 피처 맵) × 낮은 α값 → 영향력이 억제됨
  4. 이렇게 가중치가 부여된 모든 피처 맵들을 하나로 합칩니다(Sum).

최종적으로 합쳐진 이 맵이 바로 Grad-CAM 히트맵입니다. 이 히트맵에서 밝게 빛나는 부분은 **"모델이 '고양이'라고 판단하는 데 결정적인 역할을 한 여러 중요 특징들이 공통적으로 발견된 위치"**를 의미합니다.

 

 

 

gradient 란

계산하기 편하게 정의하면 : (다음 층의 기울기) * (가중치)

*다음 층의 기울기란 목표에 미치는 영향력을 의미

역전파 계산 예시

더보기

2. 역전파 계산 시작! (Backward Pass)

🎯 목표: 최종 점수 S_cat에 대해 C1과 C2가 미친 영향력(기울기)을 계산하기.

Step 1: 최종 점수에서 기울기 계산

  • S_cat가 S_cat에 미치는 영향력(기울기)은 당연히 1입니다. 여기서부터 역전파를 시작합니다.

Step 2: FC Layer의 기울기 계산 (S_cat → F1, F2)

  • F1의 기울기를 계산해 봅시다. 공식은 (다음 층의 기울기) * (두 층을 연결하는 가중치) 입니다.
    • Gradient_at_F1 = Gradient_at_S_cat × W_f1_cat = 1 × 1.5 = 1.5
  • F2의 기울기도 마찬가지입니다.
    • Gradient_at_F2 = Gradient_at_S_cat × W_f2_cat = 1 × -0.5 = -0.5

중간 해석: F1은 '고양이' 점수에 1.5만큼의 강한 긍정적 영향을, F2는 -0.5만큼의 부정적 영향을 미쳤다는 것을 알 수 있습니다.

Step 3: Conv Layer의 기울기 계산 (핵심!) (F1, F2 → C1, C2)

C1의 기울기 계산: C1은 F1과 F2 두 곳 모두에 영향을 미쳤습니다. 따라서 F1과 F2로부터 오는 모든 영향력(책임)을 합산해야 합니다.

  • F1으로부터 C1이 받는 영향력:
    • Gradient_at_F1 × W_c1_f1 = 1.5 × 0.2 = 0.3
  • F2으로부터 C1이 받는 영향력:
    • Gradient_at_F2 × W_c1_f2 = -0.5 × 0.4 = -0.2
  • C1의 최종 기울기 (Gradient_at_C1) = (F1에서 온 영향력) + (F2에서 온 영향력) = 0.3 + (-0.2) = 0.1

C2의 기울기 계산: C2도 마찬가지로 F1과 F2 모두에 영향을 미쳤으므로, 각각으로부터 오는 영향력을 합산합니다.

  • F1으로부터 C2가 받는 영향력:
    • Gradient_at_F1 × W_c2_f1 = 1.5 × 0.6 = 0.9
  • F2으로부터 C2가 받는 영향력:
    • Gradient_at_F2 × W_c2_f2 = -0.5 × 0.1 = -0.05
  • C2의 최종 기울기 (Gradient_at_C2) = (F1에서 온 영향력) + (F2에서 온 영향력) = 0.9 + (-0.05) = 0.85

 

더보기

요약

 숫자로 보는 '분배'와 '합산' 과정

  1. 시작점: S_cat의 기울기는 1.0 입니다.
  2. 역전파 ①: S_cat → F Layer (분배만 일어남) S_cat은 하나의 점에서 시작했으므로, F1과 F2로 영향력을 나눠주기만 하면 됩니다.
    • F1의 기울기 = S_cat의 기울기 × W_f1_cat = 1.0 × 1.5 = 1.5
    • F2의 기울기 = S_cat의 기울기 × W_f2_cat = 1.0 × -0.5 = -0.5
  3. 역전파 ②: F Layer → C Layer (분배 후 합산이 일어남) 이제 C1의 기울기를 구해봅시다. C1은 F1과 F2 두 곳 모두에 영향을 줬습니다. 따라서 F1과 F2 양쪽에서 오는 영향력을 모두 받아 합쳐야 합니다.
    • C1의 최종 기울기 = (F1에서 온 영향력) + (F2에서 온 영향력`)
    • C1의 최종 기울기 = (F1의 기울기 × W_c1_f1) + (F2의 기울기 × W_c1_f2)
    • C1의 최종 기울기 = ( 1.5 × 0.2 ) + ( -0.5 × 0.4 )
    • C1의 최종 기울기 = ( 0.3 ) + ( -0.2 ) = 0.1

 


 

상세

 1. 정방향(Forward) 계산 공식

먼저, S_cat을 계산하는 공식을 다시 보겠습니다.

S_cat = (F1 × W1) + (F2 × W2)

여기에 실제 숫자를 대입해 보겠습니다.

  • F1 = 10
  • W1 = 1,500
  • F2 = 5
  • W2 = 2,000

S_cat = (10 × 1,500) + (5 × 2,000) = 15,000 + 10,000 = 25,000


2. '기울기(영향력)'의 정의

기울기는 어려운 개념이 아닙니다. 그냥 '변화의 비율' 입니다.

F1의 기울기 = (S_cat의 변화량) / (F1의 변화량)

즉, "F1이 1만큼 변할 때, S_cat은 얼마나 변하는가?"를 묻는 것입니다. 이 질문의 답을 직접 찾아보겠습니다.


3. '변화'를 직접 만들어서 계산해보기

F1의 값을 1만큼 늘려보겠습니다.

  • 원래 F1 = 10
  • 새로운 F1' = 11 (변화량 = +1)

이제 이 새로운 F1' 값을 원래 공식에 넣어서 S_cat이 어떻게 변하는지 보겠습니다. F2와 W2는 그대로입니다.

  • 새로운 S_cat' = (11 × 1,500) + (5 × 2,000)
  • 새로운 S_cat' = 16,500 + 10,000 = 26,500

자, 이제 S_cat은 얼마나 변했나요?

  • S_cat의 변화량 = (새로운 S_cat') - (원래 S_cat)
  • S_cat의 변화량 = 26,500 - 25,000 = 1,500

4. 결론: 공식과 숫자의 증명

이제 '기울기'의 정의에 우리가 계산한 숫자들을 넣어봅시다.

  • F1의 기울기 = (S_cat의 변화량) / (F1의 변화량`)
  • F1의 기울기 = 1,500 / 1
  • F1의 기울기 = 1,500

보시다시피, F1의 기울기를 계산한 결과는 1,500 입니다. 이 숫자는 무엇과 같나요? 바로 F1과 S_cat을 연결하던 가중치 W1 (1,500)과 정확히 똑같습니다.

이것이 바로 '영향력(기울기) = 가중치' 인 이유입니다. S_cat 계산식 자체가 F1에 W1을 곱하는 선형 관계이기 때문에, F1이 변할 때 S_cat은 정확히 그 가중치(W1) 배수만큼 변하게 되어 있습니다.

따라서 '영향력'을 계산하기 위해 복잡한 역수를 생각할 필요 없이, 그 관계를 정의하는 가중치(Weight)를 그대로 가져와 곱해주면 되는 것입니다.

 

 

 

그런데 이 f1의 기울기, gradient를 계산 용이하기 위해 다음의 원론적인 이해를 참고하면, 

 

 

F1의 총영향력 (Gradient_at_F1)

= (F1 → S_cat 직접 영향력) × (S_cat → 최종 목표 영향력)

= (W_f1_cat) × (Gradient_at_S_cat)

= (두 층을 연결하는 가중치) × (다음 층의 기울기)

 

 

 

결론부터 말씀드리면, 두 공식은 같은 개념을 다른 관점에서 표현한 것입니다.

  • (S_cat의 변화량) / (F1의 변화량): 이것은 기울기의 근본적인 **정의(Definition)**입니다. "기울기란 무엇인가?"라는 질문에 대한 교과서적인 답이죠.
  • (다음 층의 기울기) * (가중치): 이것은 신경망에서 기울기를 효율적으로 계산하기 위한 **실용적인 계산 규칙(Algorithm)**입니다.

이 계산 규칙이 어떻게 정의를 만족시키는지, **'연쇄 법칙(Chain Rule)'**의 개념으로 설명해 드릴게요.

🔗 두 공식을 연결하는 '연쇄 법칙'

우리가 진짜로 구하고 싶은 것은 "F1이 최종 목표(S_cat)에 미치는 총영향력" 입니다. 이 총영향력은 두 가지 영향력의 곱으로 이루어집니다.

총영향력 = (F1이 S_cat에 미치는 직접적인 영향력) × (S_cat이 최종 목표에 미치는 영향력)

이제 이 문장을 방금 배우신 두 공식으로 하나씩 바꿔보겠습니다.


1. F1이 S_cat에 미치는 직접적인 영향력

이것은 F1과 S_cat 딱 둘만의 관계를 묻는 것입니다. 방금 숫자를 대입해서 증명했듯이, 이 값은 두 뉴런을 연결하는 **가중치 W_f1_cat**과 같습니다.

  • F1이 S_cat에 미치는 직접적인 영향력 = (S_cat의 변화량) / (F1의 변화량) = W_f1_cat (가중치)

2. S_cat이 최종 목표에 미치는 영향력

이것은 S_cat이라는 중간 결과가 최종 목표(여기서는 S_cat 자기 자신)에 얼마나 영향을 주는지를 의미합니다. 이것이 바로 다음 층의 기울기(Gradient_at_S_cat) 입니다.

  • S_cat이 최종 목표에 미치는 영향력 = (최종 목표의 변화량) / (S_cat의 변화량) = Gradient_at_S_cat (다음 층의 기울기) (우리 예제에서는 S_cat이 최종 목표이므로 이 값은 1입니다.)

🧩 최종 조립: 두 공식의 완벽한 결합

이제 위의 두 조각을 합쳐보겠습니다.

F1의 총영향력 (Gradient_at_F1)

= (F1 → S_cat 직접 영향력) × (S_cat → 최종 목표 영향력)

= (W_f1_cat) × (Gradient_at_S_cat)

= (두 층을 연결하는 가중치) × (다음 층의 기울기)

바로 이것이 우리가 사용했던 실용적인 계산 규칙(Algorithm) 공식입니다.

결론적으로, 신경망에서 사용하는 기울기 계산 공식은 기울기의 정의(변화량/변화량)를 '연쇄 법칙'을 통해 여러 층에 걸쳐 연쇄적으로 적용할 수 있도록 만든 실용적인 버전인 것입니다. 그래서 두 공식은 표현만 다를 뿐, 같은 원리를 이야기하고 있는 것입니다.

 

 

 

주관식 문제 틀린내역

 

Q. 금융 사기 탐지 모델을 LIME으로 설명하던 중, 입력 데이터의 미세한 노이즈에도 설명 결과(중요 피처 순위)가 크게 바뀌는 현상을 발견했습니다. 이 현상이 의미하는 바는 무엇일까요?

A.
원본 모델 자체가 과적합(overfitting)되어 불안정함을 시사한다.
정답입니다!
설명의 불안정성은 LIME 자체의 특성일 수도 있지만, 원본 모델이 입력의 작은 변화에 민감하게 반응하는 과적합 상태일 가능성도 매우 높습니다.
 
 

Q. 한 금융회사가 사기 탐지 모델 A를 운영 중이었습니다. 분석 결과, '거래 금액' 피처의 영향력이 너무 작은 것 같아, 이 피처에 더 높은 가중치를 주도록 개선한 모델 B를 새로 개발했습니다.

그런데 동일한 거래 데이터에 대해 LIME 설명을 실행했더니, 모델 A에서는 '거래 금액'이 중요도 1위 피처로 나왔지만, 정작 더 중요하게 만들었던 모델 B에서는 '거래 금액'이 중요도 3위로 나오는 모순적인 결과가 발생했습니다.

 

> LIME의 설명이 '일관성'을 가지지 못함을 보여준다.

 

이 상황은 모델이 '거래 금액'에 더 의존하도록 변경되었음에도 불구하고, LIME 설명은 오히려 중요도가 떨어졌다고 말하고 있습니다. 이것이 바로 LIME이 SHAP과 달리 '일관성'을 보장하지 못함을 보여주는 대표적인 사례입니다.

 

일관성 부재는 **'서로 다른 두 모델을 비교'**하는 상황에서 정답이 될 수 있습니다.

'일관성'은 모델을 특정 방향으로 개선했을 때, 설명도 그 방향을 따라가는지에 대한 신뢰도를 의미합니다.

 

 

Q.

한 거래 데이터에 대해 사기 탐지 모델이 **"사기 확률 85%"**라고 예측했습니다.

이 예측을 설명하기 위해 LIME을 실행했더니 다음과 같은 결과가 나왔습니다.

  • 평균 예측 확률 (Base Value): 10%
  • '거래 금액' 기여도: +50%
  • '접속 국가' 기여도: +30%
  • '거래 시간' 기여도: -10%

이제 LIME이 설명한 값들을 모두 더해봅니다: 10% + 50% + 30% - 10% = 80%

LIME 설명의 합계는 **80%**인데, 실제 모델의 예측값은 **85%**로 서로 다릅니다.

이처럼 설명의 합계가 실제 모델의 예측값과 정확히 일치하지 않는 현상이 바로 LIME이 '지역적 정확성'을 완벽하게 보장하지 않는다는 증거입니다. LIME은 어디까지나 복잡한 모델을 단순한 선형 모델로 '근사(approximation)'하는 것이기 때문에 약간의 오차가 발생할 수 있습니다. (반면 SHAP은 이 등식이 항상 성립함을 보장합니다.)

'지역적 정확성'은 평균 예측치 + 모든 피처의 기여도 합 = 실제 모델의 예측값 이라는 등식이 완벽하게 성립하는지를 의미합니다.

 

'시험 > 기본개념' 카테고리의 다른 글

attention sink  (0) 2025.09.02
transormer add norm, attention  (0) 2025.09.02
AI 시스템 설계  (1) 2025.09.01
MoE  (0) 2025.08.31
llm (Bert, RoBERTa, ALBERT,T5,BART)  (0) 2025.08.29