본 글에서 요약해볼 논문은 시각화를 통해 CNN에 대해서 이해보는 논문인 'Visualizing and Understanding Convolutional Network'입니다.
Thesis Link: arXiv - Visualizing and Understanding Convolutional Networks
Abstract 🍅
- 본 논문이 작성될 당시, Large한 Convolutional Neural Network(이하 CNN)모델들은 ImageNet 벤치마크에서 인상적인 분류 성능을 보여줬다.
- 하지만 '왜 좋은 성능을 보이는가?', '어떻게 성능이 향상됬는가?'에 대해서는 명확하게 알 수 없었다.
- 그렇기에 본 논문에서는 위 두 문제에 초점을 두어 내용을 서술한다.
- 중간에 있는(intermediate) feature layer의 기능과 classifier의 작동에 insight를 제공하는 새로운 시각화 기술을 소개하며, 시각화를 바탕으로 ImageNet 분류 벤치마크에서 Krizhevsky을 능가하는 아키텍처를 찾을 수 있었다고 표현한다.
Introduction 🍩
- 논문이 작성될 당시의 SOTA나 좋은 성능을 보였던 다른 논문들은 수 많은 라벨링된 트레이닝 셋, GPU 환경, Dropout 정규화 등을 적용함으로서 좋은 성능을 만들어냈다.
- 이러한 발전에도 불구하고, 복잡한 모델의 내부 작동과 동작 또는 어떻게 좋은 성능을 내는지 아는 것이 없었다. 저자는 이에 대해 '과학적 관점에서 볼 때 매우 불만족스럽다.'라고 표현한다.
- 작동 방식과 이유(How & Why)에 대한 명확한 이해없이 더 나은 모델 개발은 시행착오로 밖에 제한된다.
- 본 논문에서는 모든 계층의 개별 feature map을 활성화시키는 입력 자극(stimuli)을 보여주는 시각화 기법을 소개한다.
- 이 시각화 기법은 Zeiler가 제안한 Deconvolutional Network를 사용하여 입력 pixel 공간에 feature activation을 투영시키는 방법이다.
- 이를 통해 학습 중 feature의 발전(evolution)을 관찰하고 모델의 잠재적인 문제를 확인할 수 있다.
- 또한 입력 이미지의 일부를 가려 classifier의 output의 민감도 분석을 수행하여 장면의 어느 부분이 분류에 중요한지 확인할 수 있다.
- 위 내용을 바탕으로 아키텍쳐를 탐색하여 ImageNet에서 좋은 성능을 보이는 아키텍쳐를 찾게 된다.
- 네트워크에 대한 직관을 얻기 위해 feature를 시각화하는 것은 일반적인 관행이지만, 대부분 투영이 가능한 것은 첫 번째 계층으로 제한된다.
- 해당 레이어를 시각화 하는 방법 중 하나는 unit의 activation을 최대화 하기 위하여 이미지 공간의 gradient descent를 수행하여 각 unit의 최적의 stimuli를 찾아내는 것이지만, careful initialization이 요구되며, unit의 invariance에 대한 어떠한 정보도 제공받지 못하는 단점이 있다.
- 시각화에 대한 또 다른 연구로, 주어진 unit의 Hessian이 최적의 response에 얼마나 수치적으로 연산될 수 있음으로써 invariance함에 대한 insight를 제공해주는지에 대한 연구도 있지만, 상위 레이어들에 대해 invariance함이 너무 극도로 복잡하여 단순한 2차 근사로는 계산해내기가 굉장히 어려운 문제가 있다.
- 본 논문에서는 학습 데이터셋에 대하여 어떤 패턴이 feature map을 활성화시키는지 보이기 위해 invariance를 non-parametric한 관점에서 제공한 기법을 연구했다.
Approach 🎾
- 본 논문에서 사용된 모델은 AlexNet을 기반으로 구현했다.
- CNN의 동작을 이해하기 위해서는 중간의 hidden layer들의 feature activity에 대한 해석이 요구됨에 따라서, 이러한 activity들을 input space로 다시 mapping시키는 Deconvolutional Network에 기반한 기법 보였다.
- Deconvnet은 convnet과 같은 component(filtering, pooling)등을 사용하지만 역으로 수행되는 네트워크로, pixel이 feature로 mapping되는 과정의 반대과정이라고 생각하면 된다.
- 이들 switch setting은 주어진 image에 peculiar하기 때문에, 하나의 activation으로부터 얻게되는 reconstruction을 여러개를 resemble하면 original 입력 image의 일부분을 얻을 수 있다.
- 모든 처리과정은 마치 single strong activation을 Backproping 하는 것과 유사하다.
- Reconstruction path에서 normalization을 수행하지 않는 것에 주의해야 한다.
Unpooling 🧶
- Convnet에서 Maxpooling 연산은 non-invertible(의역: 역으로 계산할 수 없는)한 연산이다.
- 그 이유는 Maxpooling은 영역 내의 가장 큰 값을 취하고 나머지는 버리는 연산으로, 정보의 소실 때문이다.
- 하지만 각 pooling 영역의 maximum 값의 location 정보들을 저장한 것을 switch variable의 집합이라고 표현하는데, 이 set of switch variables를 기록함으로써 inverse를 근사하는 값을 얻어낼 수 있다.
- Deconvnet에서 Unpooling 연산은 이러한 switch들을 layer로부터 reconstruction하는 과정에서 적절한 위치를 잡게 해줌으로써 stimulus의 구조를 보존하도록 하는 역할을 한다.
Rectification 📈
- 본 논문에서 사용한 Convnet은 비선형 relu 함수로써, feature map들이 rectify 됨으로써 feature map들이 항상 positive한 상태를 보장 받는다.
- 따라서 각 레이어에 대한 유효한 feature reconstruction을 얻기 위해서는 비선형함수인 relu에 reconstruct된 신호를 통과시켜야 한다.
Filtering 🥅
- Convnet은 이전 layer로부터 feature map들을 convolve하기 위해 학습된 filter들을 사용한다.
- 이를 근사하게 inverse(역으로 되돌리기)하기 위하여 deconvnet은 같은 filter들의 transposed된 버전을 사용한다.
Ex) AutoEncoder
Training Details 🎛
- 위에서 말했던 것 처럼, 본 논문에서 사용된 모델은 AlexNet을 기반으로 구현했다.
- 3, 4, 5번째 레이어의 sparse connection을 dense connection으로 대체했다.
- 1st layer filter size, stride 변경
- filter size: 11x11 -> 7x7
- stride: 4 -> 2
- ImageNet 2012데이터셋을 기반으로 학습
- 입력 크기는 256x256으로 resize후, cropping을 수행한 후, 224x224으로 sub cropping한다.
- 128 minibatch size를 기반으로 SGD로 학습, learning rate은 0.01로 두고 annealing을 한다.
- 학습하는 도중 첫번째 레이어의 시각화를 수행하면, 일부가 dominate하는 것을 확인할 수 있다.
- Dropout은 fully-connected layer에 적용되었으며 0.5의 rate를 가진다.
- 모든 가중치는 0.01로, Bias는 0으로 초기화 했다.
- 70 epoch 학습 후, GTX 580으로 12일간 학습시켰다.
Convnet Visualization 🖼
- Layer 1,2 : edge나 color처럼 low-level feature를 시각화 하고 있습니다.
- Layer 3 : 더 복잡한 invariance(항상성)를 가지거나, texture를 보여주는 feature에 대해 시각화 하고 있습니다.
- Layer 4 : 사물이나 개체의 일부분을 보여주는 feature를 시각화 하고 있습니다. (개의 얼굴, 새의 다리)
- Layer 5 : 사물이나 개체의 위치 및 자세 변화를 포함하는 전체 모습을 시각화 하고 있습니다.
- 각각을 개별적으로 픽셀 공간으로 투영하면 주어진 피쳐 맵을 자극하는 다양한 구조가 드러나므로 입력 변형에 대한 불변성을 보여준다.
- 작은 변환은 모델의 첫 번째 레이어에 극적인 효과를 주지만, 상위 피처 레이어에 미치는 영향은 적어 번역 및 크기 조정에 대해 유사하다.
- layer가 깊어질 수록 feature 생성 및 시각화 되려면, 학습 epochs가 어느 정도 진행되어야 함을 보여주고 있다.
- 40 epochs이상 되어야 feature가 선명해지고 있는데, 이러한 시각화를 통해 학습에 적절한 epochs 수도 결정할 수 있게 된다.
- 이동, 크기, 회전에 있어서도 CNN의 특징중 하나인 invariance한 특성을 볼 수 있습니다. 마지막 layer로 갈수록 이동, 크기, 회전에 큰 영향을 받지 않고, 원본 이미지가 어떤 것인지 식별하게 된다.
- 이미지에 있어서 개체의 위치를 인식하는지도 본 논문에서는 실험하였는데, 이미지를 대표하는 특징이 있는 부분을 회색 박스로 가리면, 인식율이 떨어짐을 확인됬다.
- 기존의 AlexNet의 layer 1의 filter size, stride를 변경후 시각화된 feature를 보면 기존의 AlexNet대비 feature수가 증가하였다.
- 그리고 feature들이 선명해지고, anti-aliasing 현상이 없어지는 것을 볼 수 있다.
Discussion 🧨
- 특징이 무작위적이고 해석 할 수없는 패턴과는 거리가 멀다는 것을 보여준다.
- 구성성, 불변성 증가 및 계층 상승에 따른 클래스 차별과 같은 직관적으로 바람직한 많은 속성을 보여준다.
- 또한 이러한 시각화를 사용하여 모델의 문제를 debug하여 더 나은 결과를 얻는 방법을 보여준다.
- 모델에 대한 절제 연구에 따르면 개별 섹션이 아닌 네트워크 깊이를 최소화하는 것이 모델 성능에 매우 중요하다.
New Knowledge 🪕
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를 잘 해내는 것이라고 할 수 있습니다.
Reference: Visualizing and Understanding Convolutional Networks 논문 정리
non-invertible 🪁
Task 🤔
- sub cropping이 정확히 무엇인가? 🪓
- 논문 속 'invariance'의 의미가 정확히 무엇인가? 🗿
- 논문 속 Krizhevsky에 대한 추가적인 정보 조사하기 🛍
- "Motivated by the latter’s short-coming, show how the Hessian of a given unit may be computed numerically around the optimal response, giving some insight into invariances."의 정확한 의미 이해하기 👑