본문 바로가기

AI.ML

[AI/ML 스터디] 3주차 - 04. 파이토치 심화

과대적합과 과소적합

  • 과대적합
    • 모델이 훈련 데이터에서는 우수하게 예측하지만, 새로운 데이터에서는 제대로 예측하지 못해 오차가 크게 발생하는 것
    • 모델이 훈련 데이터에만 적합하게 학습되어 새로운 데이터에 대해서는 성능이 저하되는 경우
  • 과소적합
    • 훈련 데이터에서도 성능이 좋지 않고 새로운 데이터에서도 성능지 좋지 않은 데이터를 잘 예측할 수 없는 상태

과대적합 & 과소적합 공통점

  • 성능 저하
    • 과대적합
      • 훈련 데이터에서는 잘 수행되는 것처럼 보이더라도 새로운 데이터에서는 제대로 값을 예측 못함
    • 과소적합
      • 새로운 데이터에 대해 예측을 수행할 수 없으며, 전반적으로 모델의 성능이 좋지 못할 때 발생
  • 모델 선택 실패
    • 모델을 변경해 문제 완화 가능
    • 과대적합
      • 모델의 구조가 너무 복잡해 훈련 데이터에만 의존하게 되어 성능 저하
    • 과소적합
      • 모델의 구조가 너무 단순해 데이터의 특징을 제대로 학습하지 못한 경우
    → 모델을 변경하거나 모델 구조 개선
  • 편향-분산 트레이드오프
    • 모델이 훈련 데이터와 새로운 데이터에 대해서도 우수한 성능을 보이려면 낮은 편향낮은 분산을 가져야함
    • 분산
      • 분산이 높으면 추정치에 대한 변동 폭이 커지며, 데이터가 갖고 있는 노이즈까지 학습 과정에 포함돼 과대적합 문제 발생
    • 편향
      • 편향이 높으면 추정치가 항상 일정한 값을 갖게 될 확률이 높아져 데이터의 특징을 제대로 학습하지 못해 과소적합 문제 발생
    • 모델의 성능을 높이기 위해 편향과 분산을 절충해 높은 성능 끌어내기
    • 모델 복잡 ⇒ 분산은 커지고 편향은 작아짐
    • 모델 단순 ⇒ 분산은 작아지고 편향은 커짐
    • → 분산과 편향의 균형 맞추기

과대적합과 과소적합 문제 해결

과대적합

→ 모델의 일반화 능력을 저하해 문제 발생

과소적합

→ 모델이 데이터의 특징을 제대로 학습할 수 없을 때 발생

⇒ 두 문제 모두 모델에 새로운 데이터를 예측했을 때 우수한 결과를 얻을 수 없음

과대적합 & 과소적합 피하는 방법

  • 데이터 수집
    • 과대적합, 과소적합 둘 다 훈련 데이터를 제대로 학습하지 못하는 경우
      • 과대적합 → 훈련 데이터를 너무 적합하게 학습
      • 과소적합 → 훈련 데이터를 제대로 학습하지 못함
    • 훈련 데이터에서 노이즈를 학습하지 않으면서 일반적인 규칙을 찾을 수 있게 학습 데이터의 수 늘리기
  • 피처 엔지니어링
    • 신규 데이터 수집이 어려운 경우라면 기존 훈련 데이터에서 변수나 특징을 추출하거나 피처를 더 작은 차원으로 축소
    • → 모델이 더 학습하기 쉬운 형태로 데이터를 변환하면 노이즈에 더 강건한 모델 구축 가능
  • 모델 변경
    • 과대적합&과소적합 발생하는 주요한 이유?
    • ⇒ 훈련 데이터세트에 비해 너무 강력한 모델을 사용하거나 너무 간단한 모델을 사용하기 때문
    • 과대적합
      • 학습 데이터에 비해 강력한 모델을 사용하는 경우 발생
      • → 강력한 모델의 경우 깊은 구조의 모델일 가능성 ↑
      • 모델의 매개변수가 많기 때문에 적은 양의 데이터로 학습한다면 효과적으로 모델 학습 불가능
      ⇒ 모델의 계층을 축소하거나 더 간단한 모델로 변경
    • 과소적합
      • 학습 데이터에 비해 간단한 모델을 사용할 때 발생
      • → 모델의 구조가 간단하면 데이터의 특징을 제대로 학습할 수 없음
      ⇒ 모델의 계층을 확장하거나 더 복잡한 모델로 변경
  • 조기 중단
    • 모델 학습 시 검증 데이터세트로 성능을 지속적으로 평가해 모델의 성능이 저하되기 전에 모델 학습을 조기 중단하는 방법
    • ⇒ 과대적합이 발생하기 전에 모델 학습을 중단하는 방법
  • 배치 정규화
    • 모델에 배치 정규화를 적용해 모델 성능과 모델 안정성 향상
    • 모델의 계층마다 평균과 분산을 조정해 내부 공변량 변화를 줄여 과대적합 방비
  • 가중치 초기화
    • 모델의 매개변수를 최적화하기 전에 가중치 초깃값을 설정하는 프로세스
    • 학습 시 기울기가 매우 작아지거나 커지는 문제 발생 가능⇒ 적절한 초기 가중치를 설정해 과대적합 방지 가능
    • → 학습을 어렵게 만들거나 불가능하게 만듦
  • 정착화
    • 모델에 정착화를 적용해 목적 함수에 페널티를 부여하는 방법
    • 모델을 일부 제한해 과대적합 방지 가능
    • 학습 조기 중간, L1 정착화, L2 정착화, 드롭아웃, 가중치 감쇠 등이 있음

