CS/기계학습

[기계학습] 대표적인 CNN 모델

dbwls-log 2025. 6. 13. 14:01

 

AlexNet 

AlexNet의 구조 

AlexNet은 5개의 Conv Layer와 3개의 FC Layer 총 8개의 레이어로 구성되어 있다. 

 

Conv Layer에는 약 2백만개의 파라미터가 존재하며, FC Layer에는 약 6천 5백만개의 파라미터가 있다. 

Conv Layer에 비해 FC Layer에는 약 30배 이상의 파라미터가 존재한다. 

 

이렇게 많은 파라미터는 과적합 확률을 올리고, 연산 비용이 많이 든다는 단점이 존재하기 때문에, FC 층의 파라미터를 줄이는 방향으로 CNN은 더욱 발전하고 있다. 

 

AlexNet의 성공 요인 

AlexNet이 성공할 수 있었던 외부적 요인으로는 대규모 이미지 데이터셋인 ImageNet의 등장이 크다. 

또한 GPU 병렬처리를 활용하여 학습 시간을 대폭 감소시켰다. 

 

내부적으로는 ReLU 활성화 함수를 사용하여 빠르고 효과적으로 학습할 수 있도록 하였고, LRN(Local Response Normalization)을 적용하였다. 

과적합 방지를 위해 Dropout기법을 사용하고, 데이터 증강(Augmentation)을 활용하였다. 

 

테스트 시에는 앙상블을 적용하여 에러율 2~3% 감소시키며 정확도를 향상시켰다. 

 

 

AlexNet의 파라미터 수 

FC 1에는 약 3700만개, FC2에는 약 1700만개, FC3에는 약 410만개, Conv 전체에는 약 200만개로 대부분의 파라미터가 FC층에 밀집되어 있다. 

 

 

VGGNet 

VGGNet 구조 

VGGNet은 작은 3x3 커널만을 사용하여 딥하게 구성된 네트워크이다. 

AlexNet에 비해 2~3배 더 깊은 구조를 가지는데, Conv Layer만 8~16개를 사용한다. 

 

VGG-16의 경우 13개의 Conv Layer와 3개의 FC Layer를 사용하여 총 16개의 Layer로 구성되어 있다. 

 

커널크기가 3x3으로 작게 고정되어 있지만, 여러 층을 쌓아 더 깊이있는 표현이 가능해진다. 

 

1x1 커널의 활용 

채널 수를 줄이기 위한 차원 축소에 1x1 커널이 사용된다. 

예를 들어 8개의 mxn 특징맵을 4개의 mxn 특징맵으로 줄이기 위해서 1x1 커널을 4개를 사용한다. 

 

ReLU 같은 비선형 활성화 함수와 함께 사용하여 특징맵의 표현력(구분력)을 증가시킨다. 

 

 

작은 커널 vs 큰 커널 

수용 영역이란 한 뉴런이 입력으로부터 정보를 받아들이는 영역의 크기를 의미한다. 

 

일단 커널 하나를 사용할 때 3x3 커널은 총 9개의 파라미터를, 5x5 커널은 총 25개의 파라미터를, 7x7커널은 총 49개의 파라미터를 사용해야한다. 

 

하지만 여러개의 3x3 커널을 계층적으로 사용하게 된다면 어떨까?

일단 비슷한 수용 영역을 확보하며 파라미터 수는 줄어들게 될 것이다. 

 

3x3 필터 2개는 5x5와 비슷한 수용영역을 가질 수 있다.

그 이유는 첫번째 필터가 주변 픽셀 정보를 받아들이고, 두번 째 필터가 그 것들을 다시 한번 조합하기 때문에 결과적으로 5x5 범위를 반영할 수 있기 때문이다. 

그럼 필요한 파라미터 수는 3x3x2인 18개이며 25개보다 적은 파라미터 수로 학습이 가능하다. 

 

3x3필터 3개는 7x7과 비슷한 수용영역을 가질 수 있는데, 이는 필터 1개를 사용했을 때보다 22개의 파라미터를 더 적게 사용할 수 있는 수준이다. 

 

따라서 큰 크기의 필터를 한번 사용하는 것보다는 3x3의 작은 필터를 여러번에 걸쳐 사용하면 수용 영역 확보가 가능한것은 당연하고, 더 적은 파라미터를 사용할 수 있고, ReLU같은 비선형 함수가 여러번 적용되기 때문에 비선형성을 증가시켜 모델의 표현력도 증가시킬 수 있다. 

 

VGGNet 버전별 구조 

VGGNet은 여러 버전이 존재한다. 

일단 아래 그림은 모두 224x224 RGB 이미지 입력 기준이다. 

 

