부트캠프와 다른 AI학교,
AI는 아이펠에서 배우세요
#인공지능 

작은 커널, 더 큰 성과: VGGNet 아키텍처 탐구

딥러닝 발전의 주춧돌 중 하나인 VGGNet 에 대해 알아봅시다. 여러 개의 층을 점점 깊이 쌓아 지능형 시스템의 성능을 올리겠다는 딥러닝의 컨셉을 엿볼 수 있습니다. VGGNet 의 상세한 구조를 살펴보고, 이와 함께 남겨진 딥러닝 모델의 주요 문제점에 대해 생각해봅시다.

2024-04-01 | 나융

VGGNet 에 대해 한 번 알아봅시다

AlexNet, Inception, ResNet 등 대표적인 모델들과 함께, 이번엔 VGGNet 모델 구조 시간입니다.컨볼루션 신경망(Convolutional Neural Networks, CNN)은 이미지 인식 및 분류와 같은 시각적 인식 작업에서 탁월한 성능을 보여주고 있습니다. 수백만 개의 파라미터와 깊은 층을 가진 ConvNet들이 ImageNet 대회에서 우수한 성과를 거두며 주목받았습니다. 이번 시간은 VGGNet 의 상세한 구조와 함께, 여전히 남은 문제점에 대해서 비교해보겠습니다.

 

모델 설계 시 고려사항

특성 추출과 분류기 구조

이미지 분류는 전통적으로 특성 추출(feature extraction)과 분류기(classification) 두 단계로 이루어져 왔습니다. 특성 추출은 원본 픽셀에서 카테고리를 구분할 수 있는 상위 수준 정보를 추출하는 과정입니다. 전통적인 특성 추출 기법으로는 GIST, HOG, SIFT, LBP 등이 있습니다. 추출된 특징을 사용하여 SVM, 로지스틱 회귀, 랜덤 포레스트 등의 분류 모델을 학습합니다. 하지만 이 방식의 문제는 선택한 특징이 카테고리 구분에 부적절하다면 어떤 분류 전략을 사용해도 정확도가 크게 떨어진다는 점입니다. 또한 도메인에 맞춰 수동으로 많은 파라미터를 튜닝해야 하는 어려움이 있습니다. 반면 CNN은 특징 추출과 분류를 통합하여 지도 학습을 통해 스스로 최적의 특징을 학습합니다. 이는 인간이 사물을 인식하는 방식과 유사합니다.

 

CNN 모델을 설계할 때 또한 고려해야할 주요 사항으로는 정확도와 계산 효율성이 있습니다.

정확도

분류 시스템의 성능을 평가할 때 정확도는 매우 중요합니다. 정확도는 모델 뿐만 아니라 학습 데이터의 양에 의해 결정되므로, 대부분의 모델은 ImageNet과 같은 큰 규모의 표준 데이터셋에서 평가됩니다. VGG 학습에 활용된 ImageNet 데이터셋에는 1,000개 카테고리에 속한 120만 장의 이미지가 포함되어 있습니다.

계산 효율성

이미지 데이터의 특성 상 대부분의 CNN은 훈련 시 엄청난 메모리와 연산이 필요합니다. 또한 모바일 기기에 모델을 배포할 경우 모델 크기도 상당히 중요한 고려사항입니다. 일반적으로 정확도를 높이기 위해서는 더 많은 계산 비용이 든다는 트레이드오프가 있습니다.

 


VGGNet 구조 및 구현 세부사항

VGG-16의  구조

VGG-16 레이어 구조

 

 

VGG-16은 옥스퍼드 대학 연구 그룹에서 제안한 16층 ConvNet 모델입니다. 층의 갯수를 셀 때는 학습을 통해 업데이트가 가능한 가중치를 지닌 레이어 기준으로 생각하면 됩니다. VGG-16은 Conv 층 13개, FC 층 3개로 구성되어 있습니다. 여러 레이어를 묶어 총 6 개 구역으로 구성되어있는 것을 볼 수 있습니다.

입력 이미지는 224×224 크기로 조정되어 첫 번째 Convolutional(conv) 층으로 전달됩니다.

이후 데이터는 특성 추출 과정을 거칩니다. 입력 데이터는 3×3 크기의 작은 필터를 여러 개 쌓아올린 컨볼루션 층들을 지납니다. 필터 개수는 64 -> 128 -> 256 -> 512로 점진적으로 증가합니다. 일부 층 다음에는 2×2 크기의 Max Pooling이 적용되어 데이터의 공간 해상도를 줄입니다.