배치 정규화

배치 정규화란?

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

일반적으로 인공 신경망을 학습할 때 입력값을 배치 단위로 나눠 학습 진행

배치 단위로 나눠 학습하는 경우 상위 계층의 매개변수가 갱신될 때마다 현재 계층에 전달되는 데이터의 분포도 변경됨

각 계층은 배치 단위의 데이터로 인해 계속 변화되는 입력 분포를 학습해야 하기 때문에 인공 신경망의 성능과 안전성이 낮아져 학습 속도 느려짐

내부 공변량 변화란 계층마다 입력 분포가 변경되는 현상

내부 공변량 변화가 발생하는 경우

→ 은닉층에서 다음 은닉층으로 전달될 때 입력값이 균일해지지 않아 가중치가 제대로 갱신되지 않을 수 있음

⇒ 학습이 불안정해지고 느려져 가중치가 일정한 값으로 수렴하기 어려워짐

→ 초기 가중치 값에 민감해져 일반화하기가 어려워져 더 많은 학습 데이터 요구

⇒ 문제를 해결하기 위해 각 계층에 배치 정규화 적용

배치 정규화 동작

→ 미니 배치의 입력을 정규화

ex. 미니 배치에 전달되는 입력값이 [ 100, 1, 1 ] 이거나 [ 1, 0.01, 0.01 ]

⇒ 두 배열의 값 모두 [ 1.4142, -0.7071, -0.7071 ]로 정규화

배치 정규화 적용

→ 각 계층에 대한 입력이 일반화되고 독립적으로 정규화 수행

⇒ 더 빠르게 값 수렴

⇒ 입력이 정규화되므로 초기 가중치에 대한 영향 줄일 수 있음

정규화 종류

배치 정규화

→ 이미지 분류 모델에서 배치 정규화 적용 시 14배 더 적은 학습으로도 동일한 정확도 달성 가능

→ 더 높은 학습률을 적용해 학습 시간 최소화 가능

⇒ 계층 정규화, 인스턴스 정규화, 그룹 정규화

정규화 수행 방식

  • 차원 : 이미지 데이터의 크기(너비, 높이)나 어휘 사전의 크기
  • 채널 : 이미지 데이터의 채널이나 시간 간격
  • ⇒ 데이터 종류에 따라 축의 의미는 달라질 수 있으나, 정규화 처리 방식은 동일

정규화 종류

  • 배치 정규화
    • 미니 배치에서 계산된 평균 및 분산을 기반으로 계층의 입력을 정규화
    • 컴퓨터비전과 관련된 모델 중 합성곱 신경망(CNN)이나 다층 퍼셉트론(MLP)과 같은 순방향 신경망에서 주로 사용
  • 계층 정규화
    • 이미지 데이터 전체를 대상으로 정규화 수행 X
    • 각각의 이미지 데이터에 채널별로 정규화 수행
    • 채널 축으로 계산되기 때문에 미니 배치 샘플 간의 의존 관계 X
    • → 샘플이 서로 다른 길이를 가지더라도 정규화 수행 가능
    • 신경망 모델 중 자연어 처리에서 주로 사용됨
    • 순환 신경망(RNN)이나 트랜스포머 기반 모델에서 주로 사용
  • 인스턴스 정규화
    • 채널과 샘플을 기준으로 정규화 수행
    • 정규화가 각 샘플에 대해 개별적으로 수행되므로 입력이 다른 분포를 갖는 작업에 적합
    • 생성적 적대 신경망(GAN)이나 이미지의 스타일을 변환하는 스타일 변환(Style Transfer) 모델에서 주로 사용
  • 그룹 정규화
    • 채널을 N개의 그룹으로 나누고 각 그룹 내에서 정규화 수행
    • 그룹을 하나로 설정하면 인스턴스 정규화와 동일
    • 그룹의 개수를 채널의 개수와 동일하게 설정하면 계층 정규화와 동일
    • 배치 크기가 작거나 채널 수가 매우 많은 경우에 주로 사용
    • 합성곱 신경망(CNN)의 배치 크기가 작으면 배치 정규화가 배치의 평균과 분산이 데이터세트를 대표한다고 보기 어렵기 때문에 배치 정규화의 대안으로 사용

