TIL: Overfitting Solutions - Regularization, Batch Norm, Data Aug & Transfer Learning

수정·2026년 3월 24일

TIL

목록 보기
10/10

오늘의 학습목표
- 데이터셋을 훈련, 검증, 테스트로 분리하는 이유와 사용법을 이해한다
- 최적화를 위한 튜닝방법의 종류와 각각의 효과를 이해한다
- 모델 학습의 목표를 이해하고 일반화 성능을 높이기 위한 방법들을 살펴본다

이 포스트의 전반적인 개념은 주로 해당 도서의 3장을 참조하고 있습니다.
[파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습] - 윤대희,김동화,손종민,진현두

0. 들어가며

  • 모집단 / 표본집단
    • 미적분 / 확률과 통계 / 기하로 이뤄지는 수능 수학이 있다고 생각해 봅시다.
    • 편의를 위해 미적분 문제 100개, 확통 100개, 기하 100개의 문제가 있다고 생각했을 때,
    • 측정하고자 하는 모집단 → 수능 수학 전체에서의 능력 → 미적분/확률과 통계/기하 문제의합
    • 우리가 얻을 수 있는 데이터 = 표본집단 → 앞서 말한 문제 100개에서 모종의 방법으로 가져온 문제들의 집합
    • 여기서 문제.
      • 수능 수학이라는 일반적인 분야를 잘 하고 싶은데, 미적분 문제만 주구장창 풀었다(모델 학습)
        • → 확률 통계와 기하가 섞인 문제집에서 높은 점수를 받기 어려움.
      • 문제집을 받았는데, 미적분은 240개, 확률과 통계와 기하는 각각 30개만 있는 문제집을 풀었다
        • → 상대적으로 미적분을 잘 푸는 것에 비해 확률과 통계/기하는 점수가 낮음.
        • 해결책 : 문제를 무작위로 뽑아오자 !
          • 10개의 문제를 뽑아왔을 때 → 문제의 분포가 불균형할 확률이 높음.
          • 100개의 문제를 뽑아왔을 때 → 문제의 분포가 상대적으로 고르게 분산되어 있음.
          • 300개 문제 모두를 뽑아왔을 때(모집단 전체 활용) → 문제의 분포가 모집단과 일치함
          • 일반화하자면, 모집단에서 가져온 데이터 양이 많을 수록 모집단을 더 정확하게 표현한다고 생각할 수 있음.
          • 따라서, 문제를 많이 뽑아올 수록 수능 수학 실력이라는 일반적인 능력을 발달시키기 좋아짐.
  • 과적합:
    • 수능 수학 전 출제범위를 잘 풀어야 하는데 미적분만 잘 풀게 되는 현상
    • 혹은, 표본집단이 가지고 있는 패턴만을 과하게 학습한 나머지(예시 : 미적분의 비중이 높은 수학 문제집) 학습한 모델과 모집단에 최적화된 모델의 성능이 동떨어지는 경우
      • 한 가지 트릭으로, 모집단 전체를 뽑아와서 비교하는 것이 아니라 모집단에서 뽑아온 다른 종류의 표본을 사용해 성능을 측정
      • → test set
    • 더 나아가서, 표본집단에(뽑아온 문제집) 최적화한 모델이 모집단(’일반적인’ 문제)에서 상대적으로 낮은 현상을 내는 현상.
  • 과소적합
    • 수능 수학을 모두 잘 한다고 보기에는 알고 있는 개념의 수/문제 풀이 방법(모델 복잡도)의 가짓수가 부족해서, 최적화되었다고 보기에는 학습량이 부족한 경우.

과대적합과 과소적합

두 개념 모두 아래의 공통점을 지니고 있다

  • 성능 저하
    기본적으로 모델의 성능을 저하시킨다
    • 과대적합은 훈련 데이터에서는 잘 수행되는 것처럼 보이더라도 새로운 데이터에서는 제대로 값을 예측하지 못함
    • 과소적합은 새로운 데이터에 대해 예측을 수행하지 못하며, 전반적으로 모델의 성능이 좋지 못하는 경우
  • 모델 선택 실패
    두 개념 모두 모델을 변경하거나 모델 구조를 개선하여 문제 완화가 가능하다
    • 과대적합: 모델의 구조가 너무 복잡해 훈련 데이터에만 의존하게 되어 성능이 저하됨
    • 과소적합: 모델이 구조가 너무 단순해 데이터의 특징을 제대로 학습하지 못함
  • 편향-분산 트레이드오프
    낮은 편향과 낮은 분산을 가져야한다
    • 분산이 높으면 추정치에 대한 변동 폭이 커지고,
      데이터가 갖고 있는 노이즈까지 학습 과정에 포함되어 과대적합 문제를 일으킴
    • 편향이 높으면 추정치가 항상 일정한 값을 갖게 될 확률이 높다
      데이터의 특징을 제대로 학습하지 못해 과소적합 문제를 일으킴
    • 편향과 분산은 서로 반비례관계이다
      • 모델이 복잡해질수록 분산은 커지고 편향은 작아짐
        (모델이 단순해질수록 분산은 작아지고 편향은 커짐)
      • 오류를 최소화하기 위해 분산과 편향의 균형을 맞춰야 함

문제 해결

과대적합은 모델의 일반화 능력을 저하해 문제가 발생.
과소적합은 모델이 데이터의 특징을 제대로 학습할 수 없을 때 발생.

  • 데이터 수집
    훈련 데이터에서 노이즈를 학습하지 않으면서 일반적인 규칙을 찾을 수 있도록 학습 데이터의 수를 증가시키는 방법
  • 피처 엔지니어링
    신규 데이터 수집이 어려운 경우. 변수나 특징을 추출하거나 피처를 더 작은 차원으로 축소
    • 모델이 더 학습하기 쉬운 형태의 데이터로 변환
      (노이즈에 더 강건하 모델 구축이 가능해짐)
  • 모델 변경
    • 과대적합: 모델의 계층을 축소하거나 더 간단한 모델로 변경
    • 과소적합: 모델의 계층을 확장하거나 더 복잡한 모델로 변경
  • 조기 중단 Early Stopping
    과대적합이 발생하기 전에 모델 학습을 중단하는 방법
    • 모델 학습 시에 검증 데이터세트로 성능을 지속적으로 평가해 모델의 성능이 저하되기 전에 조기 중단
  • 배치 정규화 Batch Normalization
    모델의 계층마다 평균과 분산을 조정해 내부 공변량 변화를 줄인다
    • 모델 성능과 모델 안정성 향상 효과
    • 뒤에서 더 자세히 다룸
  • 가중치 초기화 Weight Initialization
    매개변수를 최적화하기 전에 가중치 초깃값을 설정하는 프로세스
    • 학습 시 기울기가 매우 커지거나 작아지는 문제는 학습을 어렵게 만들거나 불가능하게 함
    • 적절한 초기 가중치를 설정해 과대적합을 방지할 수 있다
  • 정칙화 Regularization
    목적함수에 패널티를 부여하는 방법
    • 모델을 일부 제한해 과대적합을 방지
    • 학습 조기 중단, L1정칙화, L2정칙화, 드롭아웃, 가중치 감쇠 등
    • 뒤에서 자세히 다룸

