1. 전역 평균 풀링 (Global Average Pooling)
GAP(Global Average Pooling)은 말 그대로 feature map 전체에 Average Pooling을 적용하는 것입니다.
즉, 각 샘플마다 하나의 숫자가 나오게 합니다. 이는 조금 파괴적인 연산이지만, 출력층의 연산에는 매우 유용합니다.
GAP은 다음과 같은 연산으로 이루어집니다.
\(a_k = ave(f^k) = \frac{1}{mn}\sum_{i = 1, m}^{}\sum_{j = 1, n}^{}f_{ij}^k\)
특징 맵 k번째의 화소의 평균값을 계산합니다.
따라서 k개의 결과가 나오게 되고, 이를 출력 층의 노드 c개와 연결하는 연산은 다음과 같습니다.
q는 특징 맵의 개수입니다.
\(s_c = \sum_{k = 1, q}^{}a_kw_{ck}\)
이때 \(w_{ck}\)는 k번째 feature 맵과 c번째 출력 노드를 연결하는 가중치입니다.
이를 \(a_k\)와 연결하여, softmax를 적용한 s를 출력하고 있습니다.
완전 연결 층에서는 qC개의 가중치만 있습니다.
만약에 마지막의 feature map의 개수가 4개이고, 숫자 인식을 한다면 C = 10이므로 불과 40개의 가중치만 있습니다.
2. CAM (Class Activation Map)
CAM은 GAP이 제공하는 정보를 활용해 CNN의 분류 결과에 대해 설명하는 기능을 제공합니다.
이는 층이 깊어질수록 높은 수준의 특징을 추출하는 CNN의 특성을 활용한 것입니다.
CAM의 식은 다음과 같습니다.
\(f_c^{XAI} = \sum_{k = 1, q}^{}w_{ck}f^k\)입니다.
이는 k번째 특징 맵과 c와 연결된 가중치를 곱한 후 모두 더함으로써 신경망이 부류 c를 인식할 때 어느 곳을 보고 판단하는지를 나타낼 수 있습니다.
GAP을 통해서 weight를 만들고, 이를 통해 각각의 feature map과 곱합니다.
이를 모두 더함으로써 이미지의 HeatMap(열지도)가 나오게 됩니다.
하지만 CAN은 혁신적인 아이디어이지만 한계가 있습니다.
Global Average Pooling에 의지하기 때문에, GAP을 사용하지 않는 모델에는 적용이 불가능합니다.
3. GradCAM
GradCAM은 CAM의 확장 버전입니다.
GAP을 사용하지 않는 모델에도 적용이 가능합니다.
GradCAM의 원리는 다음과 같습니다.
출력층의 c번째 노드의 출력 \(o_c\)는 \(f_{ij}^k\)에 영향을 받습니다.
이때 둘 간의 변화량은 그레이디언트 요소 \(\frac{\partial o_c}{\partial f_{ij}^k}\)로 표현합니다.
이때 GradCAM은 F를 구성하는 특징 맵의 화소 각각에 대해 그레이디언트 요소를 계산한 다음, 아래의 식에 적용해 가중치 \(a_c^k\)를 구합니다. (k번째 특징 맵의 그레이디언트에 전역 평균 풀링을 적용하는 것과 마찬가지)
\(a_c^k = \frac{1}{mn}\sum_{i = 1, m}^{}\sum_{j = 1, n}^{}\frac{\partial o_c}{\partial f_{ij}^k}\)
즉 특정 화소가 결과에 어떤 영향을 미치는지에 대한 변화량을 계산하고, 그 계산된 변화량을 바탕으로 평균을 냄으로써 특정 맵이 결과에 얼마나 영향을 끼치는지 계산합니다.
아무튼 이를 통해 \(f_c^{XAI} = \sum_{k = 1, q}^{}w_{ck}f^k\)에 적용한다면 heatmap이 나오게 됩니다.
4. 요약
전역 평균 풀링, Global Average Pooing, GAP은 feature map 전체에 풀링을 적용하는 것입니다.
이는 특징 맵의 정보를 많이 잃어버리지만, 특징 맵이 결과에 얼마나 큰 영향을 끼치는지 알 수 있습니다.
이를 바탕으로 Class Activation Map이 나오게 되었는데, CAM은 GAP을 통해 특징 맵과 결과의 가중치를 찾고,
feature map과 가중치를 곱해서 모두 더하면 인공지능이 어디에 가장 큰 중점을 두는지 알 수 있습니다.
하지만 CAM은 GAP이 있어야만 사용할 수 있다는 단점이 있어서, 이를 보완한 GradCAM이 나오게 되었습니다.
GradCAM은 feature map의 특정 화소와 결과 사이의 변화량을 계산해서 feature map 전체 화소의 변화량을 평균 냅니다.
따라서 feature map이 결과에 얼마나 큰 영향을 끼치는지 알 수 있고, 이 가중치를 통해서
feature map과 가중치를 곱해 모두 더하면 인공지능이 중점적으로 보는 곳을 알 수 있습니다.
Heatmap은 맵을 하이라이트 해줍니다.
2D도 가능하고, 그림도 가능합니다.
CAM : GAP-based
GradCAM : more generalized way for XAI
'인공지능 > 머신러닝' 카테고리의 다른 글
[머신러닝 - 이론] NLP + Computer Vision (0) | 2022.06.01 |
---|---|
[머신러닝 - 이론] NLP - Natural Language Processing (자연어 처리) (0) | 2022.06.01 |
[머신러닝 - 이론] XAI - Explainable AI (설명 가능한 인공지능) (0) | 2022.05.31 |
[머신러닝 - 이론] MCTS (Monte Carlo Tree Search) (몬테카를로 트리 탐색) (0) | 2022.05.29 |
[머신러닝 - 이론] Search (탐색) (0) | 2022.05.29 |