마지막 부분의 분류기에는 4096 개 노드로 이루어진 두 개의 Fully Connected(FC) 층이 있고, 최종 출력은 1000개 클래스에 대한 소프트맥스 확률입니다. 모든 은닉층은 ReLU 활성화 함수를 사용합니다.

VGGNet 구조 주목할만한 점

VGG-16은 이전 AlexNet 대비 두 가지 주요 개선 사항이 있습니다.

첫째, 큰 커널(11×11, 5×5) 대신 3×3 크기의 작은 커널을 여러 개 쌓아 사용했습니다. 이렇게 하면 동일한 receptive field에서 파라미터 수를 크게 줄일 수 있습니다. 말로 설명하는 것보다 한눈에 이해하기 쉬운 영상 자료를 첨부합니다.

둘째, 모든 conv층과 FC층 뒤에 ReLU 활성화 함수를 적용했습니다. ReLU는 sigmoid 함수에 비해 기울기 소실 문제가 적어 빠른 학습이 가능합니다.

데이터셋

VGG-16은 ImageNet 데이터셋을 사용해 훈련되었습니다. ImageNet에는 2만 2천여 개 카테고리에 속하는 1,500만 장 이상의 고해상도 이미지가 포함되어 있습니다. 이 중 120만 장의 이미지가 1,000개 카테고리로 나누어 ILSVRC 대회에 사용되었습니다.

사용 사례 및 구현

VGG-16의 단점은 학습 시간이 오래 걸리고 모델 크기가 533MB에 달해 배포가 어렵다는 점입니다. 하지만 구조가 직관적이어서 학습 목적으로 많이 사용됩니다.

VGG 연구 그룹은 VGG-16 외에도 VGG-19 등 다양한 구성을 제안했습니다. 주요 차이점은 층의 깊이입니다.

PyTorch, TensorFlow, Keras 등 많은 딥러닝 프레임워크에서 VGG-16 구현체를 제공하고 있습니다.

성능 및 결과

VGG-16은 ILSVRC 2012와 2013 대회에서 단일 모델 기준 최고 수준의 성능(7.0% 테스트 오차율)을 보여주었습니다. 이는 우승작인 GoogLeNet(6.7%)에 근접한 수치입니다.

VGG 그룹은 깊이를 늘리면 정확도가 향상되며, 적절한 규제를 통해 과적합을 방지할 수 있다는 점을 적절하게 보여주었습니다. 하지만 한계점 역시 명확했습니다. 모델의 깊이가 어느 정도 수준을 넘어서면서 규제 기법만으로 과적합을 피할 수 없게 되었습니다.

CNN architectures of (a) AlexNet, (b) VGG-16, (c) VGG-19, (d) ResNet-50, (e) ResNet-101 and (f) ResNet-152.

 


함께 비교해보면 좋을 모델들

GoogLeNet(Inception)

GoogLeNet은 VGG의 계산 비효율성을 개선하고자 고안되었습니다. 다양한 커널 크기와 병목 구조(bottleneck)를 적극 활용한 Inception 모듈을 통해 파라미터 수를 절감할 수 있었습니다. 마지막 FC층도 Global Average Pooling으로 대체하여 모델 크기를 대폭 줄였습니다. 이를 통해 VGG 대비 뛰어난 계산 효율성과 93.3%의 높은 정확도를 달성했습니다.

잔차 네트워크(ResNet)

ResNet은 잔차 연결(residual connection)을 활용한 블록 구조를 통해 극심한 기울기 소실과 degradation 문제를 효과적으로 해결했습니다. 이를 통해 최대 152층의 훨씬 깊은 네트워크를 구축할 수 있었습니다. 152층 ResNet은 95.51%의 최고 정확도를 기록하며 VGG와 GoogLeNet을 뛰어넘었습니다.


마무리하며

VGGNet 은 모델의 깊이 늘림으로써 성능을 향상시킨다는 딥러닝의 컨셉을 충실하게 표현한 모델입니다. 이와 동시에 깊은 계층에서 학습이 전달되지 않는 문제와, 파라미터 규모에 따른 계산 효율성의 한계를 뚜렷하게 보여주었습니다. 또한 이에 굴하지 않고 후속 모델들이 도전한 덕분에, 현재 활용되는 거대한 딥러닝 모델들이 탄생했다는 사실도 확인할 수 있습니다. 그만큼 VGGNet은 방대한 딥러닝 분야에 굵직한 흔적을 남긴 모델이라고 할 수 있겠습니다.

창을 닫기 전, 위 링크를 통해 모델의 내부에서 벌어지는 일들을 직접 관찰해보는건 어떨까요?

 

Reference