배치 정규화

내부 공변량 변화(Internal Covariate Shift)를 줄여 과대적합을 방지하는 기술

  • 인공 신경망을 학습할 때 입력값을 배치 단위로 나눠 학습을 진행
    • 배치 단위로 나눠 학습하는 경우 상위 계층의 매개변수가 갱신될 때마다 현재 계층에 전달되는 데이터의 분포도 변경됨
    • 각 계층은 배치 단위의 데이터로 인해 계속 변화되는 입력 분포를 학습하게 됨
    • 그래서, 인공 신경망의 성능과 안정성이 낮아져 학습 속도가 느려진다!
  • 내부 공변량 변화란?
    • 계층마다 입력 분포가 변경되는 현상
    • 은닉층에서 다음 은닉층으로 전달될 때 입력값이 균일해지지 않아, 가중치가 제대로 갱신되지 않을 수 있음
      즉, 학습이 불안정해지고 느려져 가중치가 일정한 값으로 수렴하기 어렵다
    • 또한, 초기 가중치 값에 민감해져 일반화하기 어려워져 더 많은 학습 데이터를 요구함
  • 위의 문제들을 해결하기 위해 각 계층에 배치 정규화를 적용
    • 각 계층에 대한 입력이 일반화되고 독립적으로 정규화가 수행
    • 더 빠르게 값에 수렴할 수 있음
    • 입력이 정규화되므로 초기 가중치에 대한 영향도 줄어듦
  • 위의 원리를 반박하는 논문
    배치 정규화(BN)가 Internal Covariate Shift(ICS)를 감소시키기 때문이 아니라, 손실 함수 지형(Loss Landscape)을 부드럽게 만들어 최적화를 돕는다

정규화 종류

앞서 본, 배치 정규화는 이미지 분류 모델에서 효과적

  • 계층 정규화 Layer Normalization
  • 인스턴스 정규화 Instance
  • 그룹 정규화 Group
    • 3D feature map의 요소
      - 설명을 쉽게하기 위해 해당 블록을 이미지,텍스트 데이터라 가정
      • 차원 D: 이미지 데이터의 크기(너비, 높이)나 어휘사전의 크기, 공간적 정보
        (H x W)
      • 채널 C: 이미지 데이터의 채널이나 시간 간격(Timestep), 피처의 종류
        ex. RGB값
    • BN
      미니 배치에서 계산된 평균 및 분산을 기반으로 계층의 입력을 정규화
      • 이미지 데이터 전체를 대상으로 정규화 수행하지 않고 각각의 이미지 데이터에 채널별로 정규화 수행
      • CV관련 모델 중 합성곱 신경망(CNN)이나 다층 퍼셉트론(MLP)과 같은 순반향 신경망에서 주로 사용
    • LN
      미니 배치의 샘플 저체를 계산하는 방법이 아닌, 채널 축으로 계산
      • 미니 배치 샘플 간의 의존관계XX
      • 샘플이 서로 다른 길이를 가지더라도 정규화 가능
      • 신경망 모델 중 자연어 처리에 주로 사용되며 순환 신경망(RNN)이나 트랜스포머 기반 모델에서 주로 사용
    • IN
      채널과 샘플을 기준으로 정규화
      • 각 샘플에 대해 개별적으로 수행되므로, 입력이 다른 분포를 갖는 작업에 적합
      • 생성적 적대 신경망(GAN)이나 이미지의 스타일을 변환하는 스타일 변환(Style Transfer) 모델에서 주로 사용
    • GN
      • 채널을 N개의 그룹으로 나누고 각 그룹 내에서 정규화를 수행
        • 그룹을 하나로 설정하면 인스턴스 정규화와 동일
        • 그룹의 개수를 채널의 개수와 동일하게 설정하면 계층 정규화와 동일
      • 배치 크기가 작거나 채널 수가 많은 경우에 주로 사용
      • 합성곱 신경망(CNN)의 배치 크기가 작으면 배치 정규화가 배치의 평균과 분산이 데이터세트를 대표한다고 보기 어렵기 때문에 그 대안으로 사용

배치 정규화 풀이

  • xix_i는 입력값. yiy_i는 배치 정규화가 적용된 결괏값
  • m: 미니 배치 내 데이터 수
    ɛ (입실론): 분산이 0일 때 분모가 0이 되는 것을 방지하는 아주 작은 값
  • γ,β\gamma,\beta: 학습가능한 매개변수
    • 활성화 함수에서 발생하는 음수의 영역을 처리할 수 있게 값을 조절하는 스케일 값과 시프트 값
    • 주로 γ\gamma의 초깃값은 1, β\beta의 초깃값은 0
  • 정규화 클래스 (Code)
torch.nn.BatchNorm1d(num_features) #2d/3d 입력 데이터에 배치 정규화
torch.nn.BatchNorm2d(num_features) #4d 입력 데이터에 수행
torch.nn.BatchNorm3d(num_features) #5d 
torch.nn.LayerNorm(normalized_shape) #정규화하려는 차원 크기로 계층 정규화
torch.nn.InstanceNorm1d(num_features) #2d/3d 입력 데이터에 인스턴스 정규화
torch.nn.InstanceNorm2d(num_features) #4d
torch.nn.InstanceNorm3d(num_features) #5d
torch.nn.GroupNorm(num_groups, num_channels) #그룹과 채널을 나눠 정규화

가중치 초기화

Weight Initialization
모델의 초기 가중치를 설정하는 것

  • 모델 매개변수에 적절한 초깃값을 설정하면
    • 기울기 폭주나 소실 문제를 완화할 수 있다
    • 모델의 수렴 속도를 향상시켜 전반적인 학습 프로세스가 개선된다

상수 초기화

초기 가중치 값을 모두 같은 값으로 초기화

  • 예를 들어, 0이나 0.1과 같이 매우 작은 양의 상숫값으로 모든 가중치를 동일하게 할당
  • 대표적인 값 (각각의 특징)
    • 0
      • 모든 가중치를 0으로 초기화하면 입력이 무시되어 출력이 항상 0
        (활성화 함수에 따라 0.5일수도 있음)
      • 역전파 시 모든 기울기가 0으로, 가중치가 전혀 업데이트 되지 않아 학습이 불가능
    • 1 또는 특정 상수(Constant)
      • 0이 아니더라도 모든 뉴런이 동일한 입력을 받아 같은 출력을 생성
      • 네트워크의 다중 뉴런 구조를 무의미하게 만듦
    • 단위행렬(Unit Matrix)
      • 가중치 행렬을 단위행렬로 설정하면 입력이 그대로 전달되지만, 배열구조에서 모든 뉴런이 동일하게 작동
    • 디랙 델타 함수(Dirac Delta Function)
      • 대각선은 1, 나머지는 0으로 설정하는 함수 형태
        (크로네커 델타의 배열 버전)
      • 입력 인덱스와 출력 인덱스가 같을 때만 1을 전달하지만,
        역시 대칭성을 유지해 뉴런 구분이 없다
  • 구현이 간단하고 계산 비용이 거의 들지 않지만,
    일반적으로 사용되지 않는다
    • 왜?
      모두 같은 값으로 초기화하면 배열 구조의 가중치에서는 문제가 발생
      • 대칭 파괴(Breaking Symmetry) 현상
        같은 층의 뉴런들이 완벽한 대칭성을 갖는 경우
        • 순전파: 모든 뉴런이 동일한 가중합과 출력을 계산
        • 역전파: 동일한 기울기가 모든 가중치에 적용되어, 업데이트 후에도 대칭이 유지됨
      • 모든 노드가 동일한 출력을 생성하여 학습이 되지 않는다
  • 스칼라값을 입력으로 받는 매우 작은 모델이나 퍼셉트론 등에 적용하거나, 편향을 초기화 하는 경우 0이나 0.01 등의 형태로 초기화하는 데 사용

