본문 바로가기
Deep Learning/XAI

[XAI] SHAP

by 룰루셩 2022. 3. 28.

SHAP에 대한 설명은 여기 유튜브 영상을 주로 참고하였다.

 


 

SHAP

SHapley Additive exPlanations

Shapley value를 기반으로 예측값에 대하여 각 피쳐가 미치는 기여도를 측정하여 예측에 대한 해석 제공


Shapley value란

(게임이론) 게임에서 각 플레이어의 기여도에 따라 상금을 공정하게 할당하기 위한 방법

- 한 플레이어의 Marginal contribution을 계산하여 가중 평균한 값

  ※ Marginal contribution: 플레이어 전체 집합에 대해 가능한 모든 부분 집합마다 특정 플레이어 존재 여부에 따른 상금의 변화량

 

 

↓Shapley value 구하는 방법 예시↓

더보기

플레이어: A, B, C 

 

<A의 Shapley value 구하기>

 

1. 모든 부분 집합 (8개)

ø, {A}, {B}, {C}, {A, B}, {B, C}, {A, C}, {A, B, C}

 

2. Marginal contribution 구하기

  ① A가 있는 부분집합 제거 → ø, {B}, {C}, {B, C} 이렇게 4개만 남는다.

   A가 추가된 집합을 만든다. {A}, {A, B}, {A, C}, {A, B, C} 

  위의 8개의 각 집합마다 게임에 참여했을 때의 상금을 구한다.

  ②-① 각각의 상금에 얼마나 차이가 나는지 계산한다. 

  (각각 40, 30, 10, 30이라고 예를 들자)

 

3. Shapley value 계산하기

  $F = {A, B, C}$

  가중치 구하는 공식 : ${|S|! (|F|-|S|-1)!} \over {|F|!}$

  | |: 원소의 개수
  S: Shapley value를 계산하는 플레이어가 속하지 않을 각 집합 (①에 해당)

 그리고 가중치와 maginal contribution 값을 곱해서 더한다 (가중평균을 구한다)

 아래 표는 Shapley value를 구하는 예시이다.

 

    S   S   S   S
부분집합 {A} ø {A, B} {B} {A, C} {C} {A, B, C} {B, C}
Marginal 40 30 10 30
가중치 ${0! (3-0-1)!} \over {3!}$ ${1! (3-1-1)!} \over {3!}$ ${1! (3-1-1)!} \over {3!}$ ${2! (3-2-1)!} \over {3!}$
A의 Shapley value $40*{1}/{3}+30*{1}/{6}+10*{1}/{6}+30*{1}/{3}=30$

다시, SHAP

Shapley value를 기반으로 예측값에 대하여 각 피처가 미치는 기여도를 측정하여 예측에 대한 해석을 제공한다.

위의 Shapley value  개념을 XAI에 적용할 때 

플레이어 = Model Input feature

상금 = 모델 예측

즉, 모델에 입력으로 들어가는 feature가 각각 모델 예측에 얼마나 영향을 미치는지 shapley value로 계산하여 해석한다.

 

SHAP 방법에는 Kernal SHAP(LIME+SHAP), Deep SHAP(딥러닝 모델), TreeSHAP(tree 기반 모델)등이 있다.


DeepSHAP 적용 예시

왼쪽 첫번째 사진을 dowitcher이라고 예측할 때 기여를 많이 한 feature는 부리이고,

아래 사진을 meerkat이라고 예측할때 가장 많이 기여를 한 feature는 미어켓의 눈이다.

라고 해석할 수 있다. 

 


출처

[1] https://www.youtube.com/watch?v=BQSkV95Dy4s&t=853s 

[2] XAI 설명 가능한 인공지능, 인공지능을 해부하다 (책)

 

'Deep Learning > XAI' 카테고리의 다른 글

[XAI] CAM, GradCAM (작성중)  (0) 2022.03.28
[XAI] LRP  (0) 2022.03.28
[XAI] LIME  (0) 2022.03.22

댓글