가중치 초기화

가중치 초기화란❓

→ 모델의 초기 가중치 값을 설정하는 것

⇒ 모델 매개변수에 적절한 초깃값을 설정한다면 기울기 폭주나 기울기 소실 문제 완화 가능

⇒ 모델의 수렴 속도를 향상시켜 전반적인 학습 프로세스 개선 가능

상수 초기화

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

ex. 0이나 0.1과 같은 매우 작은 양의 상숫값으로 모든 가중치 동일하게 할당

→ 0, 1, 특정 값, 단위행렬, 디랙 델타 함수 값 등

구현이 간단하고 계산 비용이 거의 들지 않음

But, 일반적으로 사용되지 않는 초기화 방법

→ 모든 가중치 초깃값을 같은 값으로 초기화하면 배열 구조의 가중치에서 문제 발생

대칭 파괴 현상으로 인해 모델을 학습하기 어렵거나 학습이 불가능하게 만듦

 📢

대칭 파괴 현상? 신경망의 초기 가중치가 동일한 상숫값으로 설정되어 네트워크의 모든 노드가 동일한 출력을 생성해 네트워크가 어려워지는 현상

⇒ 모든 노드가 동일한 출력을 생성하여 모델이 학습되지 않음

스칼라값을 입력으로 받는 매우 작은 모델이나 퍼셉트론 등에 적용하거나 편향을 초기화하는 경우 0이나 0.01 등의 형태로 초기화하는 데 사용

무작위 초기화

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

ex. 정규 분포의 형태로 가중치의 값 초기화

대표적으로 무작위, 균등 분포, 정규 분포, 잘린 정규 분포, 희소 정규 분포 초기화 등

노드의 가중치와 편향을 무작위로 할당해 네트워크가 학습할 수 있게 함

→ 대칭 파괴 문제 방지

⇒ 간단하고 많이 사용되는 초기화 방법

계층이 적거나 하나만 있는 경우에는 보편적으로 적용 가능

But, 계층이 많아지고 깊어질수록 활성화 값이 양 끝단에 치우치게 되어 기울기 소실 현상 발생

⇒ 상수 초기화와 동일한 문제 발생 가능

제이비어 & 글로럿 초기화

⇒ 균등 분포나 정규 분포를 사용해 가중치 초기화

각 노드의 출력 분산이 입력 분산과 동일하도록 가중치 초기화

동일한 표준 편차를 사용하지 않고 은닉층의 노드 수에 따라 다른 표준 편차 할당

평균이 0인 정규 분포와 현재 계층의 입력 및 출력 노드 수를 기반으로 계산되는 표준편차

→ 가중치를 초기화하여 수행

⇒ 이전 계층의 노드 수와 다음 계층의 노드 수에 따라 표준 편차가 계산됨

입력 데이터의 분산이 출력 데이터에서 유지되도록 가중치를 초기화

⇒ 시그모이드나 하이퍼볼릭 탄젠트를 활성화 함수로 사용하는 네트워크에서 효과적

카이밍 & 허 초기화

⇒ 균등 분포나 정규 분포를 사용해 가중치를 초기화

순방향 신경망 네트워크에서 가중치를 초기화할 때 효과적

각 노드의 출력 분산이 입력 분산과 동일하도록 가중치를 초기화

But, 현재 계층의 입력 뉴런 수를 기반으로만 가중치 초기화

제이비어 초기화에서 발생한 문제점을 보완한 방법

⇒ 각 노드의 출력 분산이 입력 분산과 동일하게 만들어 ReLU 함수의 죽은 뉴런 문제 최소화 가능

⇒ ReLU를 활성화 함수로 사용한 네트워크에서 효과적

직교 초기화

⇒ 특잇값 분해를 활용해 자기 자신을 제외한 나머지 모든 열, 행 벡터들과 직교이면서 동시에 단위 벡터인 행렬을 만드는 방법

장단기 메모리 및 게이트 순환 유닛과 같은 순환 신경망(RNN)에서 주로 사용

직교 행렬의 고윳값의 절댓값은 1

⇒ 행렬 곱을 여러 번 수행하더라도 기울기 폭주나 기울기 소실 발생 X

⇒ 가중치 행렬의 고윳값이 1에 가까워지도록 해 RNN에서 기울기가 사라지는 문제를 방지하는 데 사용

모델이 특정 초기화 값에 지나치게 민감해지므로 순방향 신경망에서는 사용 X

정칙화