conv3-64는 커널의 크기가 3x3이며, 채널이 64개라는 것을 의미한다. 

가장 많이 쓰이는 것은 D버전의 VGGNet-16이며 Conv Layer 13개와 FC Layer 3개로 구성되어 있다. 

 

 

VGGNet의 파라미터 수 

초반부인 Conv Layer는파라미터 수가 상대적으로 적다. 

후반부인 FC Layer가 대부분의 파라미터를 가지고 있다. 

FC1은 1억개 이상의 파라미터를 가지고 있고, 전체 모델의 크기가 138MB정도 된다고 한다. 

 

 

GoogLeNet 

GoogLeNet의 구조 

GoogLeNet은 Network In Network (NIN) 기반으로, 기존 Conv대신 MLPconv를 사용한다. 

 

MLPConv란 각 커널 위치마다 작은 MLP를 적용하는 방식으로 Conv처럼 슬라이딩은 하지만 계산은 MLP처럼 진행하여 표현력과 비선형성을 높이는 것이다. 

 

GoogLeNet은 9개의 Inception Module에 기타 레이어로 구성되어 있다. 

파라미터를 가진 레이어 22개와 파라미터를 가지지 않는 레이어 5개로 구성이 되어있으며, FC Layer는 하나만 사용해 매우 효율적으로 동작한다. 

 

Inception module 

GoogLeNet의 핵심 구성 요소로 여러 종류의 필터를 동시에 적용한다. 

 

각 작업을 수행하고 나온 출력을 모두 합쳐 다음 층으로 전달한다. 

참고로 1x1 Conv는 차원 축소 및 계산량 감소 역할을 한다. 

 

 

사양표 

각 Inception 블록의 구성요소와 필터 수, 연산량 등을 상세하게 나타낸 표다. 

아래를 보면 1x1 필터가 자주 등장하는데, 이는 깊이는 유지하되 연산량은 줄이기 위해서이다. 

 

 

ResNet 

ResNet은 2015년 ILSVRC 대회에서 오류율 3.5%로 우승하였다. 

이는 AlexNet(2012)에 비해 매우 발전된 성능을 보였다. 

총 152층이나 되는 구조를 안정적으로 학습시킨 것이 해당 모델의 핵심이다. 

 

등장 배경 

기존 CNN은 층이 깊어질수록 학습 성능이 떨어지는 문제가 있었다. 

이는 기울기 소실이나 기울기 폭발과 관련이 있었는데, ResNet은 잔차학습을 통해 깊은 네트워크임에도 학습이 잘 되도록 만들어졌다. 

 

 

잔차 학습이란? : Residual Learning 

기존의 CNN은 아래와 같이 계산이 되었다. 

 y = τ(F(x))
F(x) = τ(x ⊛ w₁) ⊛ w₂

 

하지만 ResNet에서는 아래와 같이 계산된다. 

y = τ(F(x) + x)

 

이는 입력 x를 그대로 다음 레이어에 더해주는 것인데 이걸 shortcut connection or skip connection이라고 부른다. 

이렇게 하면 학습 초기에 레이어가 무언가 잘못 학습을 해도, 최소한 이전 입력은 그대로 전달이 되므로 성능이 보장된다. 

 

 

Block 구조 

두 개의 Conv + ReLU를 거쳐 나온 결과 F(x)에 입력 x들 더한다. 

그림에서 처럼 x → conv → ReLU → conv → F(x)를 하고, F(x)+x를 다시 ReLU에 넣는다. 

 

 

전체적인 구조 

기본적으로 ResNet은 VGGNet과 동일하게 3x3 커널을 사용한다. 

VGG는 단순히 커널을 쌓기만 했다면, GoogLeNet은 각 블록마다 shortcut을 적용한다. 

FC Layer는 제거하고 Gobal Average Pooling을 적용하여 마무리 한다. 

배치 정규화도 적용하여 학습의 안정성을 향상시켰다. 

 

 

학습 성능 비교 

20층과 56층을 비교해보면, 일반 CNN은 층이 깊어질수록 성능이 나빠지는 것을 볼 수 있다. 

하지만 ResNet은 층이 깊어질수록 성능이 좋아지는 것을 볼 수 있는데, 이는 잔차 학습을 하기 때문이다. 

 

구조 스펙 

계층 수에 따라 conv 블록 반복 횟수가 달라진다. 

예를 들어 ResNet-18은 각 블록을 2번 반복하고, ResNet-152는 최대 36번 반복한다. 

 

 

응용분야 

CNN은 이미지 복원, 색상 복원, 자세 추정, 설명 생성, 행동 분석, 이미지 생성 등 여러 비전 문제에서 사용되고 있다.