SK플래닛 ai활용 데이터엔지니어 과정 2기/ML & DL

DL 2 - 전이학습

dev-lee 2026. 5. 26. 16:43

1. 전이학습 개요

전이학습(Transfer Learning)은 처음부터 학습하지 않고 사전에 학습된 모델의 지식을 재사용하여 새로운 과제를 해결하는 방법임. 트랜스포머 계열 모델은 반드시 지원해야 하는 기능이며, 다른 목적으로 만들어진 모델을 또 다른 목적으로 빠르게 적용할 수 있음.

1.1 핵심 아이디어

  • 지식의 재사용·전이 — 이미 학습된 가중치를 활용하여 처음부터 학습하지 않음
  • 속도 + 비용 절감 — 대규모 데이터로 사전 학습된 결과를 그대로 가져옴
  • 유전 개념 — 과거 세대의 학습 결과를 미래 세대(새 모델)에 전달

라마(LLaMA) 같은 LLM이 오픈소스로 공개되고, 허깅페이스에 수많은 모델이 올라오는 흐름의 기술적 근거가 바로 전이학습임. 사전 학습된 백본 없이는 현대 AI 생태계가 성립하지 않음.


2. 핵심 용어

2.1 업스트림 (Upstream) / 백본 (Backbone)

  • 정의 — 원래 목적에 맞게 사전 학습된 모델
  • 이미지 인식 계열 — VGG16, VGG19 (딥러닝을 이미지 인식 대회에 최초로 적용한 모델의 발전형, 대부분 프레임워크에 내장)
  • 객체 탐지 — YOLO
  • 자연어 처리 — BERT, BART, GPT
  • 공통점 — 모두 백본으로 활용 가능. 다운스트림 모델 구축의 출발점이 됨

2.2 다운스트림 (Downstream)

  • 정의 — 새로 해결해야 할 문제, 신규 학습이 필요한 영역
  • 극단적 예시 — VGG 모델(이미지 분류용)을 가져와서 텍스트 생성에 응용
  • 효과 — 전이학습을 활용하면 새로운 비즈니스 요구에 맞는 모델을 빠르게 구축 가능

업스트림은 "범용으로 잘 학습된 출발점", 다운스트림은 "내가 풀고 싶은 구체적인 문제"임. 둘을 연결하는 다리가 전이학습 기법임.


3. 전이학습 구조 변형

사전 학습된 모델을 그대로 쓰지 않고 목적에 맞게 재구성할 수 있음. 세 가지 패턴이 있음.

3.1 구조 변형 패턴

  • 원본 유지 — 기존 구조를 그대로 두고 사용 (제로샷에 가까움)
  • 부분 제거 + 재구성 — 특정 신경망 부분(주로 마지막 출력층)을 제거하고 새로 구성
  • 하이브리드 연결 — 여러 신경망 구조를 연결해서 새롭게 구성

3.2 층별 학습 여부 선택

  • 선별적 학습 — 층별로 학습 여부를 개별 설정 가능
  • 활용 — 일부 층은 가중치를 동결(freeze)하고, 일부 층만 학습시키는 방식
  • 장점 — 사전 학습된 일반 특징은 유지하고, 새 데이터에 맞는 부분만 미세 조정

4. 학습 방법

전이학습은 단일 기법이 아니라 여러 학습 전략을 포함하는 우산 개념임.
  • 파인튜닝(Fine-tuning) — 가중치를 초기화하거나 일부만 재학습. 시간 소요는 크지만 특화 모델 구축 가능
  • 제로샷 러닝(Zero-shot) — 사전 학습된 모델을 그대로 추론·생성에 사용. 학습 데이터 0개
  • 원샷 러닝(One-shot) — 데이터 1개로 학습 → 파라미터 미세 조정
  • 퓨샷 러닝(Few-shot) — 데이터 몇 개로 학습 → LLM 시대 프롬프트 엔지니어링의 핵심 개념

5. 사전 학습된 모델 허브

프레임워크별로 사전 학습된 모델을 다운로드할 수 있는 공식 허브가 존재함. 직접 학습할 필요 없이 가져와서 바로 사용 가능.

6. VGG16 로드 및 설정

Keras에 내장된 VGG16을 사용해 전이학습 베이스를 구성함. VGG16은 1000개의 이미지 클래스를 분류하기 위해 만든 이미지 분류용 업스트림 모델임.

6.1 모델 로드

from tensorflow.keras.applications import VGG16

transfer_model = VGG16(
    include_top=False,
    weights='imagenet',
    input_shape=(150, 150, 3)
)
  • include_top=False — 사전 학습된 모델의 마지막 출력층(1×1×1000, 1000개 클래스 분류용)을 제거. 새 목적에 맞는 출력층을 따로 구성하기 위함
  • weights='imagenet' — ImageNet으로 학습된 가중치를 그대로 가져옴
  • input_shape=(150, 150, 3) — 입력 이미지 크기 재정의. 원본 VGG16은 (224, 224, 3)이지만 새 모델 목적에 맞게 (150, 150, 3)으로 축소

include_top=False가 전이학습의 핵심 옵션임. 마지막 분류층만 떼어내고 본인 데이터에 맞는 새 출력층을 붙이는 방식이 가장 일반적인 구성 패턴임.

