끄적이는 개발노트
260706_강의 정리 (전이학습) 본문
728x90
deep learning · cnn
CNN 모델의 발전과 전이학습
- 성능 개선의 두 축 — 학습 방식 최적화 vs 네트워크 구조 혁신
- VGG → ResNet → Inception → Xception/MobileNet → EfficientNet으로 이어지는 발전 흐름
- 전이학습으로 사전학습된 지식을 재사용하는 방법 (fine-tuning, feature-extraction, LoRA)
1. 전이학습이란
"이미 학습된 지식을 다른 문제에 재사용하는 것" — 처음부터 다시 배우지 않아도 됨
- ImageNet 등 대규모 데이터로 미리 학습된 pre-trained 모델을 그대로 활용함
- 데이터가 적거나 학습 시간이 부족할 때 특히 유용함
💡 새 개념
Feature-extraction 특징 추출 방식
- pre-trained conv layer는 그대로 고정(freeze)함
- 마지막 분류기 레이어만 새로 학습함
이미 완성된 렌즈는 그대로 쓰고 카메라 설정만 바꾸는 것
Fine-tuning 미세 조정
- 일부 또는 전체 레이어를 새 데이터에 맞게 재학습함
렌즈까지 새로 조정해서 내 상황에 맞게 다시 맞추는 것
LoRA Low-Rank Adaptation
- 전체 가중치 대신 저차원 행렬만 학습해 효율적으로 미세조정함
trainable_weights 설정에 따라 학습 범위가 결정됨
전이학습의 핵심은 "무엇을 얼리고(freeze) 무엇을 학습시킬지" 결정하는 것
2. 학습을 빠르고 정확하게 만드는 기법
네트워크 구조를 바꾸지 않고도 학습 자체를 개선하는 방법들
- Batch Normalization — 레이어마다 입력 분포를 정규화해 학습 안정성과 속도를 높임
- ReLU — 비선형성을 도입하고 gradient vanishing 문제를 완화함
- Optimizer — 손실함수를 효율적으로 최소화하는 알고리즘 (SGD, Adam 등)
세 기법 모두 "같은 구조라도 더 빠르고 안정적으로 학습시키기 위한 도구"
3. VGG-16 — 단순하고 깊게
3x3 필터를 반복해서 쌓는 단순한 구조로 깊이를 늘림
VGG-16 구조 — Conv 블록 + Pooling 반복
- Conv(3x3) + Pooling 블록을 반복해 깊은 네트워크를 구성함
- 5x5, 7x7 필터 하나 대신 3x3을 여러 겹 쌓으면 같은 수용영역을 더 적은 파라미터로 확보하고, 비선형성도 더 많이 추가됨
3x3 필터 2번 = 5x5 필터 1번과 비슷한 범위를 보되 파라미터는 더 적음
구조는 단순하지만 파라미터 수가 많아 무겁다는 한계가 있음 → 이후 모델들이 이를 개선
4. ResNet — 깊이의 한계를 넘다
"왜 네트워크는 깊어질수록 오히려 성능이 나빠질까?"라는 문제에서 출발
- Degradation 문제 — 층이 깊어질수록 vanishing gradient로 학습이 오히려 어려워짐
- Residual block(skip connection) 도입 → 입력을 그대로 더해줘서(identity) 정보 손실을 막음
- Resnet-152처럼 매우 깊은 네트워크도 안정적으로 학습 가능해짐
Residual block — F(x) + x
💡 새 개념
Residual block 잔차 블록
- F(x) + x 형태로 입력(x)을 그대로 더해줌
본채(F(x))를 새로 짓되, 원래 있던 뼈대(x)는 그대로 이어붙이는 것
skip connection 덕분에 "더 깊이 = 더 좋은 성능"이 실제로 성립하게 됨
5. Inception — 한 층에서 여러 시야로 보기
필터 크기를 하나로 고정하지 않고 여러 개를 병렬로 사용함
Inception 모듈 기본 개념도
- 1x1, 3x3, 5x5 conv + max pooling을 병렬로 배치한 뒤 결과를 concat함
- 1x1 conv는 단순한 필터가 아니라 차원 축소(bottleneck) 역할을 하며 연산량 절감의 핵심임
그림은 Inception 모듈의 기본 개념도(GoogLeNet 계열)이며, 실제 Inception v4는 여기에 factorized convolution·reduction block이 추가된 구조
여러 크기의 필터를 동시에 써서 다양한 크기의 패턴을 한 층에서 포착함
6. Xception & MobileNet — 가볍게 만들기
정확도는 유지하면서 연산량을 줄이는 경량화 전략
core
Depthwise Separable Convolution
하나의 큰 연산을 두 개의 가벼운 연산으로 쪼갠다
- Depthwise — 채널별로 독립적인 공간 필터링을 수행함
- Pointwise(1x1) — 채널 간 정보를 조합함
Depthwise + Pointwise convolution 분리 과정
- 목적 — 모바일·임베디드 환경처럼 연산 자원이 제한된 곳에서도 동작 가능하게 함
일반 conv 대비 연산량이 크게 줄어듦 → 경량 모델의 핵심 아이디어
7. EfficientNet — 균형 있게 키우기
"깊이·너비·해상도 중 하나만 키우는 건 비효율적이지 않을까?"라는 질문에서 시작
- 기존 방식 — depth, width, resolution 중 하나만 늘리는 unbalanced scaling
- EfficientNet — 세 가지를 정해진 비율로 동시에 늘리는 compound scaling 제안
- B0~B7 — compound scaling 계수를 단계적으로 키운 모델 시리즈 (해상도만 다른 것이 아님)
Model Scaling — (a) baseline부터 (e) compound scaling까지
💡 새 개념
Compound scaling 복합 스케일링
- depth·width·resolution을 동시에 균형 있게 확장함
사진을 키울 때 가로세로 비율을 유지하며 확대하는 것과 비슷한 원리
무작정 크게 만드는 게 아니라 "어떤 비율로 키울 것인가"가 EfficientNet의 핵심 통찰
정리 — 발전의 흐름
VGG (단순·깊게)
→
ResNet (깊이의 한계 해결)
→
Inception (효율적 병렬 구조)
→
Xception/MobileNet (경량화)
→
EfficientNet (균형 스케일링)
728x90
'머신러닝' 카테고리의 다른 글
| 260708_강의 정리 (RNN → LSTM → Seq2Seq → NMT → Self-Attention 정리) (0) | 2026.07.08 |
|---|---|
| 260707_강의 정리 (생성모델 - AE, VAE, GAN) (0) | 2026.07.08 |
| 260703_강의 정리 (CNN) (1) | 2026.07.03 |
| 260702_강의 정리 (Optimizer) (0) | 2026.07.02 |
| 260702_강의 정리 (Tensorflow, Keras) (0) | 2026.07.02 |