이 글은 A Survey of Convolutional Neural Networks: Analysis, Applications, and Prospects 해당 논문에서 Classic CNN Models 부분을 보고 작성되었습니다.
LeNet-5
CNN의 기초가 되는 모델이다. 최초로 Convolution Neural Network(CNN) 개념을 실질적으로 도입하고 성공한 사례이다.
subsampling(pooling), 가중치 공유 등 CNN의 기본 개념에 나오는 기술들을 사용했다.
하지만 SVM과 부스팅알고리즘을 뛰어넘지 못해 관심을 못 받은 비운의 CNN 모델이다
AlexNet
LeNet을 기반으로 만든 CNN 모델이다. 더 깊고 넓은 신경망을 적용했다.
더 깊고 넓은 신경망을 사용하니 gradient vanishing 문제 같은 여러 문제가 발생했고 이에 따라 여러 기술들을 적용하였다.
AlexNet의 주요 혁신 기술
- ReLU 활성화 함수 사용
신경망이 깊어질 때 발생하는 gradient vanishing 문제를 완화한다.
하지만 발명한 것이 아니라 활용한 것이다. - Dropout 기법
학습중 일부 가중치를 Dropout함으로써 over fitting을 방지한다.
주로 마지막 몇 개의 Fully-connected layer에 쓰인다. - Overlapping Max Pooling
stride가 kernel size 보다 작은 max pooling을 사용한다. - LRN (Local Resopnse Normalization)
한 픽셀의 매우 높은 값이 그 주변 픽셀에도 영향을 미치지 않도록 정규화 하는 것이다. - 그룹 컨볼루션 및 GPU 활용
GPU 연산 자원 제한을 극복하기 위해 강력한 두 개의 GPU로 생성된 feature map을 결합하여 최종 출력을 만들어 낸다. - 데이터 증강 기법
랜덤 자르기, 수평 반전, RGB 채널의 주성분 분석으로 픽셀 값을 조금 변화 등을 사용하여 Overfitting을 방지하고 일반화 성능을 향상시킨다.
VGGNets
개선점
- LRN (Local Response Normalization) 계층 제거
Deep CNN에서 LRN의 효과가 미미하다는 것을 발견하고, 제거하였다. - 3 x 3 합성곱 커널 사용
VGGNet은 5 x 5, 7 x 7 커널 대신 3 x 3 합성곱 커널을 여러 개 사용했다.
여러 개의 3 x 3 커널은 5 x 5, 7 x 7 커널과 같은 receptive field를 가지면서도 매개변수를 약 45% 감소시키고, 추가적인 비선형 구조를 가질 수 있게 해준다.
GoogLeNet
GoogLeNet은 Inception 모듈을 쌓아 만든 최초의 대규모 CNN이다.
Inception 모듈은 4가지 버전이 있다.
Inception v1
이미지에서 큰 객체는 큰 커널이나 여러 개의 커널이 feature map을 잘 만들고, 작은 객체는 반대이다.
큰 커널은 매개변수가 많고, 네트워크가 깊을 수록 학습이 어렵다.
이러한 단점을 해결하기 위해 Inception v1은 1 x 1, 3 x 3, 5 x 5 커널을 함께 활용하여 넓은 네트워크를 구성한다.
여러 종류의 커널을 사용하면 다양한 스케일의 feature map을 추출할 수 있다.
이렇게 얻어진 feature map을 합쳐서 더욱 특징을 잘 표현하는 feature map을 얻을 수 있다.
Inception v2
Batch Normalization을 활용해서 layer마다 input data의 distribution이 바꾸는 현상인 Internal Covariate Shift를 막았다.
매 layer마다 input data를 정규 분포로 정규화 함으로써 모델의 성능을 높이고 큰 Learning rate를 사용하여 학습을 가능하게 했다.
아래의 그림과 같이 5 x 5 합성곱 층을 2개의 3 x 3 합성곱 층으로 대체할 수 있음을 보였고, 하나의 n x n 합성곱 층을 n x 1과 1 x n 합성곱 층으로 분해할 수도 있음을 보였다.
위와 같은 인자 분해(factorization) 기법은 초기 층에서는 효과적이지 않으며, 중간 단계에서 사용하는 것이 더욱 적절하다고 한다.
필터 뱅크(filter banks) 위 그림과 같이 많은 커널을 쓰는 기법은 깊게 쌓는 것보다 넓게 확장하는 것이 고차원 표현력을 향상시키는데 유리하다고 설명한다.
Inception v3
Inception v3는 v2에서 언급된 혁신들을 사용하였다.
5 x 5 및 3 x 3 커널을 두 개의 1차원 커널 5 x 1, 1 x 5 와 3 x 1, 1 x 3으로 분해하여 학습한다.
이러한 기술은 파라미터를 줄여 학습속도를 가속화하고 네트워크의 깊이와 비선형성을 더욱 향상시켰다.
그 외에도 RMSProp을 사용했다.
Inception v4
Inception v4는 추가된 점이 별로 없다.
논문에서는 v4가 v3보다 더욱 간결해졌고 더 많은 Inception 모듈을 활용했으며, 전 모델보다 뛰어난 성능을 보여주었다고 한다.
추가적으로, ResNet 구조가 적용되어 Inception 네트워크 깊이를 확장한 Inception-ResNet-v1과 Inception-ResNet-v2가 도입 되었고 성능을 개선했다.
ResNet
심층 신경망은 얕은 신경망보다 더 우수한 성능을 보여준다.
하지만 층이 깊어짐에 따라 기울기 소실(gradient vanishing) 및 기울기 폭발(gradient exploding) 등의 문제를 일으키기 쉽다.
ResNet의 중요한 혁신중 하나는 숏컷(shortcut) 연결을 활용하여 구성된 2층짜리 잔차 블록(residual block)이다. 그림 (a)
50층 ResNet, 101층 ResNet, 그리고 152층 ResNet은 2층짜리 블록 대신 위 그림 (b)와 같은 3층짜리 잔차 블록을 사용한다.
3층 잔차 블록은 양 끝이 가운데 보다 좁기 때문에 병목 모듈(bottleneck module)이라고 불린다.
1 x 1 커널은 파라미터 수를 줄이고 네트워크의 비선형성을 증가 시킨다.
숏컷연결은 기울기가 직접 흐를 수 있어 gradient vanihing 문제를 해결할 수 있다.
마무리
CNN survey 논문을 보면서 내가 얼추 생각하고 있었던 CNN의 개념들이 정확히 정립되었고, 초기 CNN부터 발전한 CNN까지의 여러 기술들을 배울 수 있어 정말 좋은 경험이었다.
이번 논문이 끝나면 객체 탐지 논문을 읽을 예정인데 빨리 이 논문을 끝내고 여러 기술들을 탐구하고 싶다는 마음이 커지게 되었다.
이번 글에서는 내가 생각하기에 LeNet을 기반으로 만들어진 CNN 모델들에서 혁신들을 살펴보았다.
다음 글에서는 Classic CNN Models 부분에 나와있는 다른 CNN 모델들에서 만들어진 혁신들을 살펴보겠다.