검색
← 모듈 로드맵

전이 학습과 자기지도 학습: 남이 배운 표현 빌려 쓰기

강의 · 준전문가 · KAITABASE 정리

특성 추출 · 미세조정 · 층별 학습률과 대조 학습(NT-Xent) · MAE를 손계산으로 익히는 전이 학습 수업

먼저 알아야 할 것

합성곱 신경망 · ResNet소프트맥스 · 교차 엔트로피코사인 유사도과적합과 검증

다루는 내용

사전학습 모델을 새 과제에 옮겨 쓰는 전이 학습을 다룹니다. 특성 추출과 미세조정의 차이, 층 고정과 층별 학습률을 ResNet-18 파라미터 수와 D2L 핫도그 예제로 설명합니다. 정답 없이 표현을 배우는 자기지도 학습으로 SimCLR의 NT-Xent 대조 손실(온도 효과 손계산)과 MAE의 75% 마스크 복원을 정리합니다.

해설

전이 학습과 자기지도 학습: 남이 배운 표현 빌려 쓰기

이미지 수천 장으로 쓸 만한 분류기를 만들 수 있는 이유는, 수백만 장으로 이미 학습한 모델의 "보는 눈"을 빌려 오기 때문입니다. 이 수업은 사전학습 모델을 가져와 쓰는 두 방법 — 특성 추출과 미세조정 — 과 층 고정 · 학습률 차등 같은 실무 요령을 익히고, 정답 없이 표현을 배우는 자기지도 학습(대조 학습 SimCLR, 마스크 복원 MAE)을 손계산으로 이해합니다.

항목내용
참고 자료D2L '미세조정(Fine-Tuning)' 절 · d2l.ai/chapter_computer-vision/fine-tuning.html, SimCLR(arXiv 2002.05709), MAE(arXiv 2111.06377)
트랙 · 수준딥러닝 기초 · 중급
이 수업의 범위사전학습 · 전이 학습, 특성 추출 vs 미세조정, 층 고정, 층별 학습률, 도메인 차이, 자기지도 학습, 대조 학습(InfoNCE · NT-Xent), 온도, 마스크 오토인코더
먼저 알면 좋은 것합성곱 신경망과 ResNet, 소프트맥스 · 교차 엔트로피, 코사인 유사도, 과적합

들어가기 전에

한눈에 보기

  • 사전학습(pretraining) → 전이(transfer)라는 두 단계가 왜 적은 데이터에서 잘 통하는지 압니다.
  • 특성 추출(feature extraction)과 미세조정(fine-tuning)의 차이, 언제 무엇을 고르는지 판단합니다.
  • 층 고정 · 층별 학습률 같은 실무 요령을 파라미터 수 계산으로 확인합니다.
  • 정답 없이 배우는 자기지도 학습의 두 갈래 — 대조 학습과 마스크 복원 — 을 구분합니다.
  • 대조 손실(NT-Xent)과 온도의 효과를 숫자 4개로 직접 계산합니다.

1. 왜 빌려 쓰나: 사전학습과 전이

직관(해설용 비유): 요리 학교를 나온 사람은 처음 보는 나라 요리도 금방 배웁니다. 칼질 · 불 조절 같은 기본기가 이미 있기 때문입니다. 이미지 모델도 ImageNet처럼 큰 데이터로 "모서리 · 질감 · 부분 모양"을 보는 기본기를 먼저 배우면, 새 과제에서는 마지막 판단만 새로 익히면 됩니다.

단계

  1. 원천 데이터(source)로 큰 모델을 학습합니다. 예: ImageNet 1,000 클래스 분류.
  2. 그 모델의 구조와 가중치를 복사해 목표 모델(target)을 만듭니다. 단, 출력층은 뺍니다.
  3. 목표 과제의 클래스 수에 맞는 새 출력층을 붙이고 무작위로 초기화합니다.
  4. 목표 데이터로 학습합니다. 새 출력층은 처음부터, 나머지는 사전학습 가중치에서 출발해 조금씩 고칩니다.

