본문 바로가기

Deep Learning/Convolution Model

[딥러닝 모델의 결정처리과정 이해 1단계-시각화] Visualizing and Understanding Convolutional Networks 논문 정리

Visualizing and Understanding 

Convolutional Networks


저자 : Matthew D. Zeiler, Rob Fergus

(ECCV 2014)


* Abstract

- Alexnet을 시작으로 굉장히 Large한 CNN모델이 Imagenet 벤치마크에서 상당히 인상적인 성능을 보여주었으나,

  왜 그러한 모델들이 잘 동작하는지, 어떻게 개선이 된 것인지에 대한 명확한 이해는 없음


- 본 논문은 intermediate feature layer들과 분류기의 operation에 대한 함수의 통찰력을 제공해주는 새로운 

  시각화 기법을 제안함


- 저자들은 서로다른 레이어들이 성능에 미치는 기여도를 확인하기 위해 하나씩 제거해보는 연구를 수행해보았다고 함 


* Introduction

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


- 2012년에 Alexnet이 PASCAL VOC 데이터 셋에 대하여 차등모델에 비해 약10%나 향상된 정확도를 보였는데,

  극적인 성능향상은 다음의 세가지 요인에 의하여 이루어질 수 있었음

 

  1. 레이블링된 수백만개의 샘플들로 구성된 굉장히 큰 규모의 학습셋 제공이 가능해짐 (빅데이터의 제공)

  2. 강력한 GPU파워가 제공되어 굉장히 큰 규모의 모델들의 학습이 practical해짐.

  3. Dropout과 같은 모델을 Regularization하는 좋은 전략들이 연구됨


- 이러한 진보적인 발전에 비하여 이러한 복잡한 모델들이 어떻게 behavior하고 어떻게 좋은 성능을 얻는지, 내부적으로

  어떻게 동작하는지에 대한 Insight가 굉장히 부족함


- 논문의 접근 

    -> 모델의 모든 layer에 대한 각각의 feature map들을 자극하는 입력 stimuli를 드러내기 위한 시각화 기법을 연구

        시각화는 학습동안에 발생되는 feature의 진화를 관측할 수 있게 해주며 모델의 잠재적 문제를 진단할 수 있게 해줌


    -> 이들이 제안하는 시각화 기법은 Zeiler가 제안한 Deconvolution Network를 사용하여 입력 Pixel 공간에 

         feature activation을 투영시키는 방법


    -> 분류를 하는데 어느 부분이 중요한 역할을 하는지 알기 위해 입력 이미지의 일부를 가리고(occlude) 분류기의 출력이 

        얼마나 민감하게 변화하는지 분석하는 연구를 수행함


- 논문의 관련연구

   -> Visualization

+ 현실에서 네트워크 직관을 얻기위하여 시각화를 많이 수행하나 대부분이 Pixel공간으로 투영이 가능한 1번째 레이어로 제한된 연구


+ 상위레이어를 시각화 하는 방법 중 하나는 unit의 activation을 최대화 하기 위하여 이미지 공간의 gradient descent를 수행하여

   각 unit의 최적의 stimuli를 찾아내는 것  

   (careful initialization이 요구되며, unit의 불변*에 대한 어떠한 정보도 제공받지 못하는 단점이 있음) 


+ 상위레이어를 시각화 하는 또 다른 연구로, 주어진 unit의 Hessian이 최적의 response에 얼마나 수치적으로 연산될 수 있음으로써

   invariance함에 대한 insight를 제공해주는지에 대한 연구가 있었음

   (상위 레이어들에 대해 invariance함이 너무 극도로 복잡하여 단순한 2차 근사로는 계산해내기가 굉장히 어려운 문제가 있음)


+ 본 논문에서는 학습 데이터셋에 대하여 어떤 패턴이 feature map을 activate시키는지 보이기 위해 invariance를 non-parametric한 

   관점에서 제공한 기법을 연구함 


+ 본 논문의 관점은 본 논문에서 사용하는 Convolution layer 대신 Convnet의 Fully connected layer로부터 투영하여 saliency map을

   얻는 기법과 상당히 유사하다고 볼 수 있음


   -> Feature Generalization

+ "A deep convolutional activation feature for generic visual recognition" 연구에 기반하여 CNN feature의 generalization ability

   를 설명함


======================================================================================== 

    Unit's Invariance?

-> 패턴인식의 관점에서 Ideal한 feature란 robust하고 selective한 feature를 말합니다. Hidden layer의 Unit들은

    feature detector로 해석될 수 있으며, 이는 hidden unit이 표현하는 feature가 현재 입력에 존재하는 경우 

    strongly respond하고 현재 입력에 부재하는 경우 weakly respond하는 경향을 보이는 것을 의미합니다. 

    

-> Invariant 한 뉴런이라는 것은 입력이 특정 변환들을 거치게 되더라도 해당 feature로의 high response를 유지하는 

    것을 의미합니다.

     (예를 들면, 어떤 뉴런이 얼굴의 특징을 탐지하는 뉴런이라고 할때, 얼굴이 Rotate되더라도 response를 잘 해내는 것이라고 할 수 있습니다.)


 "Measuring Invariances in Deep Networks"논문 참고

 

========================================================================================


* Approach 


- 본 논문에서는 표준 fully supervised convent모델인 Alexnet을 사용함

   (Alexnet은 너무나 잘 알려져 있기 때문에 이 내용에 대해서는 생략하겠습니다.)


