논문 링크: https://arxiv.org/pdf/1409.1556
한 줄 정리
- ConvNet의 깊이가 대규모 이미지 분류 성능에 미치는 영향 체계적으로 분석한 논문
- 모든 층에 3 x 3 필터 사용하여 파라미터 수 감소, 비선형성 강화, receptive field 확대
- 1 x 1 필터도 사용하여 비선형성 강화
- 단순히 깊이를 크게 확장하는 것만으로도 일반 ConvNet 아키텍처에서 최첨단 성능 달성, 다양한 데이터셋에 잘 일반화
기존 방법론과 한계
ConvNet는 이미지 관련 task에서 큰 성능 향상을 이뤘다. 이는 이미지 데이터셋의 크기가 점점 커지고 GPU나 대규모 분산 클러스터와 같은 고성능 컴퓨팅 시스템의 발전 덕분에 가능했다고 한다.
하지만 기존 ConvNet은 깊이가 그다지 깊지 않았다.
VGGNet
본 논문에서는 ConvNet의 깊이에 주목했다. 때문에 다른 파라미터는 고정한 채 모든 레이어에서 매우 작은 3 x 3 convolution필터를 사용해 점진적으로 합성곱 층을 추가함으로써 네트워크 깊이를 늘렸다.
CNN의 깊이가 정확도에 미치는 영향은 뭘까? 원래는 gradient vanishing/exploding 때문에 네트워크의 깊이를 깊게 쌓지 않았다. 하지만 이를 해결한다면 깊이가 깊을수록 정확도가 향상되지 않을까? 에 대한 답을 제시한 것이 바로 VGG이다.
실제로 VGG는 3 x 3 convolution 필터를 사용하여 깊이를 점차 늘려가며 16~19개의 가중치 층으로 확장하였고, 기존 구조보다 성능을 크게 향상시켰다.
ConvNet 구성

깊이에만 집중하기 위해서 ConvNet의 구성은 동일한 원칙에 따라 설계되었다.
- 입력: 224 x 224 RGB 이미지
- 전처리: train 데이터셋에서 계산된 평균 RGB 값을 각 픽셀에서 빼줌
- 전체 구조
- 아키텍처마다 다른 컨볼루션 레이어 수
- 컨볼루션 레이어 뒤에 3개의 FC layer 존재
- Softmax 존재
- 합성곱 필터
- stride: 1로 고정
- padding: convolution 연산 이후에도 공간 해상도를 유지하도록 설정
- 매우 작은 receptive field를 가지는 3 x 3 필터 사용
- 좌우, 상하, 중심 개념을 포착할 수 잇는 최소 크기라고 논문에선 언급
- 이때의 padding은 1픽셀
- 1 x 1 필터도 사용
- 이는 비선형성을 추가로 포함하기 위해 넣어준 것
- 왜냐하면 필터 적용 후 활성화 함수를 적용시키기 때문
- 공간적 pooling: 5개이 max pooling 레이어에 의해 수행됨 (일부 convolution 레이어 뒤에 배치됨)
- max pooling: 2 x 2 window에 대해 stride 2
- FC layer
- 3개 중 앞 2개는 각각 4096 채널을 가짐
- 마지막 레이어는 1000-way ILSVRC classification을 수행하여 1000개이 채널을 가짐
- 모든 hidden layer는 ReLU 비선형 활성화 함수를 사용
- 또한 대부분의 아키텍처에서 Local Response Normalisation(LRN)를 포함하지 않음
- 성능 향상을 가져오지 않고 메모리와 계산량이 늘어남

전체 아키텍처는 다음과 같다.

깊이가 깊음에도 불구하고 파라미터 수가 많지 않은 것을 확인할 수 있다. 이러한 이유는 뭘까?
바로 3 x 3 필터를 사용했기 때문이다. 기존의 다른 모델들을 상대적으로 큰 receptive field를 가지게 하기 위해서 11 x 11 이나 7 x 7의 필터를 사용했다. 하지만 VGG는 3 x 3 필터를 사용한다.