이 네 단계는 D2L '미세조정' 절이 설명하는 순서 그대로입니다. D2L 예제는 핫도그 사진 분류(핫도그 / 아님)로, ImageNet으로 학습한 ResNet-18을 가져와 마지막 층만 출력 2개짜리 선형층으로 바꿉니다.

왜 통하나: 합성곱 신경망의 앞쪽 층은 모서리 · 색 대비처럼 어떤 사진에서나 쓸모 있는 특징을 배우고, 뒤쪽 층으로 갈수록 과제에 특화된 특징을 배웁니다. 앞쪽 지식은 새 과제에서도 거의 그대로 쓸 수 있으니, 적은 데이터로는 뒤쪽만 맞추면 됩니다. 처음부터 학습하면 수천 장으로 수백만 개 가중치를 정해야 해 과적합이 쉽습니다.

mermaid
flowchart LR
  A[큰 원천 데이터 예: ImageNet] --> B[사전학습 모델]
  B --> C{목표 데이터가 얼마나 많고 비슷한가}
  C -- 적고 비슷함 --> D[특성 추출: 몸통 고정 + 새 출력층만 학습]
  C -- 중간 --> E[미세조정: 뒤쪽 층 + 출력층 학습, 작은 학습률]
  C -- 많거나 많이 다름 --> F[전체 미세조정 또는 처음부터 학습]
  D --> G[검증 데이터로 비교 후 선택]
  E --> G
  F --> G

2. 특성 추출과 미세조정

방법학습하는 부분장점단점
특성 추출(feature extraction)새 출력층(또는 작은 분류기)만빠르고, 데이터가 아주 적어도 과적합이 적음원천과 목표가 많이 다르면 성능 한계
미세조정(fine-tuning)몸통 일부 또는 전부 + 출력층목표 데이터에 맞게 특징까지 고침학습률을 잘못 잡으면 사전학습 지식을 망가뜨림

숫자로 해 보기(파라미터 수): torchvision 문서 기준 ResNet-18(ImageNet 가중치)의 파라미터는 11,689,512개입니다. 마지막 층은 512차원 특징을 1,000개 클래스로 바꾸는 선형층이라 512×1000+1000=513,000512 \times 1000 + 1000 = 513{,}000개입니다. 이를 출력 2개로 바꾸면 512×2+2=1,026512 \times 2 + 2 = 1{,}026개입니다.

  • 특성 추출: 새로 학습하는 가중치는 1,026개뿐입니다. 사진 2,000장으로도 충분히 정할 수 있는 크기입니다.
  • 전체 미세조정: 몸통 약 1,118만 개(11,689,512−513,000=11,176,51211{,}689{,}512 - 513{,}000 = 11{,}176{,}512)까지 모두 움직입니다.

층 고정(freezing)

특성 추출은 몸통 가중치의 기울기를 계산하지 않게(PyTorch에서는 requires_grad = False) 막는 것입니다. 중간 방법으로 앞쪽 층만 고정하고 뒤쪽 블록만 푸는 방식도 흔합니다. 먼저 출력층만 몇 에포크 학습한 뒤 몸통을 푸는 순서도 쓰는데, 무작위로 시작한 출력층이 처음에 큰 기울기를 내보내 몸통을 흔드는 것을 줄이려는 것입니다(해설용 요령).

층별 학습률(discriminative learning rate)

직관: 이미 잘 배운 부분은 살살, 새로 붙인 부분은 세게 고칩니다.

θ몸통←θ몸통−η ∇θ몸통L,θ출력←θ출력−c η ∇θ출력L\theta_{\text{몸통}} \leftarrow \theta_{\text{몸통}} - \eta \, \nabla_{\theta_{\text{몸통}}} L, \qquad \theta_{\text{출력}} \leftarrow \theta_{\text{출력}} - c\,\eta \, \nabla_{\theta_{\text{출력}}} L
기호뜻
η\eta기본 학습률
cc출력층 배수(D2L 예제는 10)
LL목표 데이터의 손실

