[논문 리뷰] Visualizing and Understanding Convolutional Networks

전민진·2021년 11월 23일
2

Paper review

목록 보기
2/14

Abstract

본 논문은 AlexNet과 같은 우수한 성능을 보인 large convolutional network가 왜 학습 수행이 잘되는지, 그리고 좋은 성능을 만드는지에 대해 다룹니다.
CNN아키텍쳐를 구성하는 각각의 layer부터 최종 classifier까지 입력된 이미지로부터 어떻게 특징이 추출되고, 학습되는지를 시각화하여 분석하는 방법을 제시합니다. 또한 이러한 시각화 분석을 통해 기존 AlexNet대비 성능 향상을 이루게 됩니다.

1. Introduction

1990년대 LeCun의 연구를 통해서 CNN이 손글씨 인식이나 face detection등의 task에서 우수한 성능을 보인 것이 소개되었습니다.

2012년에는 AlexNet이 PASCAL VOC 데이터셋에 대하여 차등모델에 비해 약 10%나 향상된 정확도를 보였는데, 이러한 극적인 성능 향상으로 다음 3가지 요인을 뽑을 수 있습니다.

1. 레이블링된 수백만 개의 샘플들로 구성된 굉장히 큰 규모의 학습 데이터셋 제공이 가능해짐
2. 강력한 GPU파워가 제공되어, 굉장히 큰 규모의 모델의 학습들이 보급됨
3. Dropout과 같은 모델을 Regulazation하는 좋은 전략들이 연구됨

이러한 진보적인 발전에 비해, 복잡한 모델들이 어떻게 behavior하고 어떻게 좋은 성능을 얻는지, 내부적으로 어떻게 동작하는지에 대한 insight가 굉장히 부족했습니다.

그래서 본 논문에서는 모델의 모든 layer에 대한 각각의 feature map들을 자극하는 입력을 드러내기 위한 시각화 기법을 연구했고, 시각화는 학습 동안에 발생되는 feature의 진화를 관측할 수 있게 해주며 모델의 잠재적인 문제를 진단할 수 있게 해주었습니다.

이들이 제안하는 시각화 기법은 Zeiler가 제안한 Deconvolution Network를 사용하여 입력 픽셀 공간에 feature activation을 투영시키는 방법입니다. 분류를 하는데 어느 부분이 중요한 역할을 하는데 알기 위해 입력 이미지의 일부를 가리고 분류기의 출력이 이에 얼마나 민감하게 변화하는지를 분석하는 연구를 수행했습니다.

Visualization

현실에서 네트워크에 대한 직관을 얻기 위해서 시각화를 많이 수행하나, 대부분이 pixel공간으로 투영이 가능한 첫번째 레이어로 제한된 연구였습니다.

상위 레이어를 시각화하는 방법 중 하나는 unit의 activation을 최대화 하기 위해 이미지 공간의 gradient descent를 수행하여 각 unit의 최적의 stimuli를 찾아내는 것입니다.(careful initialization이 요구되며, unit invariance에 대해 어떠한 정보도 제공받지 못한다는 단점이 있습니다.)

  • unit invariance란?
    패턴인식의 관점에서 ideal한 feature란 robust하고, selective한 feature를 말합니다. hidden layer의 각각의 Unit들은 특징을 감지하는 feature detector라고 볼 수 있고, 이는 hidden unit이 표현하는 feature가 현재 입력에 존재하는 경우 강하게 반응하고, 현재 입력에 부재하는 경우 약하게 반응하는 경향을 보이는 것을 의미합니다.
    즉, invariant한 뉴런이라는 것은 입력이 특정 변환들을 거치게 되더라도 해당 feature의 high response를 유지하는 것을 의미합니다.
    (예를 들면, 어떤 뉴런이 얼굴의 특징을 탐지하는 뉴런이라고 할 때, 얼굴이 Rotate되더라도 response를 잘 해내는 것이라고 할 수 있습니다.)