무작위 초기화

초기 가중치의 값을 무작위 값이나 특정 분포 형태로 초기화

  • 대표적으로 무작위(Random), 균등 분포(Uniform Distribution), 정규 분포(Normal D), 잘린 정규 분포(Truncated Normal D), 희소 정규 분포 초기화(Sparse ND Initialization)

    • 균등 분포:
      지정 범위에서 값이 동일한 확률로 샘플링
    • 정규 분포:
      평균 0, 표준편차 σ\sigma를 가진 가우시안 분포에서 샘플링
    • 잘린 정규 분포:
      정규분포에서 극단값을 잘라내고 재샘플링
    • 희소 정규 분포:
      가중치 중 일정 비율만 랜덤 값으로 초기화하고 나머지는 0으로 설정
  • 대칭 파괴 문제를 방지

  • 간단하고 가장 많이 사용되는 초기화 방법

  • 계층이 적거나 하나만 있는 경우에는 보편적으로 적용가능하지만,
    계층이 많고 깊어질수록 활성화 값이 양 끝단에 치우치게 되어 기울기 소실 현상 발생

    • 결과적으로 상수 초기화와 동일한 문제를 일으킬 수 있다
    • Xavier/He 분산 스케일링이 필요하다

제이비어 & 글로럿 초기화

Xavier Initialization는 Glorot Initialization 라고도 한다
균등 분포나 정규 분포를 사용해 가중치를 초기화

  • 각 노드의 출력 분산이 입력 분산과 동일하도록 가중치를 초기화
  • 확률 분포 초기화와의 주요 차이?
    • 확률 분포 초기화: 앞서 살펴 본 무작위 초기화에서 분포를 사용하는 경우
    • 동일한 표준 편차를 사용하지 않고 은닉층의 노드 수에 따라 다른 표준 편차를 할당
      • 평균이 0인 정규 분포와 현재 계층의 입력 및 출력 노드 수를 기반으로 계산되는 표준 편차로 가중치를 초기화하여 수행
      • 이전 계층의 노드 수와 다음 계층의 노드 수에 따라 표준 편차가 계산됨
  • 입력 데이터의 분산이 출력 데이터에서 유지되도록 가중치를 초기화하므로,
    시그모이드나 하이퍼볼릭 탄젠트를 활성화 함수로 사용하는 네트워크에서 효과적!
    • 값이 튀지 않고 안정적인 분산을 유지하기 때문이다
  • Xavier가 해결한 문제
    1. 너무 큰 가중치: 활성화값이 양 끝단에 포화 (기울기 소실)
    2. 너무 작은 가중치: 활성화값이 0 근처 (기울기 소실)
    3. 해결: 출력 분산을 입력과 동일하게 유지 (중앙 선형 영역 유지)

카이밍 & 허 초기화

Kaiming Initialization은 He Initialization라고도 한다

  • 제이비어 초기화와 마찬가지로
    • 균등 분포나 정규 분포를 사용해 가중치를 초기화
    • 각 노드의 출력 분산이 입력 분산과 동일하도록 가중치를 초기화
  • 제이비어와 차이?
    • 현재 계층의 입력 뉴런 수를 기반으로만 가중치를 초기화
    • 제이비어 초기화에서 발생한 문제점을 보완한 방법
      • 무슨 문제점?
        ReLU함수의 죽은 뉴런 문제를 급증 시킴
        • 이전 계층의 입력 뉴런도 같이 사용하기 때문
          층마다 분산이 줄어들어 0으로 수렴하게 됨
      • 해결: 현재 계층의 입력 뉴런 수만 이용
        그래서, ReLU를 활성화 함수로 사용하는 네트워크에서 효과적
  • 순방향 신경망 네트워크에서 가중치를 초기화할 때 효과적
    • 왜?
      현재 계층의 입력만 독립적으로 고려하기 때문

직교 초기화

Orthogonal Initialization

  • 특잇값 분해(Singular Value Decomposition, SVD)를 활용해 자기 자신을 제외한 나머지 모든 열, 행 벡터들과 직교이면서 동시에 단위 벡터인 행렬을 만드는 방법
  • 장단기 메모리(Long Short-Term Memory, LSTM) 및 게이트 순환 유닛(Gated Recurrent Units, GRU)과 같은 순환 신경망(RNN)에서 주로 사용
    • 순방향 신경망에서 사용하지 않는 이유?
      직교행렬의 고윳값의 절댓값은 1
      • 행렬 곱을 여러 번 수행하더라도 기울기 폭주나 기울기 소실이 발생하지 않음
      • 가중치 행렬의 고윳값이 1에 가까워지도록 해 RNN에서 기울기가 사라지는 문제를 방지하는데 사용
        • 고윳값 1: 장기 의존성 학습을 도움
      • 모델이 특정 초기화 값에 지나치게 민감해지므로 순방향(Feedforward Neural Network, FFN)에선 사용하지 않는다
        • 직교 행렬은 항상 회전만 한다. (변형 어려움)
          즉, 표현력 제한 문제 발생
        • 층마다 다른 독립적인 역할을 요구하는 순방향과 성격이 다름
        • RNN의 경우 동일 가중치를 반복 사용하는 게 좋음

가중치 초기화 함수

(p.177-178)

정칙화 Regularization

모델 학습 시 발생하는 과대적합 문제를 방지하기 위해 사용되는 기술

  • 모델이 암기가 아니라 일반화(Generalization)할 수 있도록 손실 함수에 규제(Penalty)를 가하는 방식

    • 암기란?
      모델이 데이터의 특성이나 패턴을 학습하는 것이 아니라,
      훈련 데이터의 노이즈를 학습할 대 발생
    • 일반화란?
      모델이 새로운 데이터에서도 정확한 예측을 할 수 있음을 의미
  • 노이즈에 강건하고 일반화된 모델을 구축하는 것이 목표

    • 특정 피처나 특정 패턴에 너무 많은 비중을 할당하지 않도록 손실함수에 규제를 가해 모델의 일반화 성능을 향상시킴
    • 학습 데이터들의 작은 차이에 덜 민감해져 모델의 분산 값이 낮아짐
      즉, 모델이 학습할 때 의존하는 피처 수를 줄임으로써 모델의 추론 능력을 개선

      일반화 성능 vs. 추론 능력

      일반화 성능추론 능력
      새로운 데이터에서의 정확도 itmaster98.tistory​미지의 문제 해결 과정
      Train/Test 성능 격차 측정논리적·창의적 사고 능력
      정량적 (Accuracy, F1 등)정성적 (문제 해결 과정)
  • 정칙화는 모델이 비교적 복잡하고 학습에 사용되는 데이터의 수가 적을 때 활용

    • 모델이 단순한 경우,
      모델의 매개변수의 수가 적어 정칙화가 필요XX