D2L 예제는 기본 학습률 5×10−55 \times 10^{-5}로 몸통을 미세조정하고 출력층에는 그 10배인 5×10−45 \times 10^{-4}를 씁니다. 비교용으로 처음부터 학습하는 모델은 전체에 5×10−45 \times 10^{-4}를 씁니다. 책의 결과에서 미세조정 모델이 같은 에포크 안에 더 좋은 정확도를 냅니다.

왜 작은 학습률인가: 사전학습 가중치는 이미 좋은 곳 근처에 있습니다. 큰 학습률로 크게 걸으면 그 좋은 곳을 벗어나 버립니다. 이를 흔히 "파국적 망각(catastrophic forgetting)"과 연결해 설명합니다.

언제 무엇을 고르나 (경험칙)

목표 데이터원천과 비슷함원천과 다름 (예: 의료 영상, 위성 사진)
적음특성 추출앞쪽 층 특징만 쓰거나 일부 미세조정, 증강 강하게
많음전체 미세조정전체 미세조정(또는 처음부터)

경험칙일 뿐이니 마지막 결정은 검증 점수로 합니다. 입력 전처리(크기 · 평균 · 표준편차 정규화)는 사전학습 때와 똑같이 맞춰야 합니다. 이를 어기면 성능이 이유 없이 떨어지는 흔한 실수가 됩니다.

3. 자기지도 학습: 정답 없이 배우기

직관: 정답 라벨을 사람 손으로 다는 것은 비쌉니다. 그래서 데이터 자체에서 문제를 만들어 풉니다. "같은 사진을 두 번 다르게 꾸몄을 때 같은 사진임을 알아보기"(대조 학습), "가린 부분 맞히기"(마스크 복원)가 대표적입니다. 언어 모델의 "다음 토큰 맞히기"도 같은 가족입니다.

갈래만드는 문제대표
대조 학습(contrastive learning)같은 원본에서 나온 두 보기는 가깝게, 다른 원본은 멀게SimCLR(2020)
마스크 복원(masked modeling)입력 일부를 가리고 원래 값 복원MAE(2021), 언어의 BERT
다음 토큰 예측앞부분으로 다음 조각 예측GPT 계열

자기지도 학습으로 얻은 몸통은 2절의 방법(특성 추출 · 미세조정)으로 똑같이 전이합니다. 특성 추출 쪽 평가를 논문들은 흔히 선형 평가(linear evaluation) — 몸통을 고정하고 선형 분류기만 학습해 정확도를 재는 것 — 로 보고합니다.

4. 대조 학습: SimCLR와 NT-Xent 손실

단계 (SimCLR 논문의 틀)

  1. 미니배치에서 사진 NN장을 뽑습니다.
  2. 사진마다 무작위 증강을 두 번 적용해 보기(view) 2개를 만듭니다. 모두 2N2N개입니다.
  3. 인코더(예: ResNet) ff로 표현 hh를 뽑고, 작은 투영 헤드 gg(은닉층 하나 + ReLU인 MLP)로 z=g(h)z = g(h)를 만듭니다.
  4. 같은 사진에서 나온 두 보기는 양성 쌍, 나머지 2(N−1)2(N-1)개는 음성으로 봅니다.
  5. 아래 손실로 양성 쌍의 유사도를 높이고 음성과는 낮춥니다.
  6. 학습이 끝나면 투영 헤드는 버리고 인코더 ff의 표현 hh를 씁니다.