정칙화란❓

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

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

  • 암기
    • 모델이 데이터의 특성이나 패턴을 학습하는 것이 아니라 훈련 데이터의 노이즈를 학습했을 때 발생
    • 모델이 훈련 데이터에서는 잘 수행되지만, 새로운 데이터에서는 제대로 수행되지 못하는 경우
    • ⇒ 모델이 데이터의 일반적인 패턴을 학습한 것이 아니라 학습 데이터의 노이즈나 특정 패턴 학습
  • 일반화
    • 모델이 새로운 데이터에서도 정확한 예측을 할 수 있음을 의미
    • 특정 데이터가 갖고 있는 노이즈를 학습하는 것이 아니라 데이터의 일반적인 패턴을 학습했을 때 일반화된 모델이라 부름
    • ⇒ 일반화된 모델은 학습에 사용한 데이터와 약간 다르더라도 정확한 예측 가능
  • 정칙화
    • 노이즈에 강건하고 일반화된 모델을 구축하기 위해 사용하는 방법
    • 모델이 특정 피처나 특정 패턴에 너무 많은 비중을 할당하지 않도록 손실 함수에 규제를 가해 모델의 일반화 성능 향상
    • 일반화 성능❓
      • 모델이 학습할 때 경험하지 못했던 상황에 대한 성능
    • 모델이 비교적 복잡하고 학습에 사용되는 데이터의 수가 적을 때 활용⇒ 데이터의 수가 많거나 데이터가 잘 정제되어 노이즈가 거의 없는 경우에도 사용 X
    • ⇒ 모델이 단순하다면 모델 매개변수의 수가 적어 정칙화 필요 X
    • 이미 정규화되어 있는 경우에는 사용 X
    • L1 정칙화, 가중치 감쇠, 드롭아웃 등

L1 정칙화 (라쏘 정칙화)

⇒ L1 노름 방식을 사용해 규제하는 방법

  • L1 노름은 벡터 또는 행렬값의 절댓값 합계를 계산
  • 손실 함수에 가중치 절댓값의 합을 추가해 과대적합 방지
  • 모델 학습은 비용이 0이 되는 방향으로 진행
  • 모델은 가중치 절댓값의 합도 최소가 되는 방향으로 학습 진행⇒ 예측에 필요한 특징의 수가 줄어듦
  • ⇒ 불필요한 가중치가 0이 되므로 L1 정칙화를 적용한 모델은 특징 선택 효과 얻음
  • → 모델 학습 시 값이 크지 않은 가중치들은 0으로 수렴
  • 모델의 가중치를 정확히 0으로 만드는 경우가 있으므로 희소한 모델 될 수 있음But, 예측에 사용되는 특징의 수가 줄어들게 되므로 정보의 손실로 이어질 가능성
  • ⇒ 불필요한 특징을 처리하지 않으므로 모델의 성능이 올라갈 수 있음
  • 모델의 가중치 절댓값의 합 사용
  • ⇒ 모델의 가중치를 모두 계산해 모델을 갱신해야 하므로 계산 복잡도 높아짐
  • 미분 불가능
  • ⇒ 역전파를 계산하는 데 더 많은 리소스 소모
  • 하이퍼파라미터인 _lambda의 값이 적절하지 않으면?
  • ⇒ 가중치 값들이 너무 작아져 모델을 해석하기 더 어렵게 만들 수 있으므로 여러 번 반복해 최적의 _lambda 값 찾기
  • 주로 선형 모델에 적용
  • ⇒ 선형 회귀 모델에서 사용하는 경우 라쏘 회귀

L2 정칙화 (릿지 정칙화)

⇒ L2 노름 방식을 사용해 규제하는 방법

  • L2 노름은 벡터 또는 행렬 값의 크기를 계산
  • 손실 함수에 가중치 제곱의 합을 추가해 과대적합을 방지하도록 규제
  • 하나의 특징이 너무 중요한 요소가 되지 않도록 규제를 가하는 것에 의미를 둠
  • 가중치 값들이 비교적 균일하게 분포
  • 가중치를 0으로 만들지 않고 0에 가깝게 만듦
  • 모델 학습 시 오차를 최소화하면서 가중치를 작게 유지하고 골고루 분포
  • ⇒ 모델의 복잡도가 일부 조정
  • 가중치 제곱으로 계산되므로 비선형적인 구조
  • ⇒ 가중치가 0에 가까워질수록 규젯값이 줄어듦
  • L1 정칙화에서 발생하는 계산 복잡도 문제 발생
  • → 모델 매개변수의 제곱 값을 계산하고 저장해야 하므로
  • 최적의 _lambda 값 찾기
  • 과대적합을 효과적으로 방지하기 위해서 조기 중지 or 드롭아웃 함께 사용
  • 주로 심층 신경망 모델에서 사용
  • ⇒ 선형 회귀 모델에서 사용하는 경우 릿지 회귀

L1 정칙화 & L2 정칙화 비교

L1 정칙화 L2 정칙화

계산 방식 가중치 절댓값의 합 가중치 제곱의 합
모델링 희소함 희소하지 않음
특징 선택 있음 없음
이상치 강함 약함
가중치 0이 될 수 있음 0에 가깝게 됨
학습 비교적 복잡한 데이터 패턴을 학습할 수 없음 비교적 복잡한 데이터 패턴을 학습할 수 있음

