이번 포스팅에서는 2012년부터 2015년에 이르기까지 CNN의 다양한 모델들에 대해 알아보겠습니다.
# 목차
1. AlexNet (2012)
2. RCNN (2013)
3. VGGNet (2014)
4. ResNet (2015)
# AlexNet - ImageNet Classification with Deep Convolutional Neural Networks
https://papers.nips.cc/paper_files/paper/2012/hash/c399862d3b9d6b76c8436e924a68c45b-Abstract.html
AlexNet은 2012년 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge) 대회에서 2등과 무려 10% 이상의 성능 차이를 선보이며 우승한 모델입니다. AlexNet이 등장하기 전에는 1~2 퍼센트 차이로 우승이 가려지는 대회였으니 당시 AlexNet은 그만큼 압도적인 성능을 보였다고 할 수 있습니다.
AlexNet의 구조와 특징에 대해 알아보겠습니다.
AlexNet 구조
AlexNet은 5개의 convolution layer 3개의 fully-connected layer 총 8개의 layer로 이루어져 있습니다. 네트워크의 크기의 한계를 극복하기 위해 GTX580 GPU 2개에 나누어 병렬식으로 훈련을 진행하였습니다. 논문에서는 각 GPU에 절반의 커널을 할당하고 특정층에서만 GPU 간의 통신이 이루어지도록 하였습니다. 따라서 위 그림을 보시면 커널이 반씩 나누어져 있고 3번째 Cnn layer는 전 단계의 두 채널의 특성맵들과 연결되어 있는 반면 두 번째, 네 번째, 다섯 번째 cnn layer는 같은 채널의 특성맵들하고만 연결되어 있는 것을 알 수 있습니다. 이와 같은 기법을 통해 top-1 error와 top-5 error을 각각 1.7%, 1.2% 줄일 수 있었습니다.
※ top-1 error, top-5 error
top-1 error는 모델이 이미지를 보고 가장 높은 확률로 예측한 label이 정답 label과 다를 확률이고 top-5 error는 모델이 예측한 상위 5개의 label에 정답 label이 없을 확률입니다.
AlexNet의 특징
AlexNet의 성능을 높이는 데는 다양한 기법들이 사용되었습니다.
- ReLU Nonlinearity
- Training on multiple GPU
- Local Response Normalization
- Overlapping Pooling
- Data Augmentation
- Dropout
(1). ReLU Nonlinearity
활성화 함수로 saturation 구간이 있는 tanh나 sigmoid를 쓰지 않고 ReLU(Rectified linear unit)을 사용한 결과 같은 정확도를 유지하면서 약 6배 빠른 성능을 보였습니다. AlexNet 이후로 활성화 함수로 ReLU를 사용하는 것이 선호되고 있다고 합니다.
(2). Training on multiple GPU
위에서 설명하였듯이 GPU 병렬화를 통해 네트워크 크기에 한계를 극복한 결과 오차율을 줄일 수 있었습니다.
(3). Local Response Normalization
모델의 일반화(generalization)를 높이기 위해 Local Response Normalization의 정규화 기법을 사용하였습니다. i번 째 kernel의 (x, y) 위치에 해당하는 값을 근접한 n개의 커널의 같은 위치에 해당하는 값들의 제곱합으로 나누어 줍니다. 이 과정을 통해 뉴런의 값이 너무 커지는 것을 방지하여 더 높은 성능을 얻을 수 있습니다.
(4). Overlapping pooling
그림과 같이 pooling kernel이 중첩되는 방식을 사용함으로 top-1, top-5 error이 줄어든데 효과가 있었습니다. 또한 훈련 과정에서 overlapping pooling을 사용할 때 과적합이 더 잘 일어나지 않았다고 합니다.
(5). Data Augmentation
과적합(overfitting) 방지를 위해 두 개의 data augmentation 기법이 사용되었습니다.
- Image translation and horizontal reflections
기존 256 x 256의 원본 이미지에서 224 x 224 이미지를 추출하고 추출된 이미지들을 수평으로 반전시켜 학습에 사용하였습니다. 이 과정을 통해 학습 셋의 크기가 2048배 증가하였습니다.
- Altering the intensities of the RGB channels
RGB 픽셀 값에 대하여 주성분 분석(PCA)을 수행하여 이미지의 밝기와 색상 변화가 일어나도 물체를 잘 감지할 수 있도록 해줍니다.
(6). Dropout
과적합을 방지하기 위해 dropout이라는 방법도 사용하였습니다. 의도적으로 0.5의 확률로 뉴런 값을 0으로 바꾸어 forward pass와 back propagation에 영향을 미치지 않도록 합니다. Dropout은 학습 시에만 적용되고 테스트 시에는 모든 뉴런을 사용하되 dropout 효과를 고려하여 모든 뉴런 값에 0.5를 곱해줍니다. 이를 통해 과적합을 방지할 수 있지만 학습시간이 증가되는 단점도 있습니다.
성과
- ILSVRC 2012에서 top-1 error 37.5% top-5 error 15.3%를 달성하며 2위 모델(top-5 error 26.2%)과 큰 성능 차이를 보여줌
결론
- CNN을 활용한 대규모 이미지 분류의 시작을 알리고 딥러닝 분야에서 획기적인 전환점을 제공
# R-CNN - Rich feature hierarchies for accurate object detction and semantic segmentation
https://arxiv.org/abs/1311.2524
R-CNN은 CNN을 region proposal과 결합한 모델로 이미지 분류에서만 성과를 보인 CNN을 객체 탐지 문제로 확장하고 SIFT, HOG와 같은 이전 방법들보다 성능을 크게 향상했습니다.
R-CNN 작동 순서
- Selective search를 통해 입력 이미지에서 약 2000개의 후보 영역(region proposal)을 생성하고 각각을 227 x 227 크기로 warp 시켜줍니다.
- Warp 된 모든 region proposal을 CNN(위 논문에서는 fine tuned 된 AlexNet 사용)에 입력하여 4096차원의 특징 벡터를 추출합니다.
- 추출된 특징 벡터를 linear SVM 모델과 Bounding box regressor 모델에 입력합니다.
- Linear SVM 모델에서는 각 region proposal이 해당 클래스에 속할 가능성을 나타내는 결정 점수를 얻습니다.
- Bounding box regressor 모델에서는 Selective search를 통해 만든 bounding box가 물체를 정확히 감싸도록 조정해 줍니다.
각 기법에 대한 자세한 설명은 다음 링크를 참고하면 좋을 것 같습니다.
https://ganghee-lee.tistory.com/35
https://herbwood.tistory.com/5
성과
- PASCAL VOC 2010 데이터셋에서 평균정확도(mAP) 53.7% 달성 (기존 최고 성능 35.1%)
- ILSVRC 2013 객체 데이터셋에서도 기존 OverFeat 방법보다 우수한 성능
결론
- Pre-training과 Fine-tuning을 결합한 학습 방식이 데이터가 적은 환경에서 높은 성능을 낼 수 있는 방법임을 보여줌
- Selective search와 같은 기존 알고리즘과 CNN의 결합이 객체 탐지에 효과적임을 보여줌
# VGGNet - Very Deep Convolutional Networks For Large-Scale Image Recognition
https://arxiv.org/abs/1409.1556
AlexNet과 같이 기존 CNN 모델들은 상대적으로 얕은 구조(5~8 layer)로 구성되어 있고 필터의 크기가 컸습니다.
VggNet은 필터의 크기를 3x3으로 고정시키고 네트워크의 깊이를 확장하여 성능을 향상할 수 있는 가능성을 제시하였습니다.
구조
- 모든 CNN 네트워크에서 3x3 필터(stride 1) 사용
- CNN과 fully connected layer을 거친 후 ReLU 활성화 함수를 사용
- 3개의 Fully connected layer
VGGNet의 특징으로는 3x3 필터만을 사용한 것입니다. 이것이 VGGNet의 구조에 미치는 영향을 알아보겠습니다.
3x3 필터만 사용하는 이유
CNN에서 필터를 거칠수록 이미지의 크기는 줄어들게 됩니다. 따라서 3x3 필터를 사용해 이미지의 크기가 크기가 큰 필터를 사용할 때 보다 적게 줄어들게 하여 층을 깊게 합니다. 위 예시를 보면 7x7 필터를 한번 사용하여 만든 feature map과 3x3 필터를 3번 사용하여 만든 feature map의 크기가 동일한 것을 알 수 있습니다. 이는 층을 깊게 할 수 있고 또한 파라미터의 개수도 더 적어지게 됩니다. 파라미터의 개수가 적다는 것은 그만큼 학습할 변수가 줄어드는 것이므로 학습의 효율성 측면에서 좋습니다.
또한 ReLU 활성화 함수를 각 층마다 사용함으로써 비선형성을 늘려 층이 깊어질수록 학습의 효과를 증폭시켰습니다.
성과
- ILSVRC 2014에서 7.3%의 top-5 error로 높은 성능을 보임
- GoogLeNet(6.7%)에 밀려 2위를 기록했지만 구성이 더 간단하고 응용하기 좋음
결과
- 네트워크의 깊이를 확장함으로써 딥러닝 모델의 성능을 극대화할 수 있음을 증명
# ResNet - Deep Residual Learning for Image Recognition
https://arxiv.org/abs/1512.03385
이전 연구들로 딥러닝 모델은 layer의 깊이가 깊을수록 더 복잡한 특징을 학습할 수 있지만 기울기 소실(gradient vanishing) 문제로 인해 오히려 성능이 떨어지는 현상이 밝혀졌습니다. Gradient vanishing이란 layer가 깊어질수록 backpropagation을 할 때 미분을 많이 해야 하기 때문에 앞의 layer들은 gradient 값이 매우 작아 update이 일어나지 않는 현상을 말합니다. 이를 극복하기 위해 ResNet이 고안되었고 ResNet은 residual learning을 통해 위와 같은 문제를 해결하였습니다.
Residual learning
위 layer을 통해 얻고 싶은 값을 H(x)라고 하면 H(x) = F(x) + x가 됩니다. 이때 네트워크가 학습해야 할 목표 함수인 H(x)를 직접 학습하는 대신 입력 데이터에 대한 잔차(residual) F(x) = H(x) - x 만을 학습하는 것이 residual learning입니다. 입력 값인 x를 추가함으로써 x를 제외한 나머지 부분인 F(x)만 학습하면 되므로 학습량이 상대적으로 줄어드는 효과가 있습니다. 또한 Identity shortcut connection을 통해 추가적인 파라미터 없이 간단하게 구현할 수 있는 장점이 있습니다.
Residual learning을 통해 gradient vanishing 문제도 해결할 수 있습니다. Residual block의 출력 값을 y = F(x) + x라고 하면 loss L에 대한 입력 x의 기울기는 다음과 같습니다.
\( \frac{\partial L}{\partial x} \) = \( \frac {\partial L}{\partial y} \) · \( \frac {\partial y}{\partial x} \)
이때 \( \frac{\partial y}{\partial x} \)는 \( \frac {\partial F(x)}{\partial x} \) + 1이므로 gradient 값에 1이 항상 더해지므로 기울기가 0으로 소실되지 않습니다.
위 그림에서는 두 층에 대한 identity shortcut connection이 나타나 있습니다. 논문에서는 두층 혹은 세 층에 적용했을 때 효과가 있었고 하나의 층에 대하여 적용했을 시에는 효과가 없었다고 합니다.
구조
논문에서는 VGG19, plain network, residual network 3가지에 대해 비교를 합니다. 그림을 보면 ResNet은 VGG19의 구조를 기반으로 CNN과 shortcut connection을 추가한 모델임을 알 수 있습니다. VGG 19에 비해 깊이가 깊어졌음에도 불구하고 연산량이 줄어들고 residual learning을 통해 더 좋은 성능을 보였습니다.
성능
Residual learning이 없는 plain network는 layer의 개수가 늘어남에 따라 성능이 감소한 반면 ResNet은 layer의 개수가 늘어남에 따라 성능이 향상되었음을 알 수 있습니다.
- ILSVRC 2015 대회에서 top-5 error 3.57%로 1위
결과
- ResNet은 residual learning을 통해 딥러닝 네트워크의 깊이를 혁신적으로 확장할 수 있는 가능성을 보여줌