ℓi,j=−log⁡exp⁡(sim(zi,zj)/τ)∑k=12N1[k≠i] exp⁡(sim(zi,zk)/τ)\ell_{i,j} = -\log \frac{\exp(\mathrm{sim}(z_i, z_j)/\tau)}{\sum_{k=1}^{2N} \mathbb{1}[k \ne i]\,\exp(\mathrm{sim}(z_i, z_k)/\tau)}
기호뜻
zi,zjz_i, z_j같은 사진에서 나온 두 보기의 투영 벡터
sim(u,v)\mathrm{sim}(u, v)코사인 유사도 u⊤v/(∥u∥∥v∥)u^\top v / (\lVert u\rVert\lVert v\rVert)
τ\tau온도(temperature) — 유사도 차이를 얼마나 크게 볼지
1[k≠i]\mathbb{1}[k \ne i]자기 자신은 분모에서 뺀다는 표시

논문은 이 손실을 NT-Xent(정규화 · 온도 조절 교차 엔트로피)라 부릅니다. 모양은 "양성 쌍을 정답 클래스로 하는 소프트맥스 분류"와 같습니다. 이런 손실을 흔히 InfoNCE 계열이라고 합니다.

숫자로 해 보기(해설용): 기준 보기 ziz_i와 다른 3개의 유사도가 양성 0.9, 음성 0.1 · 0.3 · −0.2라고 합시다.

온도 τ\tau양성에 주는 확률손실 −log⁡p-\log p
1.00.4290.846
0.50.6200.479
0.10.9970.003

τ=1\tau = 1일 때 계산: 분자 e0.9≈2.460e^{0.9} \approx 2.460, 분모 e0.9+e0.1+e0.3+e−0.2≈2.460+1.105+1.350+0.819=5.734e^{0.9} + e^{0.1} + e^{0.3} + e^{-0.2} \approx 2.460 + 1.105 + 1.350 + 0.819 = 5.734, 확률 ≈0.429\approx 0.429, 손실 ≈0.846\approx 0.846입니다(python으로 재확인한 해설용 값).

온도의 효과: 온도가 낮으면 작은 유사도 차이가 크게 벌어져, 이미 쉽게 구분되는 예의 손실은 거의 0이 되고 기울기는 "헷갈리는 음성(hard negative)"에 몰립니다. 너무 낮으면 학습이 불안정해지고, 너무 높으면 구분이 흐려집니다. 그래서 온도는 조정해야 하는 하이퍼파라미터입니다.

논문이 찾은 것 (SimCLR 초록 · 본문):

  • 증강 조합이 결정적이며, 특히 무작위 자르기 + 색 왜곡 조합이 좋은 성능에 중요했습니다.
  • 표현과 손실 사이에 학습되는 비선형 변환(투영 헤드)을 두면 표현 품질이 크게 좋아졌습니다.
  • 지도 학습보다 큰 배치와 긴 학습에서 이득을 봤습니다. 본문의 기본 설정은 배치 4,096, 100 에포크입니다.
  • ImageNet에서 SimCLR 표현 위의 선형 분류기가 top-1 정확도 76.5%를 냈고, 라벨 1%만으로 미세조정했을 때 top-5 85.8%를 보고했습니다.

왜 배치가 커야 하나: 음성 예가 같은 배치 안에서 나오므로, 배치가 클수록 한 번에 비교할 음성이 많아집니다. 이후 방법들은 메모리 큐를 두거나(MoCo 계열) 음성 없이 학습하는 방법으로 이 부담을 줄이려 했습니다.

5. 마스크 복원: MAE

직관: 사진의 대부분을 가리고 남은 조각으로 전체를 상상해 그리게 하면, 모델은 물체의 모양과 구조를 이해해야만 잘 그릴 수 있습니다.

단계 (MAE 논문의 틀)

  1. 이미지를 비전 트랜스포머처럼 패치로 자릅니다.
  2. 패치의 큰 비율(예: 75%)을 무작위로 가립니다.
  3. 인코더는 보이는 패치만 처리합니다(가린 자리 토큰을 넣지 않음).
  4. 가벼운 디코더가 인코더 출력과 가린 자리 표시 토큰을 받아 원래 픽셀을 복원합니다.
  5. 손실은 가린 패치의 픽셀 복원 오차로 잽니다.
  6. 학습 뒤에는 디코더를 버리고 인코더를 전이합니다.