-  Visualization with a Deconvnet

    + CNN의 동작을 이해하기 위해서는 중간의 hidden layer들의 feature activity에 대한 해석이 요구됨에 따라서, 이러한 activity들을 

       input space로 다시 mapping시키는 Deconvolutional Network에 기반한 기법을 보임 


    + Deconvnet은 convnet과 같은 component(filtering, pooling)등을 사용하지만 역으로 수행되는 네트워크. 

       즉, pixel이 feature로 mapping되는 과정의 반대과정이라고 생각하면 됨


[ 그림 1. Unpooling을 통해 feature map을 image로 reconstruction하는 과정 ]


    + Convnet을 examine하기 위하여, deconvnet이 각각의 layer에 부착되며(그림 1 참고), Image pixel들까지 다시 되돌아오는 경로가 제공됨


    + [그림 1]을 통해 바라보는 시각화 과정 순서

1. 입력 Image가 convnet에 제공되고 feature가 각 layer를 통과하여 계산됨.


2. 주어진 convnet의 activation을 examine하기 위해서 layer 내의 모든 activation들을 0으로 setting하고 feature map을 통과하게

    함으로써 부착된 deconvnet layer의 입력이 되도록 함


3.1 Unpooling을 수행


3.2 Rectification을 수행


3.3 Filtering을 수행하여 layer아래의 activity들을 reconstruct해줌으로써 선택된 activation의 시각화를 수행

    ================================ ================================ ================================

    -> 1. Unpooling

           Convnet에서 Maxpooling 연산은 non-invertible(역을 계산할 수 없는)한 연산

=> Maxpooling은 영역 내의 가장 큰 값을 취하고 나머지는 버리는 연산이기 때문에, 이에 대한 역으로의  연산은 정보의 소실로 불가능


       하지만, 각 pooling 영역의 maxima값의 location 정보들을 저장한 것을 switch variable의 집합이라고 표현하는데

      이 set of switch variables를 기록함으로써 inverse를 근사하는 값을 얻어낼 수 있음

      

      Deconvnet에서 Unpooling 연산은 이러한 switch들을 layer로부터 reconstruction하는 과정에서 적절한 위치를 잡게 해줌으로써

      stimulus의 구조를 보존하도록 하는 역할을 함

      

    -> 2. Rectification

           본 논문에서 사용한 Convnet은 비선형 relu 함수로써, feature map들이 rectify 됨으로써 feature map들이 항상 positive한 상태를 

      보장 받음

   

             따라서 각 레이어에 대한 유효한 feature reconstruction을 얻기 위해서는 비선형함수인 relu에 reconstruct된 신호를 통과시켜야함


    -> 3. Filtering

      Convnet은 이전 layer로부터 feature map들을 convolve하기 위해 학습된 filter들을 사용

      이를 근사하게 inverse 하기 위하여 deconvnet은 같은 filter들의 transposed된 버전을 사용(Auto encoder나 RBM같은)

        => 하지만, 레이어 아래의 출력이 아니라 rectified된 map들에 적용

      (이는 각 필터를 수직과 수평적으로 flipping하는 것을 의미)

    ================================ ================================ ================================

    + Reconstruction path에서 normalization을 수행하지 않는 것에 주의해야함


    + 상위 레이어에서 하위로 Projecting하는 것은 convnet이 inference연산을 하는 과정중 max pooling을 통해 생성된 switch setting을 사용


    + 이들 switch setting은 주어진 image에 peculiar하기 때문에, 하나의 activation으로부터 얻게되는 reconstruction을 

      여러개를 resemble하면 original 입력 image의 일부분을 얻을 수 있음


    + 모든 처리과정은 마치 single strong activation을 Backproping 하는 것과 유사하며, 수식으로 표현하면 다음과 같음

      (단, relu가 독립적으로 impose되고, normalization이 사용되지 않음)


   

    +++ 논문에서 제안하는 General Shortcomming Approach 의 결점

    + single activation을 시각화 하는것(이전 레이어의 joint acitvity를 시각화 하는 것이 아님)

        

                         

* Training Details

- ImageNet 데이터셋의 분류 수행을 위하여 AlexNet모델을 사용

   (단, 3,4,5번째 레이어의 sparse connection을 dense connection으로 대체함)


- AlexNet모델은 ImageNet 2012데이터셋을 기반으로 학습 

   (1.3m개의 이미지, 1000개 클래스) 


- 입력크기는 256x256으로 먼저 cropping을 수행한 후, 224x224로 sub cropping을 수행


- 128 minibatch size를 기반으로 SGD로 학습, learning rate은 0.01로 두고 annealing을 함


- 학습하는 도중 첫번째 레이어의 시각화를 수행하면, 일부가 dominate하는 것을 확인할 수 있음

   => 이를 해결하기 위해 convolutional layer의 각 filter를 renormalize함


- 70 epoch이후 학습을 멈추고 12일간 GTX580으로 학습시킴


[ 그림 2. 논문에서 사용한 모델의 구조 ]


* Convnet Visualization Result


[ 그림 3. 학습된 모델의 feature들을 시각화한 결과 ]


[ 그림 4. 학습이 되면서 랜덤하게 선택된 모델의 feature의 subset들이 진화하는 과정 ]



[ 그림 5. stronggest feature map projection으로 시각화함으로써 입력된 이미지가 어떠한 부분에 중점을 두고 classification되었는지 알 수 있음]