최근 DL 모델들의 성능은 크게 향상하고 있음.
이미지의 어느 부분을 보고 말이라고 판단 하였는지 보여주는 기법을 사용
설명 가능하다는 것은 뭘까?
: 구체적인 정의는 내려지지 않음. 다만 사람들이 이해 가능하도록 해주는 것 정도로만!
XAI의 분류
Local : 주어진 특정 데이터에 대한 예측 결과를 ‘개별적으로’ 설명
Global : 전체 데이터셋에서 모델의 행동 결과를 설명
White-Box : 모델의 내부 구조를 알고 있는 상태에서 설명
Black-Box : 입력과 출력만 알고 있는 상태에서 설명 시도
Intrinsic : 모델의 복잡도를 애초에 설명하기 좋은 상태로 제한한 다음에 학습시키고 설명
Post-hoc : 그냥 훈련을 끝낸 모델을 보고 설명하는 것
Model-Specific : 특정 모델에만 적용 가능
Model-Agnostic : 어느 모델에나 적용 가능
Linear Model이나 Decision Tree같은 경우
딥러닝에 많이 쓰이는 Grad-CAM방식
Saliency map-based
이미지가 모델에 들어가면 이미지에서 중요하게 작용한 부분을 히트맵으로 보여주는 거 !!
Saliency map-based 방식
CAM
Global Average Pooling을 이용하여 설명 제공
Global Average Pooling : FatureMap 자체의 평균을 구해내는 방법
근데 GAP을 하면 w과 h가 작아지니까 이를 Upsampling을 통해 극복
잘 설명하고 있음을 확인할 수 있음 -> Detection과 Segmentation에도 활용 가능 (Weakly Supervised Learning)
장점 : 해석이 용이하다
단점 : Model-Specific하다 -> GAP가 있는 모델에만 사용 가능
=> Grad CAM 등장
Grad CAM
CAM을 Gradient와 엮어서 설명! -> GAP가 없어도 됨
피쳐맵의 Gradient를 구하고 그 Gradient의 평균값들을 선형 결합하여 CAM을 구해냄
장점 : Model Agnostic 하다 (Gradient를 사용하는 어느 모델에나 적용 가능)
단점 : 평균 Gradient값이 꼭 중요도를 반영하지는 않음
Perturbation-Based 방식
입출력에 대한 정보만 가지고 있는 경우 사용하는 방식
LIME 방식 (Local Interpretable Model-agnostic Explanations)
분류기가 비선형적 특징을 가지고 있더라도 Data Point에 대해선 선형적으로 설명 가능하다
이런 식으로 여러 부분을 자르고 나서
이런 식으로 변형을 줌 => 변형을 준 input값만으로 예측을 어떻게 하냐에 따라 뭘 더 중요시 하는지 확인할 수 있음
Randomized Input Sampling for Explanation (RISE)
랜덤한 MASK를 만들어서 이걸 input image에 씌워버림 -> 이 입력이 모델을 통과했을 때 예측 확률이 얼마나 떨어지는지를 확인
Influence function-based 방식
지금까진 주어진 테스트 이미지가 있으면 분류를 하고 하이라이팅 하는 방식 -> 그러나 모델은 함수로 표현할 수 있으므로, Test 데이터를 추론할 때 가장 영향을 준 Training Data를 찾게하면 된다!!
여러 Training Image들 중에서 test image를 추론할 때 가장 큰 영향을 준 Training image를 뽑아줌
해당 Training image가 없을 때 해당 test image를 추론할 때 얼마나 큰 영향을 주는지를 계산함
Metrics
1. 사람들이 직접 보고 평가하는 것
AMT Test (Amazon Mechanical Turk)
사람이 모델의 해석본을 보고 모델의 예측을 맞춰보는 것
혹은 어느 쪽 설명이 더 나은지를 직접 고르게 하는 것
2. 이미 만들어 놓은 Annotation 을 이용하는 것
단점 : annotation을 만들기가 애초에 어렵다 / bbox와 seg가 진짜 정답이라고 할 수 있을까?
3. Motivation
중요하다고 하는 부분을 지웠을 때, 얼마나 예측값이 떨어지는지 확인하는 것
XAI의 신뢰성
Sanity Check
: 온전성 확인 -> 객체를 잘 찾는다고 해서 그게 설명을 잘 하는 건가?
Model Randomization Test :
오른쪽으로 갈수록 계수들을 Random하게 바꾸고 함 -> 정상적이라면 오른쪽으로 갈 수록 예측 결과가 의미없게 나와야함
그런데 몇몇 애들은 그거랑 상관없이 나옴 -> 얘는 설명하는 게 아니라 Edge Detector로 기능하고 이었던 것이다!!
Adversarial Attack
입력 이미지의 약간의 변형을 가해 설명 방법을 완전히 다르게 바꿔버리는 것
많은 방식들이 Gradient와 연관되어 있는데 Decision Boundary가 삐쭉하게 되어있기 때문에 조금만 바뀌어도 크게 바뀌는 것