- black box 모델인 CNN의 내부 동작을 가시화하는 방법들에 대해 설명
- CNN을 구성해서 어떤 task의 데이터셋으로 입력과 출력을 주고 학습을 했음에도 잘 되지 않는 경우가 있는데 이 때는 왜 안되는걸까? 를 알아보기 위해 시각화를 진행한다.
ZFNet
- deconvolution을 이용한 visualization을 시도한 연구
- 이 연구를 통해 낮은 계층에서는 조금 더 방향성이 있는 선을 찾는 filter들을 확인할 수 있었고, 높은 계층으로 갈 수록 high level의 의미가 있다는 것을 파악할 수 있었다.
- visualization은 단순히 눈이 호강하기 위해 하는 것이 아닌 CNN이 어떤 부분을 보고 어떻게 파악하는지를 조금이라도 알 수 있는 중요한 부분이다.
filter visualization
- Alexnet의 첫 번째 layer해보면 filter를 시각화할 수 있을 뿐만 아니라 activation map도 visualization할 수 있다.
- activation map은 filter마다 결과가 한 channel로 나오기 때문에 흑백으로 표현이 되며, 이를 시각화 함으로 각 필터의 특징을 파악할 수 있다.
- 뒤쪽 layer는 차원 수가 높기 때문에 visualization을 하기 어렵고, 앞쪽 layer와 합성되면서 더욱 더 추상적인 역할을 하기에 사람이 해석할 수 있는 정보가 별로 없기에 잘 하지 않는다.
Types of neural network vaisualization
- NN을 분석하기 위한 다양한 방법이 연구되고 있는데 크게 두 가지로 나눌 수 있다.
- 크게 모델 자체의 특성을 분석하는데 강점을 둔 방법 (focus on models)
- 하나의 입력 데이터부터 어떻게 이런 결론을 내었는지 출력을 통해 확인하는 방법 (focus on data)
Analysis of model behaviors
-
Class visualization
- 위와 같은 합성 영상을 만들기 위해서는 간단한 연산이 아닌 최적화를 통해 영상을 찾아나가는 과정을 거쳐야 한다.
- loss : I∗=argmaxf(I)−Reg(I)
-
f(I) : 관심갖는 class의 score (강아지에 대한 score)
-
낮은 class score를 높이는 입력 영상 I를 찾아라.
-
하지만, score를 높이는 영상을 찾다보면 더 이상 영상이 아닌 것들도 찾을 수 있기에 우리가 이해할 수 있는 영상을 찾기 위해 Regularization term을 추가한다.
- 임의의 영상으로 CNN 모델에 입력으로 넣은 후 관심 class score를 추출
- 역전파를 통해 입력값의 gradient를 구하고 target score를 높여주기 위해 loss에 -값을 취해 그대로 경사하강법을 적용하여 업데이트
- 업데이트 된 영상에 대해 1~2과정을 반복
- 이러한 방법은 초기 입력에 따라 다양한 결과를 얻어볼 수 있으며, 모델이 하나의 class에 대해 어떤 이미지를 상상하고 있는지는 여러번 이 과정을 거치고 생성된 다양한 영상들의 패턴을 분석한다.
Model decision explanation
-
Saliency test 1
-
Saliency test 2
- 역전파를 이용하여 특정 이미지를 분류해보고 최종 결론이 나온 class에 결정적으로 영향을 미친 부분이 어디인지 나타내는 기법
- 특정 입력 영상을 넣고 class score를 구한다.
- 역전파를 통해 입력 영상까지 진행하여 얻어진 gradient를 절대값 혹은 제곱을 구한다.
- 절대값 이나 제곱을 취하는 이유는 부호보다는 gradient가 민감하게 변하는 부분을 파악하기 위해서이다.
- 1~2를 반복하여 누적해서 사용할 수 있다.
- 입력 영상에 대해 어떤 부분을 민감하게 보았는지를 파악할 수 있다.
Backpropagation-based salinecy
- 일반적으로 CNN에서는 ReLU를 사용하는데, forward pass에서 음수가 나온 부분은 0으로 masking된다.
- 그것을 다시 역전파를 하면 위의 사진과 같이 음수가 발생할 수 있지만, salinecy에서는 역전파를 할 때의 기준으로 음수를 masking을 진행한다.
CAM
- 가장 많이 사용되는 visualization 알고리즘으로 부드러운 heatmap과 같은 형태로 표현한다.
- neural network의 activation map에 GAP을 사용하여 하나의 fc layer를 통과하게 하여 최종적으로 classification을 한다.
-
위의 구조를 수식으로 표현하면 모두 선형으로 이루어져 있기에 순서를 바꿀 수 있으며, 바뀐 순서에 따라 공간정보를 포함하는 CAM부분을 표현할 수 있다.
-
이를 통해 공간 정보를 주지 않음에도 객체의 위치까지 찾을 수 있다.
-
CAM을 사용하기 위해서는 마지막 단이 GAP과 fc layer로 이루어져 있어야 하기에 모델을 변형해야하고 이로 인해 성능이 떨어지는 문제가 생길 수 있다.
Grad-CAM
- 모든 모델이 CAM처럼 설계될 수 없으므로 구조를 변경하지 않으며 CAM을 뽑을 수 있게 하는 Grad-CAM이 나타났다.
- 이전에는 입력 영상까지 역전파를 진행했다면 이번에는 우리가 관심을 가지고 있는 activation map까지만 진행한다.
- 현재 task에서 class score를 변화시키는 loss로부터 역전파 gradient를 구하게 되고, 공간축으로 GAP를 적용하여 각 채널의 gradient를 구하게 된다.
- 이를 activation map을 결합하기 위한 가중치로 사용하여 선형 결합과 ReLU를 사용하여 Grad-CAM을 나타낼 수 있다.
- 이렇게 Grad-CAM을 이용하면 CNN 뒷단이 classfier가 붙던 RNN이 붙던 상관없이 출력할 수 있다.
- 나아가 sharp하지만 class에 대한 구분성이 떨어지는 Gudided backprop와 rough하고 smooth한 특성들을 가지고 있는 grad-cam을 결합하여 사용함으로서 해당 class에 대한 전체적인 특징을 잘 나타낼 수 있는 grad-cam으로 유도할 수 있다.