티스토리 뷰

728x90

XAI

eXplainable artificial Intelligence라는 의미로 개념은 1975년 등장하였으나 전문 용어로 자리잡은 것은 2004년

NPC의 인공지능을 개조하여 행동 이유를 설명하는 아키텍쳐를 만든 것이 시초

즉, 인공지능 모델이 왜 그러한 결정을 내렸는지 설명하려는 목적으로 만들어진 모델이라고 할 수 있음

 

XAI는 기존 머신 러닝 모델에 설명 가능한 기능을 추가하고, HCI와 접목하여 상황을 개선하려는 목적을 주로 지니는데, 

현재에는 설명 가능한 기능 위주로 발달하고 있음

 

XAI 기법들

- 피처 중요도 (Feature Importance)

- 필터 시각화 (Filter Visualization)

- LRP (Layer-wise Relevance Propagation)

- 부분 의존성 시각화 (Partial Dependence Plot)

- 대리 분석 (Surrogate Analysis, 근사치 모델, 반응 표면 기법, 에물레이터): 글로벌 대리 분석, 로컬 대리 분석(LIME)

- SHAP 

 

1. Feature Importance (Permutation Importance)

  - 특정 피처값을 임의값으로 치환했을 예측 에러의 변화를 기준으로 판단 (치환 시 에러의 변화가 크다면 중요도 높음) 

# 피처 중요도 계산법 (Fisher et.al., 2018)

훈련된 모델: f, 피처 매트릭스: X, 타겟 벡터: y, 에러 측정 방법: L(y, f)

1. 주어진 모델의 에러 측정  e(original) = L(y,f)
2. X의 피처 k개(k=1, ..., p)에 대하여
    a. 피처 매트릭스 X(permutation)를 만듦 (X는 피처 k를 매트릭스 X에서 임의로 변경한 모델)
    b. X(permutation)로 에러를 측정함 
       e(permutation) = L(Y, f(X(permutation)))
    c. 퍼뮤테이션 피처의 중요도 산정 
       FT^k = e(permutation) / e(original)  또는  FT^k = e(permutation) - e(original)
3. 피처 중요도 FI를 구함

- tree 기반의 알고리즘들은 특정 피처마다 순회하면서 한 번씩 모델을 만들고 에러를 측정하며 FI 값을 조정

- 각 피처 간의 상관성(다중공선성)이 낮아야, 즉 피처들이 독립적이어야 타당도가 높아짐

- XGBoost의 plot_importance()를 이용할 수 있음

타이타닉 데이터를 이용한 피처 중요도 계산

2. 대리 분석 (Surrogate analysis)

2-1. 글로벌 대리 분석:

분석해야 할 모델을 f라고 했을 때, 이 모델을 흉내내는 g를 만듦.

이 때 g의 학습 방식은 f와 같을 수도 있고 다를 수도 있음 f보다 쉽고 설명가능하면 됨

모델 g는 f와 비슷한 구조로 학습시킨 다음 그 결과를 해석하는 방법이라고 할 수 있음

두 모델은 R^2 = 1 - SSE/SST로 판단하는데 1에 가까울 수록 두 모델은 유사하므로 합리적 설명 가능

 

2-2. 로컬 대리 분석: LIME (Local Interpretable Model-agnostic Explanations)

데이터 하나에 대해 블랙박스가 해석하는 과정을 분석

학습한 모델에 대해 텍스트 하이라이트 기능 제공

- 입력 데이터를 쪼개고 변형을 줌 - superpixel (masking하고 학습)

- 예측값을 구하고 평가

- 변형된 값이 예측값에 큰 변화를 준다면 중요한 변수로 인식 

f모델을 흉내내는 g를 구현하면서 f의 결과를 통해 주요 지점을 포착한 다음 이 근처를 샘플링하여 superpixel 만듦

이렇게 구한 입력값을 f에 넣어보면서 비슷한 출력을 내는지 계속 비교하여 결정 경계를 선정함(decision boundary)

 

- 언어 모델에서는 TF-IDF를 통해 벡터화한 다음 모델을 통해 학습함

 Bag-of-Words를 사용하여 카테고리 분류 학습을 통해 하이라이트 기능을 가질 수 있음

 

 

2-3. SHAP (SHapley Additive exPlainations)

 

- 섀플리 값(shapley value)은 전체 성과를 창출했는데 각 참여자가 얼만큼 기여했는지를 계산

  위 그림에서 A의 생산량은 낮지만, B나 C는 A와 함께 했을 때 생산량이 크게 증가하였음.

  따라서 A의 기여도는 A가 참여했을 때의 총 생산량에서 A가 빠졌을 때의 총 생산량을 뺌으로써 알 수 있음

 

