
6강 : Training CNNs and CNN Architectures
지난 강의를 통해서 CNN의 핵심 구조인 합성곱과 풀링에 대해서 살펴보았고 이번 강의에서는 CNN의 자세한 구조와 모델을 학습하기 위한 하이퍼파라미터와 정규화에 대해서 살펴볼 것이다. 그리고 본격적으로 딥러닝을 활용한 모델인 2012년의 AlexNet과 조금 더 발전된 VGGNet 그리고 ResNet까지 살펴볼 것이다.
CNN의 구성 요소

CNN에 포함되는 구성요소는 다음과 같이 6가지 요소로 나눌 수 있다:
1. 합성공층 [Convolution Layers]
입력 데이터의 특징을 추출하기 위해서 사용되면 가중치 필터를 거치면서 아웃풋으로 특징맵(feature map)을 다음 층으로 넘긴다.
2. 풀링층 [Pooling Layers]
입력 데이터의 크기를 줄이는 방법으로 다운 샘플링하여 다음 층으로 넘긴다. 풀링의 방식으로는 그룹의 최대값을 남기는 max pooling이 있고 그룹의 평균을 출력하는 local avgerage pooling이 존재한다.
3. 완전 연결층 [Fully-Connected Layer]
합성곱층은 모든 입력과 출력이 연결되어 있지 않다. 그렇지만 최종적으로 분류 또는 예측을 하기위해서 이전 층의 결과값을 모두 받아서 반환한다.
4. Normalization 층
normalize에는 입력 데이터의 평균과 분산을 계산해서 이후 학습을하는 방법이 있고 배치, 층, 개체(instance), 그룹 중 하나로 묶는 normalize가 존재한다.
5. Dropout
6. 활성화 함수 [Activation Functions]
비선형성[non-linearity]를 표현하기 위해서 사용하며 ReLU, Tanh, sigmoid 등 다양한 활성화함수가 존재한다. 시그모이드를 제외한 각각의 활성화함수는 장점이 있지만 ReLU의 계산이 쉽다는 장점으로 인해 ReLU를 주로 사용한다.
ImageNet 챌린지와 딥러닝 모델

거대한 이미지 데이터셋인 ImageNet을 분류하는 챌린지인 ILSVRC는 AlexNet이 나오기 전인 2010년과 2011년에는 딥러닝처럼 여러 층을 겹겹이 쌓아올린 모델이 아닌 사람이 직접 특징을 추출해서 만든[hand-crafted] 머신러닝 모델이다. 하지만 2012년에 AlexNet이 출시하고 나서 이후의 연구들에서는 딥러닝 모델을 주로 사용하였고 강의에서는 2014년의 VGGNet과 AlexNet을 비교하여 발전 부분을 소개한다.

위의 그림처럼 AlexNet은 8개의 층을 쌓아올린[완전연결층 제외] 딥러닝 모델이고 VGGNet은 16개과 19개의 모델이 존재한다. 성능의 경우 2012년의 AlexNet이 16.4, 2013년의 ZFNet이 11.7 그리고 2014년의 VGGNet이 7.3의 오류율을 기록하면서 성능 향상을 이루어 냈다. VGGNet은 3x3의 일정하게 작은 합성곱 필터를 사용하였는데 이는 7x7 하나의 필터와 같은 효과가 있으며 심지어 비선형성을 더 잘 표현할 수 있고 채널의 파라미터 수를 더 적게 할 수 있다는 장점이 있다.
ResNet
VGGNet 이후로 주목해볼만한 모델은 2015년의 ResNet이다. 무엇으로 인하여 더 좋은 결과를 얻을 수 있었을까? 우선 이전의 모델이 갖고 있는 문제가 하나 있었다.

위의 그림은 반복에 따른 에러의 변화를 나타내고 있으며 더 깊게 층을 만든 56층의 모델의 에러가 더 높은 현상이 일어나고 있다. 더 복잡한 모델이 성능이 낮는다는 것은 오버피팅이 원인이 아닐까 생각할 수도 있지만 이 경우에는 복잡한 모델이 최적화하기 어렵다는 것이 원인이다. 그래서 ResNet은 낮은 층에서 학습한 output을 최종 합성곱층의 output에 더하여 나타내었다.