숫자로 해 보기(해설용): 224×224 이미지를 16×16 패치로 자르면 14×14=19614 \times 14 = 196개 패치입니다. 75%를 가리면 인코더가 보는 패치는 196×0.25=49196 \times 0.25 = 49개뿐입니다. 셀프 어텐션 비용은 토큰 수의 제곱에 비례하니, 대략 492/1962=1/1649^2 / 196^2 = 1/16로 줄어듭니다(디코더 비용 제외한 해설용 어림).

논문이 보고한 것 (MAE 초록): 높은 마스크 비율(예: 75%)이 자명하지 않으면서 의미 있는 자기지도 과제가 되고, 비대칭 인코더-디코더 설계 덕에 학습을 3배 이상 빠르게 했습니다. ImageNet-1K 데이터만 쓴 방법 가운데 ViT-Huge가 87.8%로 가장 높은 정확도를 냈다고 보고합니다.

왜 이미지에서는 많이 가리나: 글은 단어 하나하나에 정보가 빽빽하지만, 사진은 이웃 픽셀끼리 거의 같아 조금만 가리면 주변을 베껴 쉽게 채웁니다. 많이 가려야 "이해"가 필요한 문제가 됩니다. BERT가 토큰 약 15%를 가리는 것과 대비되는 설계입니다.

6. 실무 체크리스트

  • 전처리 맞추기: 사전학습 때 쓴 입력 크기 · 정규화 값과 같게 합니다.
  • 기준선 먼저: 특성 추출 + 선형 분류기 점수를 먼저 재고, 미세조정이 그보다 나은지 비교합니다.
  • 학습률: 미세조정은 처음부터 학습할 때보다 작은 학습률로 시작하고, 새 출력층에는 더 큰 학습률을 줍니다.
  • 배치 정규화 주의: 배치가 아주 작으면 배치 정규화 통계가 흔들립니다. 몸통을 고정할 때 BN 층을 평가 모드로 두는 선택지도 있습니다.
  • 라이선스 확인: 사전학습 가중치마다 사용 조건이 다릅니다.

연습 문제

1. ResNet-18의 512차원 특징 위에 클래스 5개 분류기를 붙이면 새로 학습하는 파라미터는 몇 개인가요?

풀이: 512×5+5=2,565512 \times 5 + 5 = 2{,}565개입니다.

2. 4절 예에서 온도 0.5일 때 손실이 0.479인 것을 확인해 보세요.

풀이: 유사도를 0.5로 나누면 1.8, 0.2, 0.6, −0.4입니다. e1.8≈6.050e^{1.8} \approx 6.050, 분모 ≈6.050+1.221+1.822+0.670=9.763\approx 6.050 + 1.221 + 1.822 + 0.670 = 9.763, 확률 ≈0.620\approx 0.620, −ln⁡0.620≈0.479-\ln 0.620 \approx 0.479입니다.

3. 배치에 사진 256장이 있으면 SimCLR에서 보기 하나당 음성 예는 몇 개인가요?

풀이: 보기는 2N=5122N = 512개이고 자기 자신과 양성 짝을 빼면 2(N−1)=5102(N-1) = 510개입니다.

4. 패치 196개에서 마스크 비율을 90%로 올리면 인코더가 보는 패치는 몇 개인가요?

풀이: 196×0.1=19.6196 \times 0.1 = 19.6이므로 반올림 방식에 따라 19~20개입니다(구현은 보통 정수로 버림).