6.2 가중치 동결

transfer_model.trainable = False
transfer_model.summary()
  • 동결 목적 — 사전 학습된 가중치를 그대로 사용, 학습 중 수정 방지
  • 결과 확인 — Non-trainable params: 14,714,688 (56.13 MB) → 약 1,470만 개 파라미터가 학습 불가 상태로 고정됨
  • 효과 — VGG16의 이미지 특징 추출 능력은 유지하면서, 새로 추가한 층만 학습

7. 커스텀 모델 구성

VGG16을 백본으로 두고, 그 위에 이진 분류용 커스텀 층을 쌓아 다운스트림 모델을 완성함.

7.1 모델 사양

  • 입력 이미지 — (150, 150, 3)
  • 출력 — 0과 1로 분류 (이진 분류)
  • 백본 출력 형태 — VGG16의 마지막 conv block 출력은 (None, 4, 4, 512)

7.2 신규 층 구성 요소

from tensorflow.keras.layers import Dense, Flatten, Activation, Dropout
from tensorflow.keras.models import Sequential
  • Flatten — n차원 데이터를 1차원으로 펼침. (4, 4, 512) → 8192
  • Activation — 활성화 함수를 별도의 층으로 구성
  • Dropout — 과적합 방지를 위해 일정 비율의 뉴런을 학습에서 제외

7.3 전체 모델 조립

new_model = Sequential()

# 1. 사전 학습된 백본 연결
new_model.add(transfer_model)           # (None, 4, 4, 512)

# 2. 4D → 2D 펼치기 (8192 = 4*4*512)
new_model.add(Flatten())

# 3. 급격히 줄이지 않고 서서히 수렴 (8192 → 64)
new_model.add(Dense(64))

# 4. 활성화 함수로 데이터 분포 조정 (음수 영역 처리)
new_model.add(Activation('relu'))

# 5. 과적합 방지 (50% 비율로 학습 방해)
new_model.add(Dropout(rate=0.5))

# 6. 최종 수렴 (64 → 1)
new_model.add(Dense(1))

# 7. 이진 분류용 출력 보정
new_model.add(Activation('sigmoid'))

new_model.summary()
백본 → Flatten → Dense(64) → ReLU → Dropout → Dense(1) → Sigmoid 순서로 흐름. 핵심은 백본 뒤에 분류기(classifier head)를 새로 붙인다는 점임.

7.4 구성 의도

  • 서서히 수렴 — 8192 → 64 → 1로 단계적 축소. 한 번에 줄이지 않는 이유는 정보 손실을 방지하기 위함
  • ReLU 위치 — Dense 뒤에 별도 층으로 배치하여 비선형성 부여
  • Dropout 0.5 — 학습 시 무작위로 절반의 뉴런을 제외 → 특정 뉴런 의존도 감소 → 과적합 방지
  • Sigmoid — 출력값을 0~1 사이 확률로 변환. 이진 분류에서 표준

Dropout은 학습 시에만 작동하고 추론(예측) 시에는 자동으로 비활성화됨. 비율 0.5는 일반적인 시작점이며, 데이터·모델에 따라 0.2~0.5 범위에서 조정함.


8. 요약

  • 개념 — 사전 학습된 모델(업스트림/백본)의 가중치를 재사용하여 새 과제(다운스트림)를 빠르게 해결
  • 구조 변형 — 원본 유지 / 부분 제거 후 재구성 / 여러 모델 연결 중 선택
  • 학습 전략 — 파인튜닝, 제로샷, 원샷, 퓨샷 러닝 모두 가능. 층별 동결도 자유롭게 설정
  • 모델 허브 — TensorFlow Hub, Kaggle Models, PyTorch Hub, Hugging Face에서 사전 학습 모델 다운로드
  • VGG16 핵심 옵션 — include_top=False(마지막 분류층 제거), weights='imagenet'(가중치 유지), trainable=False(가중치 동결)
  • 커스텀 구성 패턴 — 백본 → Flatten → Dense → ReLU → Dropout → Dense → Sigmoid

전이학습의 본질은 "바닥부터 다시 학습하지 않는다" 는 발상의 전환임. 수백만 장의 ImageNet으로 학습된 시각 특징 추출 능력을 그대로 빌려오고, 본인의 문제에 필요한 마지막 분류기만 새로 학습함. 이 패턴이 그대로 NLP로 확장된 결과가 BERT·GPT 계열의 파인튜닝이고, 더 진화한 형태가 LLM의 프롬프트 기반 퓨샷 러닝임. 회귀 → 퍼셉트론 → DNN으로 이어진 구조 설계 능력이 전이학습 단계에서 비로소 실용성과 만나는 지점이라고 볼 수 있음.

'SK플래닛 ai활용 데이터엔지니어 과정 2기 > ML & DL' 카테고리의 다른 글

DL 4 - NLP 모델  (0) 2026.05.26
DL 3 - CNN  (0) 2026.05.26
DL 1 - 딥러닝 개요  (0) 2026.05.26
ML 3 - 머신러닝 지도학습 (회귀)  (0) 2026.05.25
ML 2 - 간단한 구현  (1) 2026.05.21