L1 Regularization

Lasso regularization 라고도 한다

  • L1Norm 방식을 사용해 규제하는 방법
    • L1Norm은 벡터 또는 행렬값의 절댓값 합계를 계산
  • 손실 함수에 가중치 절댓값의 합을 추가해 과대적합을 방지
    • 모델 학습 시 값이 크지 않은 가중치들(불필요한 가중치)은 0으로 수렴
      피처의 수가 줄어듦 (차원 축소)
    • 특징 선택 효과
    • λ\lambda: 규제 강도. (하이퍼파라미터이다)
      0보다 큰 값으로 설정
      • 규제강도가 0에 가까워질수록 모델은 더 많은 특징을 사용해 과대적합에 민감하다
      • 반대로 너무 높으면 대부분의 가중치가 0에 수렴되므로 과소적합 문제에 노출됨
  • 희소한 모델이 될 수도 있다(한계)
    • 불필요한 특징을 적당히 삭제함으로써 모델의 성능이 올라갈 수 있지만,
    • 예측에 사용되는 피처 수가 줄어들어 정보의 손실로 이어지기도 함
  • 주로 선형 모델에 적용
    • 왜?
      선형모델은 다중공선성 문제가 발생하면 과적합이 일어나는 경우가 많음.
      그래서 피처를 정리해 중요한 피처에 집중하는 라쏘가 효과적
    • 선형 회귀 모델에 L1 정칙화를 적용하는 것을 라쏘 회귀라 한다

L2 Regularization

Ridge regularization라고도 한다

  • L2Norm 방식을 사용해 규제
    • L2Norm은 벡터 또는 행렬 값의 크기를 계산
  • 손실함수에 가중치 제곱의 합을 추가해 과대적합 방지
  • L1과 비교해서 L2의 특징
    • 하나의 특징이 너무 중요한 요소가 되지 않도록 규제를 가하는 것에 의미를 둠
    • L1에 비해,
      • 가중치 값들이 비교적 균일하게 분포된다
      • 가중치를 0으로 만들지 않고 0에 가깝게 만든다
    • L1 regularization은 선형적인 특성을 가지므로 가중치가 0이 아닌 곳에서는 모든 값에 고정적인 값을 추가
    • L2 regularization은 비선형적인 특성을 가지므로 가중치가 0에 가까워질수록 규제값이 줄어듦
    • 항목L1 (Lasso)L2 (Ridge)
      모델링희소 모델밀집 모델
      특징 선택자동 선택 (β=0\beta=0β=0)없음 (모두 축소)
      이상치 민감도낮음 (희소성)높음 (제곱 효과)
      가중치 효과일부 0, 희소골고루 축소, 균일
      학습 안정성덜 안정적안정적
  • 주로 심층 신경망 모델에서 사용
    • 가중치들이 균일하게 작아지기 때문
  • 선형 회귀 모델에서 L2 정칙화를 사용하는 경우 릿지 회귀라고 함

L1, L2 Reularization의 계산복잡도 문제

  • 코드에서는 둘다 간단히 적용이 되지만,
  • 모델의 가중치를 모두 계산해 모델을 갱신하므로 계산복잡도 문제가 발생한다
  • 또한, L1은 미분이 불가능해 역전파 계산하는 데 더 많은 리소스를 소모
    L2도 매개변수의 제곱값을 계산하고 저장해야하므로 많은 리소스를 소모
  • 하이파라미터인 lambda도 여러 번 반복해 최적의 람다값을 찾아야 한다

L1, L2 정칙화 + 조기 중지 / 드롭아웃

  • 과대적합을 효과적으로 방지
  • 단독 사용의 한계
    • L1/L2만 : 검증 손실 모니터링 부족, 과소적합 위험
      • train loss를 최소화하는 과정에 집중돼있어 valid loss를 확인하고 스스로 멈추지 못함 (검증 손실 모니터링 부족 문제)
        그래서, 조기중지가 필요
    • 조기중지만: 가중치 여전히 과대
    • 드롭아웃만: 구조적 과적합 가능
      • 뉴런 랜덤 제거로 특정 뉴런에 의존하는 것을 방지하지만,
        네트워크 구조 자체의 복잡성은 해결이 안됨
        (특정 피처를 누락시켜도 계층 자체가 딥한 문제가 과적합을 일으킬 수 잇음)
  • 조합 효과:
    • L1/L2: 모델의 복잡도 완화
    • 드롭아웃: 뉴런 다양성 증가 (앙상블 효과)
    • 조기중지: 최적 타이밍 정지
  • 그렇다면, 정칙화는 다양하게 사용하는 것이 좋은가?
    • 위와 같이 각자의 단점은 보완하고 시너지가 있는 조합의 경우처럼 사용하는 것은 좋지만,
    • 무작정 정칙화들을 같이 사용한다고 좋은 건 아님.
      • 위의 경우는 왜 좋은 조합일까?
        각 정칙화의 규제 시점/대상이 다르기 때문
    • 적절한 다양성과 검증셋 피드백을 통해 규제강도(하이퍼파라미터) 값을 잘 조정해야 한다
      • 적절한 다양성이란?
        서로 다른 시점/대상을 규제하는 기법들의 조합

가중치 감쇠 Weight Decay

모델이 더 작은 가중치를 갖도록 손실 함수에 규제를 가하는 방법

  • 일반적으로 가중치 감쇠가 L2정칙화와 동의어로 사용되지만, 가중치 감쇠는 손실 함수에 규제 항을 추가하는 기술 자체를 의미
    • 파이토치나 텐서플로와 같은 딥러닝 라이브러리에서는 최적화 함수에 적용하는 L2 정규화 의미로 사용된다
    • 즉, 파이토치의 가중치 감쇠는 L2 정규화와 동일
      최적화 함수에서 weight_decay 하이퍼파라미터 설정을 통해 구현할 수 있다

모멘텀 Momentum

경사 하강법 알고리즘의 변형 중 하나

  • 이전에 이동했던 방향과 기울기의 크기를 고려하여 가중치를 갱신
    • 지수 가중 이동평균을 사용
    • 이전 기울기 값의 일부를 현재 기울기 값에 추가해 가중치를 갱신
      • 이전 기울기 값에 의해 설정된 방향으로 더 빠르게 이동
        일종의 관성(momentumn)효과를 얻을 수 있다
    • 수식
      • γ\gamma: 모멘텀 계수 (하이퍼파라미터)
        과거의 방향을 얼마나 유지할지 결정
        • 0.0~1.0 사이의 값
        • 일반적으로 0.9를 사용
        • 0으로 설정하면 경사하강법과 동일
      • vtv_t 모멘텀 값
        vt1v_{t-1} 이전 모멘텀 값
  • 파이토치의 모멘텀은 가중치 감쇠 적용 방법처럼 최적화 함수의 momentum 하이퍼파라미터를 설정해 구현 가능

엘라스틱 넷 Elastic-Net

