본문 바로가기
딥러닝

CNN 모델 종류: LeNet, AlexNet, VGG, GoogleNet 비교

by 데이널 2024. 2. 29.

CNN의 역사를 보면 다양한 아키텍처로 발전해 왔습니다. 그 중에서도 기본적으로 알아야할 4가지 알고리즘에 대해 살펴보도록 하겠습니다. 바로 LeNet, AlexNet, VGG, GoogleNet 입니다. 

 

 

LeNet

LeNet은 '르넷'으로 읽으며, 1998년 제안된 CNN의 초기 모델입니다. 주로 손글씨를 인식하는 네트워크로 활용했죠. 합성곱 계층과 풀링 계층을 반복하고 마지막에 완전 연결 계층을 거치면서 결과를 출력합니다. CNN의 공식데로 합성곱과 풀링 계층을 반복하는 것이 특징이죠. 


풀링(Pooling)은 단순히 원소를 줄이기만 하는 서브샘플링(sub sampling) 계층이 있는 것이 특징입니다. Sub sampling 방법은 최대 풀링(max pooling), 평균 풀링(average pooling), L2-norm pooling 등이 있습니다. 현재는 주로 max pooling을 많이 사용하는 추세입니다. 모델에서 활성화 함수는 Sigmoid 사용했다는 것이 특징입니다. 

 

LeNet-5
LeNet-5 아키텍처

 

논문 'Gradient-Based Learning Applied to Document Recognition'의 LeNet-5의 네트워크 그림입니다. 저자는 그림에서 아래와 같이 표시했습니다. 네트워크 구성을 보면 아래와 같습니다. 32x32 크기의 이미지를 학습하는 7층 합성곱 네트워크라고 할 수 있습니다. 

Conv(C1) - Subsampling(S2) - Conv(C3) - Subsampling(S4) - Conv(C5) - FC(F6) - FC(F7)

  • Cx : convolution layer → 합성곱 계층
  • Sx : subsampling (pooling) layer → 풀링 계층
  • Fx : fully-connected layer → 완전연결 계층
  • x : index of the layer → 층의 index

 

AlexNet

알렉스넷은 2012년에 발표된 네트워크로 딥러닝 열풍을 일으키는 것에 큰 역할을 했습니다. 역사적인 오류율 16.4%를 달성해 그 전 알고리즘의 성과와는 확연한 차이를 나타냈죠. LeNet과 구조적으로 크게 바뀌지 않았습니다. 여전히 max pooling을 사용했습니다. 자세한 내용은 논문 'ImageNet Classification with Deep Convolutinal Neural Network'를 참조하시기 바랍니다. 

 

AlexNet
AlexNet 아키텍처

 

AlexNet은 8층의 합성곱 네트워크 입니다. 5개의 Convolution Layer(합성곱 계층)와 3개의 FC Layer(완전연결층)로 구성되어 있죠. AlexNet은 6천만개의 파라미터를 사용하며 절대 적은 수치가 아니었습니다. 이는 과대적합이 많이 발생할 수 있는 원인이었죠. 그래서 LeNet과의 차이점이 있다면 Overfitting에 더 많은 신경을 써야 했습니다. 

 

첫 번째가 활성화 함수로 ReLU 로 변경해서 사용했습니다. ReLU를 사용했을 때 과대적합을 방지하는 목적으로 사용했다고 볼 수 있습니다. 두 번째,  LRN(Local Response Normalization)이라는 국소적 정규화를 실시하는 계층 사용하였습니다. 마지막으로 드롭 아웃을 사용하여 여러 모델의 예측을 결합하는 방식으로 테스트 오류를 줄이도록 했습니다. 


VGG

VGGNet은 입력 사이즈는 224x224 크기의 컬러 영상을 사용합니다. 하나 또는 복수의 합성곱 계층과 풀링(max pooling) 계층이 반복되는 네트워크 구조입니다. 그림과 같이 비중 있는 층(합성곱 계층, 완전연결 계층)을 모두 16층(혹은 19층)으로 더 깊게 만든 게 특징입니다. 층의 깊이에 따라서 'VGG 16'과 'VGG 19'로 구분됩니다. 자세한 내용은 논문 'Very Deep Convolutional Networks for Large-Scale Image Recognition'를 참고하시기 바랍니다. 

 

VGG
VGG 아키텍처

 

주목할 점은 3x3의 작은 필터를 사용한 합성곱 계층(검정색 블럭)을 연속 반복합니다. 이때 커널 사이즈 고정(3x3)입니다. 그림에서 보듯 합성곱 계층을 2~4회 연속 통과하고, 그 이후 풀링 계층(빨간색 블럭)으로 크기를 절반으로 줄이는 처리를 반복합니다. 마지막에는 완전연결 계층(fully-connected layer)을 3번 통과시켜 결과를 출력합니다.

 

AlexNet과 차이점은 VGG에서는 학습 데이터셋 전체의 채널 평균 값을 입력합니다. 그리고 영상의 각 화소마다 빼주고 입력을 zero-centered되게 하는것이 특징입니다. 기존 7x7보다는 작은 필터를 사용함으로써 파라미터 계산을 줄일 수 있었습니다. 


이렇게 VGG는 사실 구성이 간단하여 응용하기 좋습니다. 여기서 패딩(Padding)을 처음 사용게 되죠. 많은 기술자들이 VGG기반 신경망을 즐겨 사용하는 이유입니다. 


GoogLeNet

GoogleNet이 2014년 ILSVRC 대회에서 VGG를 재치고 1위를 차지했습니다. 그림을 보면 구성이 상당히 복잡해 보이는데요. 기본적인 사상은 지금까지 보아온 CNN과 동일합니다. 단, GoogLeNet은 세로 방향 깊이뿐 아니라 가로 방향도 깊다는 점이 특징입니다. 여기서 가로 방향에 '폭' 을 인셉션 구조라 합니다. 논문 Going deeper with convolutions 을 참고하시기 바랍니다. 

 

GoogleNet 아키텍처
GoogleNet 아키텍처

 

GoogLeNet은 AlexNet보다 파라미터가 12배나 더 적음에도 불구하고 훨씬 정확했습니다. 이유는 더 deep한 레이어 구조를 선택했기 때문입니다. 네트워크가 깊어지면 기울기 소실, 과도한 리소스, Overfitting 문제를 생각하지 않을 수 없습니다. 그래서 여러가지 기법들을 적용했습니다. 대표적인 기술이 인셉션 모듈,  auxiliary classifier 모듈(기울기 소실 문제 해결) 등이 있습니다. 

인셉션(Inception) 구조는 크기가 다른 필터(와 풀링)를 여러 개 적용하여 그 결과를 결합하는 방법입니다. 필터를 고정하지 않겠다는 생각입니다. 인셉션 구조를 하나의 빌딩 블록(구성요소)처럼 사용하는 방법이 GoogLeNet의 아키텍처라고 할 수 있습니다. 실제로 그 불럭들이 쌓여있는 구조입니다. 

 

GoogleNet 인셉션 블록