딥러닝 기초 (10) - CNN 아키텍처: LeNet에서 ResNet까지
CNN이 발전해 온 흐름을 대표 아키텍처로 짚습니다. LeNet, AlexNet, VGG로 이어진 "더 깊게"의 흐름과 그 한계(성능 저하), 그리고 스킵 커넥션으로 아주 깊은 망을 가능케 한 ResNet의 아이디어를 정리한 딥러닝 기초 (10)편입니다.
딥러닝 기초 시리즈의 10편입니다. 전체 목차는 0편에 있습니다. 9편의 부품(합성곱·풀링)으로 실제 CNN들이 어떻게 발전했는지를 봅니다.
“더 깊게”의 흐름: LeNet → AlexNet → VGG
CNN의 역사는 대체로 “더 깊고 크게”의 흐름이었습니다.
- LeNet (1998) — 손글씨 숫자 인식용으로, 9편에서 본
합성곱 → 풀링 → 완전연결골격을 이미 갖춘 초기 CNN입니다. - AlexNet (2012) — 대규모 이미지 분류 대회(ImageNet)에서 압도적 성적으로 딥러닝 붐을 연 모델입니다. LeNet을 훨씬 크게 키우고, ReLU(2편)와 드롭아웃(8편), GPU 학습을 도입했습니다.
- VGG (2014) — 구조를 단순화해, 3×3 작은 필터만 깊게 쌓았습니다. “작은 필터를 많이 쌓으면 큰 필터 하나와 같은 시야를 더 적은 파라미터로 얻는다”는 설계를 정착시켰습니다.
여기까지의 교훈은 “깊을수록 강하다”였습니다. 그런데 무작정 깊게 쌓다 보니 벽에 부딪힙니다.
깊이의 벽: 성능 저하
층을 계속 깊게 쌓으면, 어느 순간부터 성능이 오히려 떨어지는 현상이 나타납니다(degradation). 단순한 과적합이 아니라 train 오류부터 올라갑니다. 2편·4편에서 본 기울기 소실이 깊은 망에서 심해져, 앞쪽 층까지 학습 신호가 닿지 못하기 때문입니다. 층을 더 넣는 것이 손해가 되는 역설입니다.
ResNet: 스킵 커넥션
ResNet (2015)은 이를 스킵 커넥션(잔차 연결)으로 풉니다. 층이 출력 H(x)를 직접 학습하는 대신, 입력을 건너뛰어 더한 F(x) + x를 학습하게 합니다. 즉 층은 원본과의 차이(잔차) F(x)만 학습하면 됩니다.
1
y = F(x) + x # F: 층이 학습하는 잔차, x: 건너뛴 입력
이점은 두 가지입니다. 필요 없는 층은 F(x)=0, 곧 항등 매핑을 쉽게 만들 수 있어 깊이가 손해가 되지 않고, 역전파 때 기울기가 +x 경로를 따라 감쇠 없이 흘러 소실이 완화됩니다. 이 덕분에 수십~수백 층짜리 망도 학습할 수 있게 됐고, 스킵 커넥션은 이후 Transformer(16편)를 포함한 거의 모든 심층 구조의 표준 부품이 됩니다.
정리
| 아키텍처 | 기여 |
|---|---|
| LeNet | 합성곱→풀링→완전연결 골격의 원형 |
| AlexNet | 대규모로 확장 + ReLU·드롭아웃·GPU. 딥러닝 붐 |
| VGG | 3×3 작은 필터를 깊게 쌓는 단순한 설계 |
| 성능 저하 | 무작정 깊게 쌓으면 기울기 소실로 오히려 나빠짐 |
| ResNet | F(x)+x로 잔차만 학습. 아주 깊은 망을 가능케 함 |
지금까지는 밑바닥부터 학습하는 이야기였습니다. 하지만 매번 처음부터 학습하는 것은 비싸고, 데이터도 많이 필요합니다. 이미 잘 학습된 모델을 가져다 쓰는 방법 — 전이학습이 다음 편입니다.