L1 정칙화와 L2 정칙화를 결합해 사용하는 방식

  • 희소성과 작은 가중치의 균형을 맞춘다
  • 두 정칙화 방식의 선형 조합으로 사용하며,
    혼합 비율을 설정해 가중치를 규제
    ElasticNet=α×L1+(1α)×L2Elastic-Net = \alpha\times L_1 + (1-\alpha)\times L_2
    • 혼합 비율(α\alpha)은 0~1 사이의 값을 사용 (하이퍼파라미터)
      1이면 라쏘, 0이면 릿지와 동일
  • L1, L2 정칙화보다 트레이드오프 문제를 더 유연하게 대처할 수 있다
    • 혼합비율로 상황에 따라 최적화 가능 (tradeoff)
    • 각 정칙화의 장점을 최대한 활용할 수 있지만,
      균형적인 규제를 가하기 위해 새로운 하이퍼파라미터의 값도 조정해야하므로 더 많은 튜닝이 필요
    • 두 정칙화의 계산 복잡도 문제가 있어 마찬가지로 더 많은 리소스를 소모
  • 특징의 수가 샘플의 수보다 더 많을 때 유의미한 결과를 가져온다
    • 왜?
      L1,L2가 피처를 직접 규제하는 방식이기 때문
      (고차원에서 더 효과적이다)
      • 그래서, 상관관계가 있는 특징을 더 잘 처리

드롭아웃 Dropout

정칙화 기법 중 하나로, 모델의 훈련 과정에서 일부 노드를 일정 비율로 제거하거나 0으로 설정해 과대적합을 방지하는 간단하고 효율적인 방법

  • 과대적합을 발생시키는 이유 중, 모델 학습 시 발생하는 노드간 동조화(Co-adaptation)현상 과 연관
    • 동조화 현상이란?
      모델 학습 중 특정 노드의 가중치나 편향이 큰 값을 갖게 되면 다른 노드가 큰 값을 갖는 노드에 의존하는 것
    • 드롭아웃은 특정 노드의 의존성이 갖게되는 것을 방지해준다
  • 일부 노드 제거
    • 투표 효과
    • 모델 평균화
  • 한계
    • 모델 평균화 효과를 얻기 위해 다른 드롭아웃 마스크를 사용해 모델을 여러번 훈련시켜야 하므로 훈련시간이 증가
    • 모든 노드를 사용해 학습하지 않으므로,
      데이터세트가 많지 않다면 오히려 성능이 저하될 수 있다
      • 드롭아웃 적용 시에는 충분한 데이터세트와 비교적 깊은 모델에 적용
  • 신경망 패키지의 Dropout클래스로 쉽게 구현 가능하다
    • p 베르누이 분포의 모수를 의미 (하이퍼파라미터)
      각 노드의 제거 여부를 확률적으로 선택
      • 이 과정은 순방향 메서드에서 드롭아웃을 적용한 계층 노드에 적용 (훈련시에만)
      • 다른 하이퍼파라미터들과 다르게,
        일반적으로 고정적인 값을 사용.
  • 일반적으로 배치 정규화와 동시에 사용하지 않는다
    • 서로의 정칙화 효과를 방해할 수 있기 때문
      • 배치 정규화의 경우 내부 공변량 변화를 줄여 과대적합을 방지
      • 드롭아웃은 일부 노드를 삭제
    • 같이 사용하면 모델은 순방향 과정에서 다른 활성화 분포를 가지게 됨
      (배치 정규화의 의미가 사라짐)
    • 만약 같이 사용하는 경우가 발생한다면?
      드롭아웃, 배치정규화 순으로 적용한다 (교재 내용)
      • Dropout이 일부 뉴런을 0으로 만들기 때문에, 그 이후에 BN을 배치해야 0이 된 뉴런들을 포함한 실제 데이터 분포를 다시 정규화할 수 있다는 입장
      • 근데, 실제로는?
        보통: conv -> batch norm -> activation -> dropout -> pooling 진행
        • BN은 학습 데이터의 평균과 분산을 계산하여 정규화한다. 만약 Dropout을 먼저 쓰면 매 배치마다 무작위로 뉴런이 꺼지면서 통계값이 요동치게 됨. 이로 인해 BN이 고정된 통계값을 학습하기 어려워져 성능이 떨어지는 'Variance Shift(분산 이동)' 현상이 발생할 수 있다
  • 일반적으로 성능 향상의 이점을 얻는다
    • 비교적 많은 특징을 사용해 학습하는 이미지 인식이나 음성 인식 모델에서 성능이 향상되는 결과를 보임

드롭아웃의 p값 튜닝

  • 위에서는 일반적으로 고정적인 값을 사용한다고 했는데, 또 다른 입장도 존재함
  • 표준적인 가이드라인결정 기준
    • Hidden Layers (은닉층): 보통 0.5 (50%)를 가장 많이 사용합니다.
      • 힌튼 교수(Geoffrey Hinton)의 논문에서 제안된 수치로, 무작위성을 극대화하여 앙상블 효과를 가장 잘 얻을 수 있는 지점입니다.
    • Input Layer (입력층): 보통 0.2 (20%) 이하로 낮게 잡거나 아예 사용하지 않습니다.
      • 입력 데이터(이미지 픽셀, 단어 등) 자체를 너무 많이 지워버리면 모델이 아예 정보를 읽지 못할 수 있기 때문입니다.
    • Output Layer (출력층): 사용하지 않습니다. 최종 결과값은 모든 정보를 취합해야 하므로 드롭아웃을 걸지 않는 것이 원칙입니다.
  • 위에서 일반적으로 고정한다고 했지만, 사실 상황에 따라 달라지는 것이기 때문에,
    • validation 성능에 따라 튜닝을 해야 한다
    • 참고로 당연히 하나의 에폭 속 같은 계층 내에서는 같은 p 값을 쓴다
      다른 계층이면 계층별로 다르게 p값을 설정할 수 있다

드롭아웃과 앙상블 효과

  • 앙상블효과: 여러 모델을 조화를 이뤄서 합치는 느낌
  • 테스트 단계에서의 '평균화(Averaging)'
    앙상블의 핵심은 "여러 모델의 예측값을 평균 내어 정답률을 높이는 것"
    - 드롭아웃의 작동: 테스트 시에는 모든 노드를 켭니다. 이때 각 노드의 출력값에 드롭아웃 비율(p)을 곱해줍니다
    - 같은 값을 곱해주는게 어떻게 평균화라는거지?
    학습할 때에는 p확률에 따라 실제로 몇가지 노드를 뽑아서 사용했으나, 테스트에서는 모든 데이터를 사용해야하므로. 각 노드의 출력값에 p(0~1)를 곱해주어 적용해주는 것
    - 의미: 이는 학습 때 훈련시켰던 수많은 서브 네트워크들의 예측치를 하나로 합쳐서(Weight Averaging) 결과를 도출하는 과정으로 해석됩니다.
    - 학습 시: 확률 p만큼만 노드를 썼으니, 값이 들쑥날쑥함.
    - 테스트 시: 모든 노드를 다 켜면 학습 때보다 값이 너무 커짐.
    - 조정: 그래서 p를 곱해 '학습 때 노드들이 평균적으로 내뱉던 강도'로 맞춤.
    - 이 과정이 수학적으로 '앙상블 모델들의 예측값을 평균 내는 것'과 근사한 효과를 준다
  • 드롭아웃은 배치마다 랜덤하게 뉴런을 켜기 때문에 각 배치를 다른 모델. 고유한 하위 신경망으로 보는 관점이 있다
    • 즉, 별도의 모델 여러 개를 돌리지 않고도 단 하나의 모델로 '앙상블 효과'를 낸다고 볼 수 있음