가중치 감쇠

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

  • 손실 함수에 규제 항을 추가하는 기술 자체를 의미
  • 파이토치나 텐서플로 같은 딥러닝 라이브러리에서는 최적화 함수에 적용하는 L2 정규화 의미로 사용최적화 함수에서 weight_decay 하이퍼파라미터를 설정해 구현 가능
  • ⇒ 파이토치의 가중치 감쇠는 L2 정규화와 동일

모멘텀

⇒ 경사 하강법 알고리즘의 변형 중 하나로 이전에 이동했던 방향과 기울기의 크기를 고려해 가중치 갱신

  • 지수 가중 이동평균 사용
  • 이전 기울기 값의 일부를 현재 기울기 값에 추가해 가중치 갱신
  • 이전 기울기 값에 의해 설정된 방향으로 더 빠르게 이동
  • ⇒ 일종의 관성 효과 얻을 수 있음
  • 파이토치의 모멘텀은 가중치 감쇠 적용 방법처럼 최적화 함수의 momentum 하이퍼파라미터를 설정해 구현 가능

엘라스팃 넷

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

  • 두 정칙화 방식을 결합함으로써 희소성과 작은 가중치의 균형 맞춤
  • 두 정칙화 방식의 선형 조합으로 사용하며 혼합 비율을 설정해 가중치 규제
  • 혼합 비율은 α로 어떤 정칙화를 더 많이 반영할지 설정하게 됨⇒ 1로 사용하면 L1 정칙화⇒ 트레이드오프 문제 더 유연하게 대처 가능
  • ⇒ 0으로 사용하면 L2 정칙화
  • → 0에서 1 사이의 값을 사용
  • 특징의 수가 샘플의 수보다 더 많을 때 유의미한 결과
  • → 상관관계가 있는 특징을 더 잘 처리 가능
  • 균형적인 규제를 가하기 위해 새로운 하이퍼파라미터인 혼합 비유도 조정해야함
  • ⇒ 더 많은 튜닝 필요
  • 두 정칙화 모두 계산 복잡도 문제를 갖고 있음
  • ⇒ 더 많은 리소스 소모

드롭아웃

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

  • 과대적합을 발생시키는 이유❓
    • 모델 학습 시 발생하는 노드 간 동조화 현상
      • 동조화❓⇒ 학습 과정에서 일부 노드를 제거해 노드 간 의존성을 억제해야함투표 효과를 얻을 수 있어 모델 평균화
      • 모델 평균화❓=> 여러 모델의 예측을 결합해 모델의 성능을 향상시키는 데 사용되는 기술
    • ⇒ 동조화 현상 방지 가능
    • → 특정 노드에 의존성이 생겨 학습 속도가 느려지고 새로운 데이터를 예측하지 못해 성능을 저하시킬 수 있음
    • 모델 학습 중 특정 노드의 가중치나 편향이 큰 값을 갖게 되면 다른 노드가 큰 값을 갖는 노드에 의존하는 것
  • 모델 평균화 효과를 얻기 위해 다른 드롭아웃 마스크를 사용하면
    • 모델을 여러 번 훈련해야 하므로 훈련 시간 늘어남
    • 모든 노드를 사용해 학습하지 않으므로 데이터세트가 많지 않다면 효과를 얻기 힘듦
    • 충분한 데이터세트와 학습이 없다면 모든 노드가 균일하게 학습될 수 없으므로 성능 저하될 수 있음
    • ⇒ 드롭아웃을 적용할 때는 충분한 데이터세트와 비교적 깊은 모델에 적용
  • 드롭아웃과 배치 정규화는 서로의 정칙화 효과 방해
    • 배치 정규화 → 내부 공변량 변화 줄여 과대적합 방지
    • 드롭아웃 → 일부 노드 제거⇒ 훈련 과정에서 성능이 저하되거나 불안정해짐
    • ⇒ 따라서 드롭아웃, 배치 정규화 순으로 적용
    • → 모델은 순방향 과정에서 다른 활성화 분포 사용하게 됨

그레이디언트 클리핑

⇒ 모델을 학습할 때 기울기가 너무 커지는 현상을 방지하는 데 사용하는 기술

  • 과대적합 모델은 특정 노드의 가중치가 너무 큼⇒ 가중치 최댓값을 규제해 최대 임곗값을 초과하지 않도록 기울기를 잘라 설정한 임곗값으로 변경
  • → 높은 가중치는 높은 분산 값을 갖게 하여 모델의 성능 저하
  • 순환 신경망(RNN)이나 LSTM 모델을 학습하는 데 주로 사용⇒ 그레이디언트 클리핑이 최댓값을 억제하므로 많이 활용
  • → 기울기 폭주에 취약한 두 모델
  • 가중치 값에 대한 엄격한 제약 조건을 요구하는 상황이거나 모델이 큰 기울기에 민감한 상황에서 유용하게 활용 가능