상위 레이어를 시각화하는 또 다른 연구로, 주어진 unit의 Hessian이 최적의 reponse를 중심으로 수치적으로 연산되는 방법을 보여주는 연구가 있었습니다. 이를 통해 invariance함에 대해 insight를 제공했지만, 상위 레이어에 대한 invariance함이 너무 극도로 복잡하여 단순한 2차 근사로는 계산해내기 굉장히 어렵다는 문제가 있었습니다.

본 논문에서는 학습 데이터셋에 대하여 어떤 패턴이 feature map을 activate시키는지 보이기 위해, invariance를 non-parametric한 관점에서 제공한 기법을 연구하였습니다.

2. Approach

본 논문에서는 AlexNet을 기반으로 모델을 구현했습니다.

CNN의 동작을 이해하기 위해 중간의 hidden layer들의 feature activity에 대한 해석이 필요하고, 이를 위해 이러한 activity들을 input space로 다시 mapping시키는 Deconvolutional Network에 기반한 기법을 보였습니다.

Deconvnet은 convet과 같은 component(filtering, pooling등)을 사용하지만 역으로 수행하는 네트워크로, pixel이 feature로 mapping되는 과정의 반대과정이라고 생각하면 됩니다. cnn의 maxpooling대신 unpooling이, activation대신 rectification, conv대신 deconv을 수행하게 됩니다.

Unpooling

Convnet에서 Maxpooling연산은 주변에서 가장 강한 자극만을 다음 단계로 전달합니다. 그렇게 때문에, 다음 단계에서 어느 신호가 가장 강한 자극을 가지고 있었는지를 파악할 수 있는 방법이 없었습니다. 이에 본 논문에서는 switch라는 개념을 도입하게 됩니다. switch는 Maxpooling 전에 가장 강한 자극의 위치 정보를 저장해놓는 것으로, 역으로 풀링을 시행할 때 switch정보를 활용하여 가장 강한 자극의 위치를 찾아갈 수 있게 됩니다.

Rectification

본 논문에서 사용한 활성화함수는 relu함수로써, feature map들이 활성화 함수를 거치고 나면 항상 positive한 상태를 보장받습니다.

사실 relu를 한 번 거치고 나면, 양수인 부분은 그대로이기 때문에 상관이 없지만, 음수 부분은 0이 되어버려 살릴 수 있는 방법이 없는데, 본 논문에서는 음수 부분은 우리가 원하는 stimulus를 찾는데엔 영향을 끼치지 않아 문제가 되지 않았다고 합니다.

Filtering

Convnet은 이전 layer로부터 feature map을 컨볼루션 하기 위해 학습된 필터를 사용합니다. 이를 역연산 하기 위해 deconvnet은 같은 filter들의 trasposed된 버전을 사용합니다. 이 연산은 수학적으로 가역이 가능한 연산이기 때문에 문제가 될 것은 없습니다.

*참고하면 좋은 글 : https://medium.com/apache-mxnet/transposed-convolutions-explained-with-ms-excel-52d13030c7e8

3. Training Details

  • ImageNet 데이터셋의 분류 수행을 위하여 AlexNet모델을 사용
    (단, 3,4,5번째 레이어의 sparse connection을 dense coonnection으로 대체)
  • AlexNet모델은 ImageNet 2012데이터셋을 기반으로 학습
    (1.3m개의 이미지, 1000개 클래스)
  • 입력 크기는 256x256으로 먼저 cropping을 수행한 후, 224x224로 sub cropping을 수행
  • 128 minibatch size를 기반으로 SGD로 학습, learning rate은 0.01로 두고 annealing을 함
  • 학습하는 도중 첫번째 레이어의 시각화를 해보면 일부가 donimate하는 것을 확인할 수 있음
    ==> 이를 해결하기 위해 convolutional layer의 각 filter를 renormalize함
    -70 epoch이후 학습을 멈춤

이렇게 deconv과정을 거치면, 원본과 같지는 않더라도 feature가 input space에 어떻게 맵핑되는지 알 수 있습니다.
또한, 여기서 더 나아가 이를 이용해 어떤 구조가 최적의 구조인지 결정할 수 있습니다.