그레이디언트 클리핑 Gradient Clipping

모델을 학습할 때 기울기가 너무 커지는 현상을 방지

  • 배경:
    과대적합 모델은 특정 노드의 가중치가 너무 크다는 특징을 갖음
    • 높은 가중치는 높은 분산 값을 갖게 하여 모델의 성능이 저하
  • 해결:
    위의 문제를 해결하기 위해 가중치 최댓값을 규제해 최대 임곗값을 초과하지 않도록 기울기를 잘라(Clipping) 설정한 임곗값으로 변경
    • 최대 임곗값을 넘는 경우 기울기 벡터의 방향을 유지하면서 기울기를 잘라 규제한다
    • 일반적으로 L2노름을 사용해 최대 기울기를 규제
    • 최대 임곗값: 하이퍼파라미터
      • 사용자가 설정
        (값을 설정할 때에는 여러 번 실험을 통해 경험적으로 신중히 선택)
      • 0.1이나 1과 같이 작은 크기의 임곗값을 적용
        학습률 조절과 비슷한 효과를 얻음
      • 높으면 모델의 표현력이 떨어지고, 낮으면 오히려 학습이 불안정하다
  • 순환 신경망(RNN)이나 LSTM 모델을 학습하는데 주로 사용
    • 두 모델은 기울기 폭주에 취약
  • 가중치 값에 대한 엄격한 제약 조건을 요구하는 상황이나
    모델이 큰 기울기에 민감한 상황에서 유용하게 활용
  • 역전파를 수행한 이후와 최적화 함수를 반영하기 전에 호출

데이터 증강 및 변환

Data Augmentation

  • 데이터가 가진 고유한 특징을 유지한 채 변형하거나 노이즈를 추가해 데이터세트의 크기를 인위적으로 늘리는 방법
    • 모델은 학습 데이터가 가진 특징의 패턴을 학습해 새로운 데이터를 분석
  • 모델의 과대적합을 줄이고 일반화 능력을 향상
  • 데이터 수집은 법적 문제, 데이터 품질, 데이터 신뢰도 등 다양한 문제가 있는데,
    데이터 증강을 이용하면 기존 데이터의 품질을 유지한 채 특징을 살려 모델 학습에 사용이 가능하다
    • 모델의 분산과 편향을 줄일 수 있다
    • 잘못된 정보가 들어오는 문제 발생 XX
    • 데이터 불균형 완화
  • 한계
    • 하지만, 너무 많은 변형이나 노이즈를 추가하면
      기존 데이터가 가진 특성이 파괴될 수도 있다
      • 데이터의 일관성이 사라진다
    • 특정 알고리즘을 적용해 생성하므로 데이터 수집보다 더 많은 비용이 들 수 있다

정칙화와 비교

  • 목적이 갖다
    • 과적합 방지
    • 일반화 향상
  • 접근이 다르다
    • augmentation: 인위적으로(품질유지) 데이터를 증가
    • regularization: 모델 복잡도를 감소

텍스트 데이터 증강

문서 분류 및 요약, 문장 번역과 같은 자연어 처리 모델을 구성할 때 데이터세트의 크기를 쉽게 늘리기 위해 사용된다

  • 알아두면 좋은 라이브러리
    sacremoses, NLTK : 텍스트를 토큰화하고 정규화하는 라이브러리
  1. 삽입 및 삭제
  2. 교체 및 대체
  3. 역번역

이미지 데이터 증강

객체 검출 및 인식, 이미지 분류와 같은 이미지 처리 모델을 구성할 때 데이터세트의 크기를 쉽게 늘리기 위해 사용

  • 알아두면 좋은 라이브러리
    torchvision 이미지 데이터를 증강하고 변형하기 위한 기본적인 메서드 제공
    imguag 토치비전 라이브러리에서 제공하지 않는 증강 방법 제공
  • 변환 적용 방법
  1. 회전 및 대칭
  2. 자르기 및 패딩
  3. 크기 조정
  4. 변형
  5. 색상 변환
  6. 노이즈
  7. 컷아웃 및 무작위 지우기
  8. 혼합 및 컷믹스

정리표

