일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 메타러닝
- 코딩 테스트
- meta-learning
- 인공지능
- 백준
- Class activation map
- coding test
- Artificial Intelligence
- python
- Unsupervised learning
- Score-CAM
- grad-cam
- Interpretability
- 딥러닝
- 코딩테스트
- 설명가능한
- 머신러닝
- AI
- 설명가능한 인공지능
- GAN
- SmoothGrad
- Machine Learning
- cs231n
- 기계학습
- keras
- Deep learning
- 시계열 분석
- Cam
- Explainable AI
- xai
- Today
- Total
iMTE
Smooth Grad-CAM++ 내용 정리 [XAI-4] 본문
Smooth Grad-CAM++ 내용 정리 [XAI-4]
Wonju Seo 2021. 4. 14. 17:12논문 제목 : Smooth Grad-CAM++: An Enhanced Inference Level Visualization Technique for Deep Convolutional Neural Network Models
논문 주소 : arxiv.org/abs/1908.01224
주요 내용:
1) 저자는 Grad-CAM++에 SmoothGrad를 적용시킨 Smooth Grad-CAM++을 제안하였다. 이는 기존 Grad-CAM++ 대비, object localizaiton과 multiple occurrences의 CAM 생성에 좋은 성능을 보여준다. 또한, feature map에 따른 CAM 형성 및 neuron level에서의 CAM 형성도 가능한 것이 이 논문의 contribution이다.
2) Grad-CAM에서는 k 번째 feature map의 중요도는 다음과 같이 gradients에 global-averaged-pooling 을 사용하여 계산된다.
$$W_k^c=\frac{1}{Z}\sum_i\sum_j \frac{\partial Y^c}{\partial A_{ij}^k}$$
앞서 계산된 importance는 해당하는 feature map에 곱해지고, ReLU를 거쳐 최종 CAM이 형성된다.
$$L_{Grad-CAM}^{c}=ReLU(\sum_k W_k^c A^k)$$
Grad-CAM++ 에서는 global-averaged-pooling 대신에 positive partial derivative에 weighted sum을 하여 CAM을 형성한다.
$$W_k^c=\sum_i \sum_j \alpha_{ij}^{kc} ReLU(\frac{\partial Y^c}{\partial A_{ij}^k})$$
위 식에서 $\alpha_{ij}^{kc}$ 는 target class c에 대한 k 번째 activation map $A^k$의 location (i,j)의 중요도를 가리킨다.
Target class c에 대한 class score Y는 다음과 같이 나타낸다.
$$Y^c=\sum_k [\sum_i \sum_j [ \sum_a \sum_b \alpha_{ab}^{kc}ReLU(\frac{\partial Y^c}{\partial A_{ab}^k})]A_{ij}^k] $$
이전의 Grad-CAM++ 내용 정리에서 $\alpha_{ij}^{kc}$ 는 다음과 같이 정리되는 것을 확인하였다.
$$ \alpha_{ij}^{kc} = \frac{\frac{\partial ^2 Y^c}{(\partial A_{ij}^k)^2}}{2 \frac{\partial^2 Y^c}{(\partial A_{ij}^k)^2}+\sum_a \sum_b A_{ab}^k \frac{\partial ^3 Y^c}{(\partial A_{ij}^k)^3}}$$
3) SmoothGrad는 input x의 주변에서 sample을 뽑아서 gradient-based sensitivity maps을 그리는 방법이다.
$$M_c(x)=\frac{1}{n} \sum_{1}^n M_c(x+N(0,\sigma^2))$$
이 방법은 좀 더 개선된 visualization map을 제공한다. 저자는 gradients의 계산에 이 방법을 사용하였다.
4) $D_1^k$, $D_2^k$, $D_3^k$를 k번째 feature map의 1차, 2차, 3차 미분의 값이라고 할 때, $\alpha_{ij}^{kc}$와 $W_k^c$는 다음 식으로 계산이 된다.
$$ \alpha_{ij}^{kc} = \frac{\frac{1}{n}\sum_1^n D_1^k}{2 \frac{1}{n} \sum_1^n D_2^k+\sum_a \sum_b A_{ab}^k \frac{1}{n} \sum_1^n D_3^k}$$
$$ W_k^c=\sum_i \sum_j \alpha_{ij}^{kc} ReLU(\frac{1}{n}\sum_1^n D_1^k)$$
5) Grad-CAM, Grad-CAM++, SM-Grad-CAM++을 비교하면 다음과 같다.
위의 그림에서 알 수 있는 것 처럼, SM-Grad-CAM++가 좀 더 object localization이 잘 되어 있으며, multiple occurrences을 잘 반영하는 것으로 보인다.
6) 특정 feature map과 특정 neuron에 대한 CAM을 확인하면 다음과 같다.
+
Grad-CAM++에 비해서 성능이 좋은 것을 단순히 몇개의 그림만으로 확인하는 것은 어렵다고 생각된다. (CAM 생성에 실패한 것도 보여줘야 믿을 만 하지 않을까?) Grad-CAM++ 논문에서 사용한 것 처럼 다양한 데이터 셋에서의 성능을 계산하여 제안하는 알고리즘의 검증이 필요하다.
'Deep learning study > Explainable AI, 설명가능한 AI' 카테고리의 다른 글
Sanity checks for saliency maps, Equation sheets, [XAI-6 (1)] (0) | 2021.04.20 |
---|---|
SmoothGrad : removing noise by adding noise 내용 정리 [XAI-5] (0) | 2021.04.15 |
Grad-CAM++ 내용 정리 [XAI-3] (0) | 2021.04.09 |
CAM (Class activation mapping) 내용 정리 [XAI-2] (0) | 2021.04.08 |
Grad-CAM (Gradient-weighted class activation mapping) 내용 정리 [XAI-1] (0) | 2021.04.08 |