데이터 증강 및 변환

  • 데이터 증강
    • 데이터가 가진 고유한 특징을 유지한 채 변형하거나 노이즈를 추가해 데이터세트의 크기를 인위적으로 늘리는 방법
    • 모델의 과대적합을 줄이고 일반화 능력 향상
    • 기존 데이터의 형질이 유지되므로 모델의 분산과 편향을 줄일 수 있음
    • 특정 클래스의 데이터 수가 적은 경우 데이터 증강을 통해 데이터 불균형 완화 가능
    • 너무 많은 변형이나 노이즈를 추가한다면 기존 데이터가 가진 특징이 파괴될 수 있음
    • → 데이터의 일관성 사라짐

텍스트 데이터

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

  • 삽입, 삭제, 교체, 대체, 생성, 반의어, 맞춤법 교정, 역번역 등
  • 삽입 및 삭제
    • 삽입
    • 의미 없는 문자나 단어, 또는 문장 의미에 영향을 끼치지 않는 수식어 등을 추가
    • 삭제
    • 단어나 문자를 삭제해 데이터의 특징을 유지
    • 너무 적은 양을 삽입하거나 삭제한다면 과대적합 문제 발생
    • 너무 많은 양을 삽입하거나 삭제한다면 데이터 품질 저하
  • 교체 및 대체
    • 교체⇒ 무의미하거나 의미상 잘못된 문장을 생성할 수 있으므로 데이터의 특성에 따라 주의
    • 단어나 문자의 위치를 교환
    • 대체⇒ 비교적 데이터의 정합성이 어긋나지 않아 효율적으로 데이터 증강 가능
    • But, 조사(Postposition)가 어색해질 수도 . .
    • 단어나 문자를 임의의 단어나 문자로 바꾸거나 동의어로 변경
  • 역번역
    • 입력 텍스트를 특정 언어로 번역한 다음 다시 본래의 언어로 번역
    • 패러프레이징 효과 얻을 수 있음
    • 패러프레이징
      • 앞에서 사용한 단어 중 뜻이 같거나 유사한 어휘를 사용해 문장을 바꿔 표현
    • 번역 모델의 성능에 크게 좌우됨
    • 기계 번역의 품질을 평가하는 데 사용하기도 함

이미지 데이터

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

  • 회전, 대칭, 이동, 크기 조정 등
  • 회전 및 대칭
    • 변형된 이미지가 들어오더라도 더 강건한 모델 구축 가능
    • → 일반화된 성능
    • 과도하게 증강하면 본래의 특징 소실될 수 있음
    • 실제 데이터에 존재하지 않는 데이터 생성 가능
    • ex. 표지판
  • 자르기 및 패딩
    • 객체가 존재하는 위치로 이미지를 잘라 불필요한 특징을 감소시키거나 패딩을 주어 이미지 크기를 동일한 크기로 맞출 수 있음
    • 이미지를 과도하게 잘라 검출하려는 객체가 포함되지 않거나 너무 많은 패딩을 주어 특징의 영향 감소할 수도 있음
  • 크기 조정
    • 학습 데이터에 사용되는 이미지의 크기가 모두 일정해야 함⇒ 증강 클래스에서 이미지 크기 변환
    • But, 데이터 자체를 수정하면 향후 모델이 입력받는 이미지 크기가 달라졌을 때 데이터 관리에 어려움 생김
    • 보통 시퀀스 형태로 입력해 명시적으로 크기 설정
  • 변형
    • 기하학적 변환을 통해 이미지 변경
    • 기하학적 변환 ❓
      • 인위적으로 확대, 축소, 위치 변경, 회전, 왜곡하는 등 이미지의 형태를 변환하는 것→ 아핀 변환, 원근 변환
      • 아핀 변환각도, 이동, 척도, 전단을 입력해 이미지 변형
      • 2x3 행렬을 사용하며 행렬 곱셈에 벡터 합을 활용해 표현할 수 있는 변환
      • 원근 변환
      • 3x3 행렬을 사용하며 호모그래피로 모델링할 수 있는 변환
  • 색상 변환
    • 주로 색상의 위치나 패턴이 변경될 뿐 주 색상 값은 유지
    • ⇒ 모델이 이미지를 분석할 때 특정 색상에 편향되지 않도록 픽셀값을 변환하거나 정규화하면 모델을 더 일반화해 분석 성능을 향상시키고 학습 시간 단축 가능
    • 이미지의 밝기, 대비, 채도, 색상 변환
  • 노이즈
    • 특정 픽셀값에 편향되지 않도록 임의의 노이즈를 추가해 모델의 일반화 능력을 높임
    • 학습에 직접 포함되지 않더라도 테스트 데이터에 노이즈를 추가해 일반화 능력이나 강건성을 평가하는 데 사용
  • 컷아웃 및 무작위 지우기
    • 컷아웃동영상에서 폐색 영역에 대해 모델이 더 강건하게 해줌
    • 폐색 영역 ❓
      • 특정 프레임에는 존재하지만 다른 프레임에는 존재하지 않는 영역
    • 이미지에서 임의의 사각형 영역을 삭제하고 0의 픽셀값으로 채우는 방법
    • 무작위 지우기일부 영역이 누락되거나 잘렸을 때 더 강건한 모델 만들 수 있음
    • 임의의 사각형 영역을 삭제하고 무작위 픽셀값으로 채우는 방법
  • 혼합 및 컷믹스
    • 혼합⇒ 다중 레이블 문제에 대해서도 더 견고한 모델 구성 가능
    • 다중 레이블 문제 ❓
      • 하나의 객체가 두 개 이상의 클래스에 포함되는 것
    • 두 개 이상의 이미지를 혼합해 새로운 이미지를 생성하는 방법
    • 컷믹스이미지 영역을 잘라내고 붙여넣기하는 방법모델이 이미지의 특정 영역을 기억해 인식하는 문제 완화
    • ⇒ 이미지 전체를 보고 판단할 수 있게 일반화
    • 패치 위에 새로운 패치를 덮어씌워 비교적 자연스러운 이미지 구성
    • 이미지 패치 영역에 다른 이미지를 덮어씌우는 방법