4. Convnet Visualization

deconvnet을 사용하여 ImageNet의 validation set에 대하여 feature activation을 시각화 하였습니다.

Feature Visualization


그림을 살펴보면 layer 1에서는 색, edge, corner와 같은 low level의 feature들을 추출하는 것을 알 수 있습니다. layer 3을 보면 layer 1,2와 달리 좀 더 high level의 feature, 사물의 texture나 어느 정도의 물체를 추출할 수 있다는 것을 알 수 있습니다. layer가 깊어질수록 더 세밀한 특징들을 잡아낸다는 것을 알 수 있습니다.
이를 보며 특징이 제대로 포착됐는지를 확인할 수 있습니다.


각각의 feature를 학습하는데에 1,2,5,10,20,30,40,64 epoch이 소요되었다고 합니다. 확실히 epoch이 커짐에 따라 특징을 제대로 추출해낸다는 것을 알 수 있습니다.

  • invariance = 불변성, 함수의 입력이 바뀌어도 출력은 그대로 유지되어 바뀌지 않는 것

그림에서 행의 a는 사진을 translation했을 때, b는 scale했을 때, c는 rotation했을 때를 의미합니다. a,b,c2와 a,b,c3는 layer 1과 layer 7에서 원본과 변형된 이미지의 feature vector사이의 Euclidean distrance를 나타낸 그래프이고, a,b,c4는 각 이미지에 변형됨에 따라 각 이미지를 옳게 분류할 확률을 나타냅니다.

layer 1에서는 작은 변화에도 민감하게 변화하지만, layer 7에서는 불변성이 얻어지는 것을 확인할 수 있습니다.


본 연구에서는 시각화를 통해 보다 더 좋은 모델을 만드려고 했고, 그러한 탐색 과정을 통해 input단에서 첫번째 레이어로 넘어갈 때 AlexNet에서는 사용한 11x11 필터 대신 7x7 필터를 사용하는 것이 낫다는 것을 알게 되었습니다.

b가 기존의 AlexNet의 첫번째 레이어에서 추출한 특징들이고, c가 본 연구의 첫번째 레이어에서 추출한 필터들입니다. 작은 stride와 필터 크기로 더 distinctive한 특징들과 적은 죽은 특징들을 추출해낸다는 것을 알 수 있습니다. d는 기존 AlexNet의 2번째 레이어에서 추출한 특징이고, e는 본 연구의 2번째 레이어의 특징들입니다. 역시 본 연구에서 만든 모델이 더 선명하게 특징을 추출하는 것을 볼 수 있습니다.


마지막으로, 본 논문의 저자들은 cnn이 물체의 위치까지 정확히 파악을 해준다는 것을 알 수 있었습니다. 이를 확인하기 위해 물체의 일부를 회색 박스로 가려서 학습을 진행하였고, 물체를 가리면 이를 제대로 분류해낼 가능성이 급격히 떨어지는 것을 역으로 확인해내는 방법을 사용했습니다.

b와 c는 layer 5에서 가장 강한 feature map의 heatmap과 projection을 나타낸 것이고, d와 e는 classifier의 출력값을 나타낸 것입니다.

b는 가리는 부분에 따라서 layer 5의 activation이 어떻게 달라지는지를 보여주는데, 강아지 사진을 보면 회색 박스가 강아지의 얼굴을 가리면 activation이 떨어지는 것을 확인할 수 있습니다. c에서 검은 사각형으로 표시된 부분은 가장 강한 activation을 input space에 맵핑시켰을 때를 보여줍니다.
d는 classifier의 출력에 대해 이미지의 특정 부분을 가렸을 때 이미지를 제대로 분류하는지 확률적으로 나타낸 것입니다. 마지막으로 e는 가리는 영역에 따라 분류가 어떻게 달라지는지를 보여줍니다.

profile
per ardua ad astra

0개의 댓글