가중치 초기화
간단하게 설명을 하자면 가중치를 너무 작게 설정하면 0에 수렴해버리고 너무 크게 설정하면 기하급수적으로 활성화값이 커지기 때문에 적절한 가중치를 설정해야한다. ReLU 활성화 함수를 주로 사용하기 때문에 Kaiming/MSRA [He] 초기화 방법을 사용한다.
$W = Union(D_in,D_out)* \sqrt(2/D_in)$
CNN 학습
CNN의 학습에 4가지를 언급하고 있다.
1. 데이터 전처리 [Data Preprocessing]
색상 3개의 채널 RGB에 대해서 각각 평균 0과 표준편차가 1이 되도록 normalization을 해준다.
2. 데이터 증강
기존의 정규화 방식인 모델의 제약을 가하거나 무작위성을 부여하는 것처럼 데이터 증강은 모델이 아닌 입력 데이터에 노이즈나 변환을 하여 정규화된 모델을 만들 수 있다. 데이터에 변환의 경우 사진을 뒤집는 Flip이나 일정부분으로 자르는 Random crop, 크기를 키우거나 줄이는 scale, 무작위의 명도나 대비의 변환을 주는 color jitter 그리고 사진을 일부분 잘라 빈 곳이 있는 cutout 등이 있다.


전이 학습 [Transfer Learning]
만약 학습을 할 데이터셋이 크기가 작다면 어떻게 해야할까? 그럴 때 사용할 수 있는 것이 바로 전이 학습 [Transfer Learning]으로 다른 커다란 데이터셋으로 부터 사전학습된 모델을 가져다가 쓰는 방식이다. ImageNet와 같이 거대한 데이터셋에서 모델을 원래 목표의 작은 데이터셋을 학습 시키는 파인튜닝 [fine-tuning]을 사용하여 할 수 있다. 하지만 두 데이터셋이 서로 다른 경우에는 사용하기 어려워 데이터를 더 수집해야할 수도 있다.
전이 학습을 사용할 수 있는 방법으로 허깅페이스를 통해서 모델을 끌어다 쓸 수 있고 파이토치를 이용하여 매우 간단하게 모델을 불러올 수 있다.
from torchvision import models
model = models.resnet18(pretrained=True)
다음과 같이 파이토치의 torchvision을 사용해서 사전학습된 ResNet을 매우 간단하게 불러올 수 있다.
하이퍼파라미터 선택
우리가 선택할 수 있는 하이퍼파라미터는 학습률, 배치사이즈, dropout 크기, 활성화 함수 그리고 가중치 초기화 등 굉장히 많이 존재한다. 그렇기 때문에 이러한 모든 경우의 수를 다 따져가면서 가장 좋은 성능을 내는 하이퍼파라미터 조합을 찾기에는 엄청난 컴퓨팅 비용과 시간이 필요할 것이다. 그렇기 때문에 하이퍼파라미터를 선택하는 스텝이 존재한다.
강의에서는 7가지로 소개하지만 크게 2가지로 나눌 수 있다.
1. 학습률 찾기
우선 학습 데이터셋 전부를 훈련시키면서 100번의 반복 이내로 가장 많이 손실을 감소시켰던 학습률을 찾는다.
2. 다른 하이퍼파라미터 탐색
학습률을 정하고나서 1~5번의 적은 에포크를 돌리면서 최적의 하이퍼파라미터 조합을 찾는다.
하이퍼 파라미터를 선택하는 두 가지 탐색 방법이 존재한다. 우선 Grid 레이아웃은 일정한 격자점처럼 하이퍼파라미터의 범위를 지정하고나서 선택을 한다. 그리고 Random 레이아웃은 말그대로 무작위로 하이퍼파라미터를 선택하는 방식이다. 두 가지의 방법 중 Random Layout의 성능이 더 좋게 나오는데 그 이유로 Grid 레이아웃은 제한되어 있기 때문에 최적의 하이퍼파라미터에는 접근할 수 없다는 것이다.
강의 자료
CS231n 강의 공식사이트 - cs231n.stanford.edu
CS231n Spring 2025 유튜브 강의 - youtube
CS231n 강의 슬라이드 - cs231n.stanford.edu/slides/2025
CS231n 과제 및 자료 - cs231n.stadford.edu.github.io
'[2025] CS231n' 카테고리의 다른 글
| [2025] CS231n 8강: Attention and Transformers - CS231n 강의 노트 (0) | 2026.04.18 |
|---|---|
| [2025] CS231n 7강: Recurrent Neural Networks - CS231n 강의 노트 (0) | 2025.12.27 |
| [2025] CS231n 5강: Image Classification with CNNs - CS231n 강의 노트 (0) | 2025.11.17 |
| [2025] CS231n 4강: Neural Networks and Backpropagation - CS231n 강의 노트 (0) | 2025.11.06 |
| [2025] CS231n 3강: Regularization and Optimization - CS231n 강의 노트 (1) | 2025.09.22 |