사전 학습된 모델

⇒ 대규모 데이터세트로 학습된 딥러닝 모델로 이미 학습이 완료된 모델을 의미

  • 이미 학습된 모델의 일부를 활용하거나 추가 학습을 통해 모델의 성능 끌어낼 수 있음
  • 안정되고 우수한 성능 기대 가능
  • 대규모 데이터세트에서 데이터의 특징을 학습했으므로 유사한 작업에 대해서도 우수한 성능 기대
  • 전이 학습과 같은 작업뿐만 아니라 백본 네트워크로 사용

백본

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

  • 입력 데이터에서 특징을 추출하므로 노이즈와 불필요한 특성을 제거하고 가장 중요한 특징 추출
  • → 추출된 특징을 활용해 새로운 모델이나 기능의 입력으로 사용
  • 학습 데이터에 따라 쉽게 과대적합될 수 있음
  • → 정규화 또는 정칙화와 같은 기술 적용 권장

전이 학습

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

  • 특정 영역의 대규모 데이터세트에서 사전 학습된 모델은 다른 영역의 작은 데이터세트로 미세 조정해 활용
  • 소스 도메인에서 학습한 지식을 활용해 타깃 도메인에서 모델의 성능 향상
  • 타깃 도메인 ❓
    • 목적 영역이라고도 하며, 전이 학습에 사용할 도메인
  • 소스 도메인 ❓
    • 원천 영역이라고도 하며, 사전 학습된 모델이 학습에 사용한 도메인
  • 사전 학습된 모델을 활용하므로 과대적합 문제 최소화
  • 업스트림과 다운스트림 영역으로 구별
    • 업스트림대규모 특정 도메인의 데이터세트에서 학습한 모델전이 학습 파이프라인 중 시작 부분에 위치
    • 해당 도메인에 대한 특징과 특성이 학습돼야 함
    • 전이 학습을 수행하기 위해 사전 학습된 모델
    • 다운스트림업스트림 모델에서 학습한 지식을 활용해 작은 규모의 타깃 도메인 데이터세트에서 학습한 모델사전 학습된 모델의 계층을 하나 이상 사용하며 타깃 도메인에 적응하기 위해 소규모 데이터세트에서 미세 조정됨
    • 전이 학습 파이프라인 중 마지막 부분
    • 미세 조정된 모델
  • 귀납적 전이 학습
    • 기존에 학습한 모델의 지식을 활용해 새로운 작업을 수행하기 위한 방법 중 하나
    • 이전 작업에서 학습한 지식을 새로운 작업에 활용
    • → 모델의 일반화 능력 향상
    • 자기주도적 학습
      • 비지도 전이 학습의 유형 중 하나
      • 소스 도메인의 데이터세트에서 데이터의 양은 많으나 레이블링된 데이터의 수가 매우 적거나 없을 때 사용
      • 레이블이 지정된 데이터를 수집하는 데 리소스 소모가 큰 경우 유용하게 사용
    • 다중 작업 학습
      • 레이블이 지정된 소스 도메인과 타깃 도메인 데이터를 기반으로 모델에 여러 작업을 동시에 가르치는 방법
      • 공유 계층
        • 소스 도메인과 타킷 도메인의 데이터세트에서 모델을 사전 학습한 다음 단일 작업을 위해 작업별 계층마다 타깃 도메인 데이터세트로 미세 조정하는 방법으로 모델 구성
        • 작업마다 서로 다른 학습 데이터세트를 사용해 모델 미세 조정
        • 서로 다른 작업의 특징을 맞추기 위해 동시에 학습되므로 하나의 작업에 과대적합 되지 않음 → 일반화된 모델 얻을 수 있음
        • 서로의 작업이 동일한 도메인을 사용하므로 성능 향상에 기여
      • 작업별 계층
  • 변환적 전이 학습
    • 소스 도메인과 타깃 도메인이 유사하지만 완전히 동일하지 않은 경우
    • 학습에 사용되는 소스 도메인은 레이블이 존재하며, 타깃 도메인에는 레이블이 존재하지 않은 경우 사용
    • 레이블이 지정된 소스 도메인으로 사전 학습된 모델 구축
    • 레이블이 지정되지 않은 타깃 도메인으로 모델을 미세 조정해 특정 작업에 대한 성능 향상
    • 도메인 적응
      • 소스 도메인과 타깃 도메인의 특징 분포를 전이시키는 방법
      • 소스 도메인과 타깃 도메인은 유사하지만 다름⇒ 서로 다른 도메인들의 특징 분포를 고려해 학습하므로 도메인 변화를 확인해 전이
      • → 두 도메인의 특징 공간과 분포는 서로 다름
      • 타깃 도메인에서 모델의 성능 향상 목적
      • → 소스 도메인 조정할 있음
    • 표본 선택 편향/공변량 이동
      • 소스 도메인과 타깃 도메인의 분산과 편향이 크게 다를 때 표본을 선택해 편향이나 공변량을 이동시키는 방법
      • 무작위/비무작위 샘플링 방법이나 도메인 적응을 통해 해당 학습치만 전이
  • 비지도 전이 학습
    • 소스 도메인과 타깃 도메인 모두 레이블이 지정된 데이터가 없는 전이 학습 방법
    • 레이블이 없는 전체 데이터로 학습해 데이터가 가진 특징과 특성을 구분할 수 있게 사전 학습된 모델을 구축하고 소규모의 레이블이 지정된 데이터를 활용해 미세 조정
    • 레이블의 영향을 받지 않고 데이터가 가진 특징을 학습했으므로 미세 조정 시 더 효과적으로 타깃 도메인에 대해 예측 수행 가능
    • 대표적인 방법으로 생성적 적대 신경망, 군집화
  • 제로-샷 전이 학습
    • 사전 학습된 모델을 이용해 다른 도메인에서도 적용할 수 있는 전이 학습 기법
    • ⇒ 새로운 도메인에서 일반화된 성능 가질 수 있음
    • 새로운 도메인에서 학습할 데이터가 부족한 경우에 유용하게 사용
    • 다양한 도메인 간의 지식을 전이할 수 있기 때문에 일반화된 성능 높일 수 있음
  • 원-샷 전이 학습
    • 제로-샷 학습과 유사하지만, 한 번에 하나의 샘플만 사용해 모델을 학습하는 방법
    • 매우 적은 양의 데이터를 이용해 분류 문제를 해결
    • 서포트 셋쿼리 셋을 가정
    • 서포트 셋
      • 학습에 사용될 클래스의 대표 샘플
      • 각 클래스당 하나 이상의 대표 샘플로 이뤄짐
    • 쿼리 셋
      • 새로운 클래스를 분류하기 위한 입력 데이터
      • 분류 대상 데이터로, 서포트 셋에서 수집한 샘플과는 다른 샘플이어야함
    • 서포트 셋에 있는 대표 샘플과 쿼리 셋 간의 거리를 측정
    • ⇒ 쿼리 셋과 가장 가까운 서포트 셋의 대표 샘플의 클래스로 분류