구분category이름효과name
텍스트CharacterOCR디지털화 과정의 인식 오류를 모사하여 강건함 증대OcrAug
텍스트CharacterKeyboard키보드 거리 기반 오타(Typo)를 생성하여 사용자 입력 노이즈 대응KeyboardAug
텍스트CharacterRandom문자 삽입, 교체, 삭제를 통해 단어 내부 노이즈 생성RandomCharAug
텍스트WordSpelling사전에 정의된 철자 오류로 교체하여 문법적 오차 학습SpellingAug
텍스트WordWord EmbeddingsWord2Vec, GloVe 등을 이용해 유사한 벡터를 가진 단어로 교체WordEmbsAug
텍스트WordTF-IDF단어의 중요도(TF-IDF)가 낮은 단어를 추출하여 유사한 중요도의 단어로 교체TfIdfAug
텍스트WordContextual Word EmbeddingsBERT, RoBERTa 등을 사용해 문맥 흐름에 자연스러운 단어로 교체ContextualWordEmbsAug
텍스트WordSynonym유의어로 교체하여 문장 의미를 유지한 채 표현의 다양성 확보SynonymAug
텍스트WordAntonym반의어로 교체하여 부정적 문맥이나 대조 관계를 학습AntonymAug
텍스트WordRandom Word단어 삭제, 교체, 삽입을 통해 단어 수준의 변동성 부여RandomWordAug
텍스트WordSplit한 단어를 무작위로 쪼개어 미등록어(OOV) 대응력 향상SplitAug
텍스트WordBack Translation타국어 번역 후 재번역을 통해 문장 구조의 유연성 확보BackTranslationAug
텍스트WordReverse Word단어의 순서를 뒤집어 어순 변화에 대한 모델의 내성 강화ReservedAug
텍스트SentenceContextual Word Embedding문장 수준에서 BERT 등을 이용해 문맥에 맞는 새로운 문장 생성ContextualWordEmbsForSentenceAug
텍스트SentenceAbstractive Summarization긴 문장을 핵심 의미 위주로 요약하여 데이터의 집약도 향상AbstSummAug
이미지CropCenterCrop배경 노이즈를 줄여 중요한 객체 중심 학습을 돕기도 함CenterCrop
이미지CropFiveCrop여러 시야에서의 입력을 제공, 테스트 타임 증강에도 사용transforms.FiveCrop
이미지CropRandomCrop객체 위치 변화에 덜 민감transforms.RandomCrop
이미지CropRandomSizedCropRandomResizedCrop의 구버전. 현재는 대체됨transforms.RandomSizedCrop
이미지CropRandomResizedCrop스케일.비율 변화에 강건transforms.RandomResizedCrop
이미지CropTenCropFiveCrop + 좌우 뒤집기 조합. 보다 강력한 테스트 타임 증강transforms.TenCrop
이미지ColorColorJitter다양한 조명.색감 상황에 대한 강건성 향상transforms.ColorJitter
이미지ColorGrayscale색 정보를 제거해 모양.윤곽 위주로 특징을 학습하도록 유도transforms.Grayscale
이미지ColorRandomGrayscale색상에 덜 의존하고 형태에 더 집중하게 함transforms.RandomGrayscale
이미지GeometricPad가장자리에 여백을 추가해 이후 랜덤 크롭/이동 증강과 결합. 위치변화에 덜 민감transforms.Pad
이미지GeometricRandomAffine이동·스케일·회전·시어 등을 한 번에 랜덤 적용, 기하학적 변형에 대한 불변성 향상.transforms.RandomAffine
이미지GeometricRandomVerticalFlip설정한 확률에 따라 이미지를 상하 반전transforms.RandomVerticalFlip
이미지GeometricRandomHorizontalFlip설정한 확률에 따라 이미지를 좌우 반전transforms.RandomHorizontalFlip
이미지GeometricRandomPerspective이미지에 무작위 원근 변환을 적용transforms.RandomPerspective
이미지GeometricRandomRotation이미지를 지정한 각도 범위 내에서 무작위 회전transforms.RandomRotation
이미지CompositionRandomApply주어진 변환 리스트를 설정한 확률로 묶어서 적용transforms.RandomApply
이미지CompositionRandomChoice변환 리스트 중 하나를 무작위로 선택하여 적용transforms.RandomChoice
이미지CompositionRandomOrder변환 리스트의 순서를 무작위로 섞어서 적용transforms.RandomOrder
이미지Noise/ErasureRandomErasing이미지의 임의 영역을 지우거나 노이즈로 채움transforms.RandomErasing
이미지BlurGaussianBlur이미지에 가우시안 블러를 적용하여 흐리게 만듦transforms.GaussianBlur
이미지ResizeResize이미지의 크기를 지정한 사이즈로 변경transforms.Resize
이미지ResizeScaleResize의 구버전.transforms.Scale
이미지ConversionNormalize텐서 데이터를 평균과 표준편차로 정규화transforms.Normalize
이미지ConversionToTensorPIL 이미지나 ndarray를 FloatTensor(0~1 사이)로 변환transforms.ToTensor
이미지ConversionToPILImage텐서나 ndarray를 PIL 이미지로 변환transforms.ToPILImage
이미지ConversionConvertImageDType텐서 이미지의 데이터 타입(dtype)을 변환transforms.ConvertImageDtype
이미지InterpolationInterpolationMode이미지 크기 변경(Resize, Rotation 등) 시 픽셀 값을 채우는 보간 알고리즘 정의transforms.InterpolationMode
이미지OthersLinearTransformation미리 계산된 행렬로 백색화(Whitening) 변환 적용transforms.LinearTransformation
이미지OthersLambda사용자가 정의한 커스텀 함수를 변환에 적용transforms.Lambda

사전 학습된 모델

Pre-trained Model이란 대규모 데이터세트로 학습된 딥러닝 모델로 이미 학습이 완료된 모델을 의미

  • 사전 학습된 모델 자체를 현재 시스템에 적용하거나 사전 학습된 임베딩(Embeddings) 벡터를 활용해 모델을 구성할 수 있다
    • 이미 학습된 모델의 일부를 활용하거나, 추가학습을 통해 모델의 성능을 끌어낼 수 있다
    • 이미 다양한 작업에서 성능을 검증하는 모델(pre-trained)을 사용하면 안정되고 우수한 성능을 기대할 수 있다
      • 대규모 데이터세트에서 데이터의 특징을 학습했으므로 유사한 작업에 대해서도 우수한 성능을 기대할 수 있음
    • 처음부터 모델을 훈련시키지 않아도 돼서
      학습에 필요한 시간이 대폭 감소
      • 모델 개발 프로세스를 가속화
      • 모델의 성능을 향상
  • 사전 학습된 모델은 전이 학습(Transfer Learning)과 같은 작업 뿐 아니라 백본 네트워크(Backbone Networks)로 사용된다
    • 대규모 데이터에서 학습한 지식을 활용하여 소량의 데이터로도 우수한 성능을 달성할 수 있다

백본 Backbone

입력 데이터에서 특징을 추출해 최종 분류기에 전달하는 딥러닝 모델이나 딥러닝 모델의 일부를 의미

  • 관련 개념은 합성곱 신경망 모델인 VCG, ResNet, MaskR-CNN 논문 등에서 직간접적으로 언급됨
    • 합성곱 계층이 입력 이미지를 고차원 특징 벡터로 변환해 이미지 분류 작업을 돕는 특징 추출기의 역할로 사용할 수 있다는 점에서 백본이라는 용어가 등장
  • 백본 네트워크는 입력 데이터에서 특징을 추출하므로,
    노이즈와 불필요한 특성을 제거하고 가장 중요한 피처를 추출할 수 있다
  • 활용 예시
    • 이미지에서 객체를 검출하는 합성곱 신경망
    • 객체 검출 모델이 아닌 포즈 추정 모델이나 이미지 분할 모델로 확장할 때
  • 모델을 구성할 때 백본을 활용한다고 해서 모델의 성능이 급격히 좋아지는 것은 아님!
    • 장단점이 존재한다
    • 즉, 해결하려는 작업에 적합한 백본을 선택할 것.
      • 백본으로 사용하는 딥러닝 모델에는 많은 매개변수가 존재하며 학습 데이터에 따라 쉽게 과대적합될 수 있음
        • 사전 학습된 백본은 미세 조정이나 전이 학습을 적용해 과대적합을 피해야한다
        • 현재 작업에 적합한 백본을 찾기 위해 다양한 백본을 적용해가며 성능을 모니터링
  • 자연어 처리와 컴퓨터비전 작업에서 백본이 되는 모델은 BERT, GPT, VGG-16, ResNet과 같이 초대규모 딥러닝 모델 hyper-scale deep learning models 을 사용

전이 학습 Transfer Learning

어떤 작업을 수행하기 위해 이미 사전 학습된 모델을 재사용해 새로운 작업이나 관련 도메인의 성능을 향상시킬 수 있는 기술을 의미

  • 특정 영역의 대규모 데이터세트에서 사전 학습된 모델을 다른 영역의 작은 데이터세트로 미세 조정해 활용
    • source domain 사전학습한 대규모 데이터세트
    • target domain 다른 영역의 작은 데이터세트
    • source domain에서 학습한 지식을 활용해 target domain에서 모델의 성능을 향상시킴
  • 전이학습의 구조
    • 업스트림 영역, 다운스트림 영역으로 구분
    • 사전 학습된 모델을 업스트림 모델
      전이 학습 파이프라인 중 시작 부분에 위치
      • 대규모 특정 도메인에 대한 특징과 특성이 학습돼야 함
    • 미세 조정된 모델을 다운스트림 모델
      전이 학습 파이프라인 중 마지막 부분에 위치
      • 업스트림 모델에서 학습한 지식을 활용해 작은 규모의 타깃 도메인을 학습

귀납적 전이 학습