스스로 점검

  1. 데이터가 500장뿐이고 원천 데이터와 비슷한 사진이라면 무엇부터 해 보나요?
    • 답: 몸통을 고정한 특성 추출(새 출력층만 학습)부터 해 보고, 검증 점수가 더 필요하면 뒤쪽 블록만 작은 학습률로 미세조정합니다.
  2. 대조 학습에서 온도를 낮추면 무엇이 달라지나요?
    • 답: 유사도 차이가 확대돼 쉬운 음성의 영향은 사라지고 어려운 음성에 기울기가 몰립니다. 너무 낮으면 불안정해집니다.
  3. MAE의 인코더가 가린 패치를 아예 받지 않는 이유는?
    • 답: 보이는 25%만 처리해 연산을 크게 줄이고, 복원은 가벼운 디코더에 맡기기 위해서입니다. 이 비대칭 설계가 학습을 빠르게 했습니다.

용어 정리

용어쉬운 뜻
사전학습(pretraining)큰 데이터로 먼저 일반적인 표현을 학습하는 단계
전이 학습(transfer learning)한 과제에서 배운 것을 다른 과제에 옮겨 쓰기
특성 추출(feature extraction)사전학습 몸통을 고정하고 그 출력을 특징으로만 쓰기
미세조정(fine-tuning)사전학습 가중치에서 출발해 목표 데이터로 더 학습하기
층 고정(freezing)일부 층의 가중치를 학습하지 않게 막기
층별 학습률(discriminative learning rate)층마다 다른 학습률을 주기
자기지도 학습(self-supervised learning)데이터에서 스스로 만든 문제로 학습하기
대조 학습(contrastive learning)같은 것은 가깝게, 다른 것은 멀게 배우는 학습
양성 쌍 · 음성(positive pair · negative)같은 원본에서 나온 보기 쌍 · 다른 원본
투영 헤드(projection head)대조 손실 직전에 붙이는 작은 MLP, 학습 뒤 버림
온도(temperature)소프트맥스 전에 점수를 나누는 값, 분포의 뾰족함 조절
선형 평가(linear evaluation)몸통 고정 후 선형 분류기만 학습해 표현 품질을 재는 방법
마스크 오토인코더(MAE)가린 패치를 복원하며 배우는 자기지도 방법

더 깊이 보려면

D2L의 '미세조정' 절은 핫도그 데이터로 미세조정과 처음부터 학습을 직접 비교하는 코드를 제공합니다. SimCLR 논문은 증강 조합 · 투영 헤드 · 배치 크기의 영향을 실험별로 나눠 보여 주고, MAE 논문은 마스크 비율과 디코더 크기에 따른 변화를 보고합니다. 언어 쪽의 같은 아이디어는 BERT(마스크 복원)와 GPT(다음 토큰 예측)에서 이어집니다.

다음에 볼 것

라이선스

이 글은 원문 번역이 아니라 KAITABASE가 직접 쓴 해설이며, 숫자 예는 설명용입니다(손계산은 python으로 재확인). 참고 자료 D2L은 CC BY-SA 4.0입니다. 논문 수치는 각 arXiv 초록 · 본문에서 확인한 것만 옮겼습니다.

출처

  • 참고: https://d2l.ai/chapter_computer-vision/fine-tuning.html (D2L 미세조정 절 — 네 단계, 핫도그 예제, 학습률 5e-5 · 출력층 10배)
  • 원문: https://arxiv.org/abs/2002.05709 (2020 · Ting Chen 외, SimCLR)
  • 원문: https://arxiv.org/abs/2111.06377 (2021 · Kaiming He 외, MAE)
  • 참고: https://docs.pytorch.org/vision/main/models/generated/torchvision.models.resnet18.html (ResNet-18 파라미터 수)

AI 원리부터 이해하기 · 딥러닝 기초 모듈

딥러닝 기초 모듈 학습

이 글은 딥러닝 기초 모듈의 학습 자료입니다. 전체 29개 자료 중 20번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

본문 자체 작성 · 참고 자료 D2L(CC BY-SA 4.0)