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 |
댓글