- Permutation 기법은 피처를 돌아가면서 임의로 값을 바꾼 후의 변화가 예측에 주는 영향력을 측정함

  이는 피처 영향력 측정에는 좋지만, 피처간 상관관계를 무시하기 때문에 왜곡이 생기며, 퍼뮤테이션 정도에 따라 

  중요도가 바뀌게 됨. 또한 permutation은 음의 영향력은 고려하지 않음.

 

- SHAP은 permutation과 비슷하지만 피처 영향력의 합을 1로 고정함으로써 피처간 상관 관계가 고려됨 

  양의 영향력, 음의 영향력 모두 고려됨

- feature importance 및 이미지 분석에서도 활용될 수 있음

 

import xgboost
import shap

# train an XGBoost model
X, y = shap.datasets.boston()
model = xgboost.XGBRegressor().fit(X, y)

# explain the model's predictions using SHAP
# (same syntax works for LightGBM, CatBoost, scikit-learn, transformers, Spark, etc.)
explainer = shap.Explainer(model)
shap_values = explainer(X)

# visualize the first prediction's explanation
shap.plots.bar(shap_values)

같은 데이터와 모델에 대한 shapley value 와 permutation (xgboost.plot_importance) 비교

# summarize the effects of all the features
shap.plots.beeswarm(shap_values)

import shap
import numpy as np

# select a set of background examples to take an expectation over
background = x_train[np.random.choice(x_train.shape[0], 100, replace=False)]

# explain predictions of the model on four images
e = shap.DeepExplainer(model, background)
# ...or pass tensors directly
# e = shap.DeepExplainer((model.layers[0].input, model.layers[-1].output), background)
shap_values = e.shap_values(x_test[1:5])

# plot the feature attributions
shap.image_plot(shap_values, -x_test[1:5])

 

3. 필터 시각화 (Deconvolution, Backpropagation, Guided Backpropagation, Activation Maximization)

- 학습된 신경망 모델에 이미지가 입력됐을 때, 각 은닉 계층의 반응을 시각적으로 확인하는 방법

   필터: 은닉층에 복수로 존재하는 활성 함수 다발(bunch of activation functions) 

   즉, 데이터가 지나가고 연산된 활성함수들을 시각화하는 기법 

   인풋 데이터를 합성곱 신경망의 은닉층 필터에 통과시켜 얻은 이미지로 얻음

Feature map examples on conv layers
Convnet Filters on front layers
Convnet Filters on back layers

 

 

3. LRP (Layer-wise Relevance Propagation)

- 딥러닝 모델의 결과를 역추적해서 입력 이미지에 히트맵을 출력

  히트맵은 모델이 입력 이미지를 어떻게 보고 있는지를 표시함 (피처맵보다 오류 확률 적음)

- Relevance Propagation: 특정 결과가 나오게 된 원인을 분해하고 그 비중을 분배하는 방식

  Decomposition: RP로 얻어낸 원인을 가중치로 환원하고 해부하는 과정 

빨간색은 고양이라는 결론을 내리는 데 도움이 되는 영역, 파란색은 잘못 분류하게 만드는 영역을 나타냄

각 이미지 픽셀은 영역으로 묶인 후 피처 하나로 응축돼 은닉층에 전달

딥러닝 모델은 전달된 은닉층의 값을 다른 은닉층으로 전달함

마지막 은닉층(classifier)을 통과할 때 고양인지 아닌지 결과를 출력함 

 

Pixel-wise Explanation 그림은 블랙박스인 f(x)가 이미지를 고양이라고 예측할 가능성에서부터 역방향으로 순회하며 각 은닉층의 결과 기여도를 계산함 

그림: RP 및 Decomposition 과정

forward propagation function의 루트 포인트는 local decision boundary에 위치함. gradients는 이 경계를 따라 input을 class 별로 구분할 수 있도록 하는 가장 많은 정보를 제공함

 

 

3. Grad-CAM (Layer-wise Relevance Propagation)

GradCAM의 구조

input 이미지를 CNN에 통과시켜 feature map을 추출한 뒤, task에 적합한 네트웍의 인풋이 되어 과제 수행


feature map에 대해 y의 gradient를 전부 합산한 값 global average값과 같으며, 모든 클래스에 대해 a과 feature map을 곱하여 더하면 gradcam 값을 구할 수 있음. 여기서는 양의 값에 집중하므로 relu를 통과시켜 결과값을 얻음 

 

[정답인 경우와 오답인 경우 비교]

prediction:  2 answer:  2

prediction:  0 answer:  2

 

 

 

Reference

https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2

https://hygradcam.blogspot.com/2020/11/blog-post.html

https://www.sciencedirect.com/science/article/pii/S1051200417302385#fg0050

'데이터 분석 > 딥러닝' 카테고리의 다른 글

모델 평가 방법 (Chi-square, C-statistic, AUROC, NRI, IDI)  (0) 2023.01.05
Transformer Model  (0) 2022.12.27
Best AI papers in 2022  (0) 2022.12.26
AutoEncoder  (0) 2022.12.26
LSTM & GRU  (0) 2022.12.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함