특징 추출 및 미세 조정

⇒ 대규모 데이터세트로 사전 학습된 모델을 작은 데이터세트로 추가 학습해 가중치나 편향 수정

→ 재학습된 모델은 대규모 데이터세트에서 배운 지식을 적용해 새로운 데이터세트에 맞는 지식 제공 가능

  • 특징 추출
    • 타킷 도메인이 소스 도메인과 유사하고 타깃 도메인의 데이터세트가 적을 때 사용
    • 특징 추출 계층은 동결해 학습하지 않고 기존에 학습된 모델의 가중치 사용
    • 예측 모델마다 요구하는 출력 노드의 수가 다르므로 모델의 분류기만 재구성해 습
  • 미세 조정
    • 특징 추출 계층을 일부만 동결하거나 동결하지 않고 타깃 도메인에 대한 학습 진행
    • 데이터의 개수와 유사성에 따라 미세 조정 전략 달라짐
  • 데이터 ↓ 유사도↑
    • 적은 데이터를 최대한 활용하기 위해 분류기만 학습
  • 데이터 ↑ 유사도↓
    • 데이터가 가진 특징이 다르기 때문에 분류기를 포함한 모델 매개변수를 다시 학습
  • 데이터↓ 유사도↓
    • 초기 계층의 저수준 특징 추출 기능을 동결하고 나머지 계층과 분류기를 학습
  • 데이터↑ 유사도↑
    • 분류기에 가장 큰 영향을 미치는 상위 계층과 분류기를 학습