3 x 3 필터와 5 x 5 필터를 비교해보면 3 x 3을 2번 거쳤을 때 5 x 5를 한 번 한 것과 똑같다. 하지만 파라미터의 수는 줄어든다.
만약 3 x 3 필터를 3번 하면 7 x 7 이 가지는 receptive field와 같아지는데 이때도 파라미터 수는 줄어든다. 왜 파라미터 수가 줄어드는지, 왜 3 x 3 을 쓰는지는 다음 이유가 있따.
① 3 x 3을 3개 사용하면서 비선형 활성화 함수를 더 많이 도입하게 되어 비선형성을 더 도입할 수 있다는 장점이 있다.
② 파라미터 수가 줄어든다.
입출력의 채널을 모두 C라고 할 때 3개의 3 x 3 layer는 3 x (3^2 C^2) = 27C^2, 7x7 layer는 7^2C^2 = 49C^2 개의 파라미터 개수를 가져 약 81% 더 많은 것을 알 수 있다.
또한 1 x 1 필터를 사용하는 이유도 앞서 언급한 바와 같이 비선형성을 높이기 위한 방법이다.
Classification Framework
ConvNet의 학습 절차는 다음과 같다.
미니배치 SGD를 사용하고 Momentum을 활용해 다항 로지스틱 회귀 목적 함수를 최적화하는 것을 목적으로 한다.
- 배치 크기: 256
- 모멘텀: 0.9
- 정규화: 가중치 감쇠(L2 페널티 계수 5x10^{-4} & 드롭아웃(첫 두 개 FC 계층에 적용, 비율 0.5)
학습률은 처음에 10^{-2}로 설정하고 validation 정확도가 개선되지 않을 때마다 10배씩 감소시켰다. 총 3회 감소시키고 37만회 반복 (74 에폭) 후 학습을 종료했다. AlexNet보다 좀 더 적은 에폭으로 수렴하였는데 본 논문에서는 이러한 이유가 더 깊은 구조와 자은 필터 사이즈가 정규화를 제공한다는 점, 일부 레이어를 사전 초기화했다는 점 때문이라고 언급한다.
가중치 초기화에 대한 중요성도 논문에서 언급한다. 잘못된 초기화는 깊은 네트워크에서 기울기 불안정성을 유발해 학습을 막을 수 있기 때문이다. 추후 가중치 초기화에 대한 방법들이 나와서 (He 초기화나 Xavier 초기화) 점차 해결된다. 하지만 본 논문에서는 따로 사전학습을 진행해 초기화해주었다.
Classification Experiments
데이터셋은 ILSVRC-2012 데이터셋을 사용하며 이 데이터셋은 1000개 클래스의 이미지를 포함하며, 훈련용(130만 장), 검증용(5만 장), 테스트용(10만 장, 라벨 비공개)으로 나뉜다.
성능 지표는 다음과 같다.
- top-1 error: 멀티 클래스 분류 오류율, 즉 잘못 분류된 이미지 비율
- top-5 error: ILSVRC에서 사용되는 주요 지표로, 정답 클래스가 모델이 예측한 상위 5개 클래스에 포함되지 않은 이미지의 비율

실험을 진행한 결과 ConvNet의 깊이가 깊어질수록 오류율이 감소하는 것을 볼 수 있다. 주목할 점은, 동일한 깊이임에도 1×1 합성곱 층 3개를 포함한 구성 C가, 모든 층에서 3×3 합성곱을 사용한 구성 D보다 성능이 낮다는 것이다. 이는 비선형성이 추가되는 것이 유리하긴 하지만(C가 B보다 우수), 의미 있는 수용영역을 포착하는 것이 더 중요함을 보여준다(D가 C보다 우수).

Conclusion
본 연구에서는 최대 19개의 가중치 layer를 가진 매우 깊은 ConvNet을 대규모 이미지에 적용해서 성능을 향상시켰다. 현재에도 Backbone으로 많이 사용되며 이 연구 결과를 통해 표현의 깊이가 분류 정확도 향상에 유익하다는 점이 입증되었다.