Inductive Transfer Learning

  • 기존에 학습한 모델의 지식을 활용해 새로운 작업을 수행하기 위한 방법 중 하나
    • 모델의 일반화 능력을 향상
    • 기존 모델의 학습된 지식을 새로운 작업으로 이전함으로써 작업 효율성과 성능을 향상
  1. 자기주도적 학습 Self-taught Learning
    비지도 전이 학습의 유형 중 하나
    • 소스 도메인의 데이터셋에서 양은 많으나 레이블링된 데이터의 수가 매우 적거나 없을 때 사용
      • 레이블이 없는 대규모 데이터셋에서 특징을 추출하는 오토 인코더와 같은 모델을 학습
      • 저차원 공간에서 레이블링된 데이터로 미세 조정
  2. 다중 작업 학습 Multi-task Learning
    레이블이 지정된 소스 도메인과 타깃 도메인 데이터를 기반으로 모델에 여러 작업을 동시에 가르치는 방법
    -모델 구조가 아래 두가지로 나뉜다
    • 공유 계층 Shared Layers
      소스 도메인과 타깃 도메인의 데이터셋에서 모델을 사전학습
      • 서로 다른 작업의 특징을 맞추기 위해 동시에 학습되므로 하나의 작업에 과대적합 되지 않아 일반화된 모델을 얻을 수 있다
        • 성능 향상에 기여
    • 작업별 계층 Task Specific Layer
      단일 작업을 위해 작업별 계층마다 타깃 도메인 데이터셋으로 미세 조정하는 방법으로 모델을 구성
      • 작업마다 서로 다른 학습 데이터셋을 사용하여 미세조정한다

변환적 전이 학습

Transductive Transfer Learning

  • 소스 도메인과 타깃 도메인이 유사하지만 완전히 동일하지 않은 경우
    • 소스 도메인은 레이블이 존재
    • 타깃 도메인은 레이블이 존재XX
  1. 도메인 적응(Domain Adaptation)
    소스 도메인과 타깃 도메인의 특징 분포를 전이시키는 방법
    • 소스 도메인과 타깃 도메인의 특징 분포가 다를 때, 두 도메인의 특징 공간/분포를 정렬하도록 학습하는 방법
    • 두 도메인은 유사하지만 특징 공간과 분포는 서로 다르며, 이 차이를 줄이도록 표현을 학습
    • 타깃 도메인에서 모델의 성능을 향상시키는 것이 목적이므로,
      필요한 경우 소스 도메인이 조정될 수 있음
  2. 표본 선택 편향/공변량 이동(Sample Selection Bias/Covariance Shift)
    소스 도메인과 타깃 도메인의 분산과 편향이 크게 다를 때 표본은 선택해 표본이나 공변량을 이동 시키는 방법
    • 두 도메인이 완전히 동일하지 않아 학습 데이터에서는 좋은 성능을 보였어도 테스트 데이터에서는 안 좋을 수 있음
      (학습 분포와 실제 테스트 분포가 다른 상황)
    • 무작위/비무작위 샘플링 방법이나 도메인 적응, 가중치 재부여를 통해 해당 학습치만 전이시키는 방법
      • 해당 학습치만 전이?
        소스 샘플에 위의 방법을 적용해 타깃 분포에 맞추는 것

비지도 전이 학습

Unsupervised Transfer Learning

  • 소스 도메인과 타깃 도메인 모두 레이블이 지정된 데이터가 없는 전이 학습 방법
    • 소스 도메인에서 타깃 도메인의 성능을 개선하는 데 사용할 수 있는 특징 표현을 학습
  • 위의 자기주도적 학습의 과정을 생각하면 된다
  • 대표적인 방법으로는 생성적 적대 신경망(Generative Adversarial Network, GAN)과 군집화(Clustering)가 있다

제로-샷 전이 학습

Zero-shot Transfer Learning

원-샷 전이 학습

One-shot Transfer Learning

  • 서포트 셋: 학습에 사용될 대표 샘플
    각 클래스당 하나 이상의 대표 샘플로 이뤄짐
  • 쿼리 셋: 클래스를 분류하기 위한 입력 데이터
    분류 대상 데이터로, 서포트 셋에서 수집한 샘플과는 다른 샘플이어야 한다
  • 서포트 셋의 대표 샘플과 쿼리 셋 간의 거리를 측정하여 쿼리 셋과 가장 가까운 서프트셋의 대표 샘플의 클래스로 분류됨
    • 거리 측정 방법: 유클리드 거리, 코사인 유사도 등

정리표

유형세부유형소스도메인타깃도메인특징
귀납적 전이학습 - 자기주도적학습 (Self-supervised TL)대표: SimCLR, MoCo, BYOL대규모 레이블 없는 이미지 (ImageNet 등)동일 도메인, 레이블 없는 타깃 데이터자기 레이블 생성 → 표현 학습 → fine-tuning
귀납적 전이학습 - 다중 작업 학습 (Multi-task Learning)Hard/Soft Parameter Sharing여러 관련 태스크 데이터셋 (레이블 O)동일 도메인, 다중 태스크 (레이블 O)공유 표현 → 다중 태스크 동시 학습
변환적 전이학습 (Transductive TL)도메인 적응 (DANN, MMD)소스 도메인 (다른 분포) (레이블 O)타깃 도메인 (다른 분포) (레이블 X)소스→타깃 분포 정렬, 레이블 없음
비지도 전이학습 (Unsupervised TL)Autoencoder 기반 특징 학습소스 도메인 (대규모) (레이블 X)동일/다른 도메인, 레이블 없음레이블 없이 특징 표현 학습
제로샷 학습 (Zero-shot Learning)Cross-modal transfer (CLIP 등)대규모 언어/이미지 데이터 (프리트레인) (레이블 O)동일 도메인, 샘플 0개 (레이블 X)타깃 샘플 없이 클래스 설명으로 예측
원샷 학습 (One-shot Learning)Siamese Network 기반대규모 이미지 데이터 (프리트레인) (레이블 O)동일 도메인, 샘플 1개 (레이블 X)1개 샘플로 새로운 클래스 학습

특징 추출 및 미세 조정

Feature Extraction 및 Fine-tuning

  • 전이 학습에 사용되는 일반적인 기술
  • 특징 추출은 타깃 도메인이 소스 도메인과 유사하고 타깃 도메인의 데이터셋이 적을 때 사용
    • 두 도메인이 매우 유사하면 타깃 도메인으로 학습 시에도 소스 도메인의 가중치나 편향도 유사
    • 특징 추출 계층은 동결해 학습하지 않고 기존에 학습된 모델의 가중치를 사용
      • 예측 모델마다 요구하는 출력 노드의 수가 다르므로 모델의 분류기(Classifier)만 재구성해 학습
  • 미세 조정은 특징 추출 계층을 일부만 동결하거나 동결하지 않고 타깃 도메인에 대한 학습을 진행
    • 위 이미지에서 헷갈릴 부분 다시 정리
      • 미세 조정에서 데이터가 많고 유사도는 낮은 경우엔 모든 계층을 동결하지 않는다 (그림이 잘못 생성됨)
    • 계층을 동결한다?
      특정 부분의 가중치 값이 변하지 않도록 고정한다는 의미
    • 타겟 도메인의 목적에 따라 분류기를 새롭게 구성

0개의 댓글