사전 학습된 모델(Pre-trained Model)이란 대규모 데이터셋으로 학습된 딥러닝 모델로 이미 학습이 완료된 모델을 의미한다. 사전 학습된 모델 자체를 현재 시스템에 적용하거나 사전 학습된 임베딩 벡터를 활용해 모델을 구성할 수 있다.
이를 활용한다면 모델을 처음부터 구성하고 학습하는 것이 아닌 이미 학습된 모델의 일부를 활용하거나 추가 학습을 통해 모델의 성능을 끌어낼 수 있다.
처음부터 모델을 훈련하지 않으므로 학습에 필요한 시간이 감소하고, 전이 학습(Transfer Learning)과 같은 작업뿐만 아니라 백본 네트워크(Backbone Networks)로 사용되어 소규모 데이터로도 우수한 성능을 달성할 수 있다.
1. 백본
백본 네트워크(Backbone Network)는 딥러닝 모델의 핵심 구조로, 입력 데이터로부터 특성을 추출하는 역할을 수행합니다. 백본 네트워크는 전체 모델의 주요 구성 요소 중 하나이며, 이미지 처리 및 비전 작업에서 특히 중요합니다. 이 네트워크는 일반적으로 컨볼루션 신경망(Convolutional Neural Network, CNN) 혹은 트랜스포머(Transformer)와 같은 구조를 가집니다.
주요 특징과 역할에 대해 설명하겠습니다:
특성 추출 :
백본 네트워크의 주요 역할은 입력 데이터로부터 의미 있는 특성을 추출하는 것입니다. 예를 들어, 이미지 처리에서는 입력 이미지로부터 텍스처, 모양, 엣지 등의 특징을 추출합니다.
계층적 구조 :
백본 네트워크는 일반적으로 여러 계층으로 구성되어 있습니다. 하위 계층은 입력 데이터에 대한 저수준 특성을 학습하며, 상위 계층은 보다 추상화된 고수준 특성을 학습합니다. 이 계층적 구조는 다양한 수준의 추상화를 가능하게 합니다.
사전 학습(Pre-training) :
많은 경우, 백본 네트워크는 대량의 데이터에서 사전 학습(pre-training)된 후에 특정 작업에 fine-tuning되거나 전이학습에 사용됩니다. 이렇게 하면 모델은 일반적인 특성을 학습하게 되어 특정 작업에서 높은 성능을 보일 수 있습니다.
다양한 아키텍처 :
백본 네트워크의 구조는 작업의 종류 및 데이터의 특성에 따라 다릅니다. 예를 들어, 이미지 분류 작업에는 ResNet, VGG, EfficientNet과 같은 컨볼루션 신경망이 주로 사용되며, 자연어 처리 작업에는 BERT, GPT와 같은 트랜스포머 구조가 사용될 수 있습니다.
모듈화 :
많은 백본 네트워크는 모듈화되어 있어, 특정 부분을 변경하거나 교체하여 다양한 작업에 적용할 수 있습니다. 이는 전이 학습이나 모델의 변형에 유용합니다.
백본 네트워크는 다양한 딥러닝 응용 분야에서 효과적으로 사용되며, 고성능의 모델을 구축하는 데 기여합니다.
2. 전이 학습
전이 학습(Transfer Learning)은 한 작업에서 학습된 모델을 다른 관련 작업에 적용하는 기술입니다. 전이 학습은 모델이 한 작업에서 학습한 지식을 다른 작업에 전이하여 성능을 향상시키는 데 사용됩니다. 이는 보통 레이블이 있는 대규모 데이터셋에서 사전 학습된 모델을 가져와, 새로운 작업에서 적은 양의 데이터로 모델을 훈련시키는 방식으로 이루어집니다.
전이 학습에서 "소스 도메인(Source Domain)"과 "타깃 도메인(Target Domain)"은 중요한 개념입니다. 이 두 도메인은 전이 학습이 어떻게 이루어지는지를 이해하는 데 기여합니다.
소스 도메인(Source Domain) :
소스 도메인은 모델이 초기에 학습된 원래의 도메인이나 작업을 나타냅니다. 이 도메인에서 모델은 일반적인 특징을 학습하고, 이를 기반으로 초기 가중치가 설정됩니다. 예를 들어, ImageNet 데이터셋에서 사전 학습된 컨볼루션 신경망(CNN) 모델이 있다면, ImageNet은 해당 모델의 소스 도메인이 될 것입니다.
타깃 도메인(Target Domain) :
타깃 도메인은 전이 학습이 적용되고자 하는 새로운 도메인이나 작업을 나타냅니다. 전이 학습의 목적은 소스 도메인에서 학습된 지식을 활용하여 타깃 도메인에서의 성능을 향상시키는 것입니다. 예를 들어, 의료 영상에서 소스 도메인은 자연 이미지 데이터이고, 타깃 도메인은 의료 영상 데이터일 수 있습니다.
전이 학습은 소스 도메인에서 학습된 특징들을 타깃 도메인에 맞게 조정(fine-tuning)하거나, 소스 도메인에서 학습된 특성을 타깃 도메인에 맞게 변형하는 방식으로 이루어집니다. 이를 통해 모델은 소스 도메인에서의 지식을 새로운 도메인에 전이시켜 더 나은 성능을 발휘하도록 합니다.
전이 학습의 주요 특징과 장점은 다음과 같습니다:
적은 양의 데이터 필요 :
전이 학습을 사용하면 새로운 작업에 대해 적은 양의 레이블이 있는 데이터만으로도 효과적으로 모델을 학습할 수 있습니다. 이는 특히 새로운 도메인에서 데이터를 수집하는 것이 어려운 경우에 유용합니다.
빠른 수렴 및 성능 향상 :
이미 일반적인 특징을 학습한 모델을 기반으로 새로운 작업을 수행하기 때문에 학습이 빠르게 수렴하고, 보다 높은 성능을 달성할 수 있습니다.
도메인 적응 :
전이 학습은 원본 작업과 새로운 작업이 서로 다른 도메인에서 이루어지는 경우에도 유용합니다. 모델은 새로운 도메인의 특성을 학습하여 일반화할 수 있습니다.
전이 학습은 사전 학습된 모델과 미세 조정된 모델의 관계를 설명하기 위해 업스트림(Upstream)과 다운스트림(Downstream) 영역으로 구별된다.
업스트림(Upstream) :
업스트림 학습 단계는 모델이 초기에 소스 도메인에서 학습되는 단계를 나타냅니다. 이 단계에서 모델은 소스 도메인의 데이터를 사용하여 초기 가중치를 학습하고, 일반적인 특징을 습득합니다. 일반적으로 이는 큰 규모의 데이터셋에서 수행되며, 모델은 소스 도메인에서의 일반적인 패턴 및 특성을 파악합니다.
다운스트림(Downstream) :
다운스트림 적용 단계에서는 학습된 모델이 타깃 도메인에서 실제 작업에 적용되는 단계를 나타냅니다. 모델은 초기에 학습된 지식을 사용하여 새로운 도메인에서 레이블이 제한된 데이터에 대한 작업을 수행합니다. 이는 일반적으로 타깃 도메인에서의 레이블이 적은 상황에서 유용하며, 적은 양의 데이터로도 효과적인 성능을 얻을 수 있도록 도와줍니다.
전이 학습에는 귀납적 전이 학습, 변환적 전이 학습, 비지도 전이 학습 등이 있다.
1) 귀납적 전이 학습
귀납적 전이 학습(Inductive Transfer Learning)은 한 도메인에서 학습된 모델을 다른 관련 도메인으로 전이하여 성능을 개선하는 기술입니다. 이는 하나의 작업에서 학습된 모델을 다른 유사한 작업에 적용하는 것을 의미합니다. 귀납적 전이 학습은 기존의 모델을 새로운 작업에 맞게 조정하거나 fine-tuning하여 성능을 향상시키는데 사용될 수 있습니다.
귀납적 전이 학습(Inductive Transfer Learning)에서 자기주도적 학습(Self-Supervised Learning)과 다중 작업 학습(Multi-Task Learning)은 모델을 향상시키는 데 사용되는 기술입니다. 이러한 기술들은 주로 모델의 구조에서 Shared Layers(공유 계층)와 Task-Specific Layers(작업 특정 계층)을 어떻게 활용하는지에 중점을 둡니다.
Shared Layers (공유 계층):
- 자기주도적 학습(Self-Supervised Learning): 공유 계층은 데이터의 자기 생성적인 작업에 활용될 수 있습니다. 예를 들어, 오토인코더나 미래 예측 등의 자기 주도적 학습 방법은 모델이 데이터로부터 유용한 특징을 추출하도록 도와줍니다. 이러한 공유 계층에서 학습된 특성은 다양한 작업에 전이될 수 있습니다.
- 다중 작업 학습(Multi-Task Learning): 다중 작업 학습에서도 공유 계층은 여러 작업에 공유되어 사용됩니다. 여러 작업을 동시에 학습함으로써, 모델은 공유 계층에서 다양한 작업에 대한 특징을 학습하게 됩니다. 이는 데이터 효율성과 모델의 일반화 능력을 향상시키는 데 도움이 됩니다.
Task-Specific Layers (작업 특정 계층):
- 자기주도적 학습(Self-Supervised Learning): 자기 주도적 학습에서는 공유 계층에서 학습된 특성을 활용하여 추가 작업에 대한 작업 특정 계층을 학습합니다. 이러한 작업 특정 계층은 자기 주도적 학습에서 얻은 표현을 활용하여 특정 작업을 수행하는 데 사용됩니다.
- 다중 작업 학습(Multi-Task Learning): 다중 작업 학습에서는 각 작업에 대해 고유한 작업 특정 계층이 존재하게 됩니다. 이렇게 함으로써, 모델은 각 작업에 특화된 특징을 학습하게 되며, 서로 다른 작업 간의 상호 작용을 통해 모델의 성능을 향상시킬 수 있습니다.
2) 변환적 전이 학습
"Transductive Transfer Learning"은 전이 학습의 한 형태로, 소스 도메인과 타깃 도메인이 유사하지만 완전히 동일하지 않은 경우를 의미한다. 소스 도메인은 레이블이 존재하지만, 타깃 도메인에는 레이블이 존재하지 않은 경우에 사용된다.
변환적 전이 학습은 도메인 적응과 표본 선택 편향/공변량 이동으로 나뉜다.
도메인 적응(Domain Adaptation):
예를 들어, 자율 주행 자동차를 만드는 회사가 도시 A에서 데이터를 수집하여 모델을 훈련했다고 가정해 봅시다. 그런데, 이 모델을 도시 B에서 테스트하려고 하면, 도로, 교통 조건, 날씨 등이 다를 수 있습니다. Transductive Transfer Learning은 이러한 도메인 간의 차이를 극복하여 도시 A에서 훈련한 모델을 도시 B에서 효과적으로 사용할 수 있도록 도와줄 수 있습니다.
Sample Selection Bias(표본 선택 편향):
Sample Selection Bias는 모델이 학습될 때 사용된 훈련 데이터가 모집단을 대표하지 않는 경우에 발생하는 편향을 나타냅니다. 이는 모델이 특정 하위 그룹이나 특정 조건에서 불균형하게 학습되는 문제를 일으킬 수 있습니다.
예를 들어, 의료 영상 데이터를 수집하는 경우를 생각해 봅시다. 만약 훈련 데이터가 특정 센터나 특정 인구층에서 수집되었고, 이는 전체 의료 데이터의 일부분에 불과하다면, 모델은 해당 그룹에 대해 특히 강한 성능을 보일 수 있지만, 다른 인구층에 대해서는 성능이 낮을 것입니다. 이는 Sample Selection Bias로 해석할 수 있습니다.
Covariate Shift(공변량 이동):
Covariate Shift는 훈련 데이터와 테스트 데이터 사이에 입력 변수(공변량)의 분포가 다를 때 발생합니다. 즉, 입력 변수의 확률 분포가 변할 때 모델의 성능이 영향을 받는 현상을 가리킵니다.
예를 들어, 어떤 모델이 음성 및 양성 종양을 구별하는 데 사용된다고 가정합시다. 훈련 데이터는 정상적인 상태에서 얻은 것이지만, 테스트 데이터는 병원에서 얻은 것이라면, 두 데이터 세트 간에는 입력 변수의 분포 차이가 있을 것입니다. 이러한 경우, 모델은 새로운 환경에서 성능이 저하될 수 있습니다.
3) 비지도 전이 학습
비지도 전이 학습(Unsupervised Transfer Learning)은 레이블이 없는 데이터에서 학습된 모델을 다른 작업에 활용하는 전이 학습의 형태입니다. 비지도 학습은 입력 데이터에 대한 명시적인 레이블이 제공되지 않는 상황에서 모델을 학습하는 방법입니다. 이러한 학습된 모델은 비슷한 특성을 갖는 작업에 대해 전이될 수 있습니다.
예시: 오토인코더를 사용한 특징 추출
비지도 훈련 단계:
레이블이 없는 대규모 이미지 데이터셋을 사용하여 오토인코더(Autoencoder)를 훈련합니다. 오토인코더는 입력 데이터를 효과적으로 인코딩하고 디코딩하여 입력과 출력 간의 차이를 최소화하는 방식으로 작동합니다.
중간 특성 추출:
훈련된 오토인코더의 중간층은 데이터의 압축된 표현(잠재 변수 또는 특징 벡터)를 학습하게 됩니다. 이러한 중간층의 특성은 데이터의 주요 특징을 나타냅니다.
전이 학습:
이렇게 학습된 오토인코더의 중간층은 다른 작업에 대한 특성 추출기로 사용될 수 있습니다. 예를 들어, 다른 이미지 분류 작업을 수행하는 모델의 일부로 중간층을 추가하고, 새로운 작업에 맞게 해당 층을 fine-tuning 할 수 있습니다.
이 방식은 레이블이 없는 데이터를 이용하여 기본 특성을 학습하고, 이를 다른 작업에 적용하여 레이블이 없는 데이터의 정보를 활용하는 것입니다. 이는 특히 레이블이 부족하거나 얻기 어려운 경우에 유용하며, 다양한 도메인에서 적용될 수 있습니다.
비지도 전이 학습의 다른 예로는 생성 모델(Generative Models)을 사용하여 데이터 분포를 학습하고 이를 다른 작업에 적용하는 것이 있습니다. 이러한 방식은 데이터 생성과 특징 추출의 측면에서 전이 학습을 수행할 수 있습니다.
4) 제로-샷 전이 학습
Zero-shot Transfer Learning은 모델이 이전에 본 적 없는 클래스 또는 작업에 대해 학습된 정보를 전이하여 새로운 작업에 대해 예측을 수행하는 전이 학습의 형태입니다. 즉, 모델이 명시적인 학습 단계 없이 새로운 클래스나 작업에 대해 예측을 할 수 있도록 학습된 것을 의미합니다.
원래 작업:
모델은 동물 이미지를 분류하는 작업에서 훈련되었습니다. 예를 들어, 고양이, 개, 새 등의 클래스를 구별하는 데 사용되었습니다.
새로운 작업:
이 모델은 새로운 작업으로 전이되어 식물 이미지를 분류해야 합니다. 이 작업은 이전에 훈련된 클래스와 완전히 다른 클래스를 가지고 있습니다.
Zero-shot Transfer Learning:
Zero-shot Transfer Learning은 이전에 훈련된 모델을 사용하여 새로운 작업에 대한 예측을 수행하는 것입니다. 모델은 이전에 학습된 동물 이미지의 특성을 활용하여 식물 이미지에 대한 예측을 수행합니다.
임베딩 공간 활용:
Zero-shot Transfer Learning에서는 종종 임베딩 공간(Embedding Space)이 사용됩니다. 즉, 모델이 이전 작업에서 학습한 특성을 통해 이미지를 임베딩하는 방법을 학습하게 됩니다. 이러한 임베딩은 새로운 작업에 대해서도 유용하게 사용될 수 있습니다.
5) 원-샷 전이 학습
One-shot Transfer Learning은 매우 적은 양의 데이터(일반적으로 하나 또는 몇 개의 예제)를 사용하여 모델을 학습하고, 이를 다른 작업에 전이시키는 전이 학습의 형태입니다. 이는 특히 새로운 작업에 대한 레이블이 매우 제한적인 상황에서 유용합니다.
One-shot Transfer Learning에서 사용되는 주요 개념 중 하나는 "서포트 셋(Support Set)"과 "쿼리 셋(Query Set)"입니다. 이러한 용어는 메타-학습(Meta-Learning)이나 페와샷 학습(Few-shot Learning)과 같은 범주의 기술에서 빈번하게 사용됩니다.
서포트 셋(Support Set):
서포트 셋은 새로운 작업에 대한 학습을 지원하는 작은 데이터 집합입니다. 이 데이터 집합에는 각 클래스에 대한 적은 수의 예제가 포함되어 있습니다. 예를 들어, 새로운 작업에서 인식해야 할 얼굴 중 몇몇 유명인의 이미지가 각 클래스별로 하나씩 포함될 수 있습니다.
쿼리 셋(Query Set):
쿼리 셋은 모델이 학습한 후 테스트를 수행하는 데 사용되는 데이터 집합입니다. 이 데이터 집합에는 서포트 셋과 겹치지 않는 클래스에 속하는 얼굴들이 포함되어 있습니다. 모델은 이러한 얼굴을 이전에 보지 않았던 클래스에 대해 인식하려고 시도하게 됩니다.
One-shot Transfer Learning 과정:
One-shot Transfer Learning에서는 먼저 서포트 셋을 사용하여 모델을 학습합니다. 각 클래스에 대해 매우 적은 수의 예제만 사용되기 때문에 이 학습 단계는 모델이 레이블이 제한된 데이터에서 효과적으로 학습되도록 돕습니다. 그 다음, 학습된 모델은 쿼리 셋에서 테스트되어 새로운 작업에서 얼굴을 인식하고 분류합니다.
다음은 레이블링과 도메인에 따른 전이 학습 방법을 정리한 것이다.
유형 | 세부 유형 | 소스 도메인 | 타깃 도메인 |
귀납적 전이 학습 | 자기주도적 학습 | 레이블 X | 레이블 O |
귀납적 전이 학습 | 다중 작업 학습 | 레이블 O | 레이블 O |
변환적 전이 학습 | - | 레이블 O | 레이블 X |
비지도 전이 학습 | - | 레이블 X | 레이블 X |
제로-샷 전이 학습 | - | 레이블 O | 레이블 X |
원-샷 전이 학습 | - | 레이블 O | 레이블 X |
3. 특징 추출 및 미세 조정
Feature Extraction(특성 추출)과 Fine-tuning(미세 조정)은 전이 학습에서 모델을 소스 도메인에서 학습된 가중치를 활용하여 새로운 타깃 도메인에 적용하는 두 가지 주요 전략입니다. 계층 동결은 이 두 전략을 조절하는 데 중요한 역할을 합니다.
Feature Extraction (특성 추출):
- Feature Extraction에서는 사전 학습된 모델의 일부 계층(일반적으로 공유 계층)을 가져와서 새로운 작업에 적용합니다. 이때 가져온 계층은 초기에 학습된 특성을 추출하는 데 사용됩니다. 이 계층은 고정된 가중치를 가지며, 새로운 작업의 데이터로부터 특성을 추출하는 역할을 합니다.
- Feature Extraction에서는 주로 공유 계층을 동결시킵니다. 즉, 해당 계층의 가중치를 고정하여 학습이 되지 않도록 만듭니다. 이는 사전 학습된 특성을 유지하면서 새로운 작업에 적용하는 데 도움이 됩니다.
예를 들어 ImageNet에서 사전 학습된 컨볼루션 신경망의 일부 계층을 가져와, 해당 계층을 동결시킨 후, 새로운 작업에서 특성을 추출하여 분류 모델에 사용.
Fine-tuning (미세 조정):
- Fine-tuning에서는 사전 학습된 모델을 가져와서 일부 계층 또는 전체 모델에 대해 새로운 작업에 맞게 가중치를 조정합니다. 이는 특정 작업에 더 적합하도록 모델을 조정하는 것을 의미합니다.
- Fine-tuning에서는 처음 몇 개의 공유 계층을 동결할 수 있습니다. 이는 초기에 학습된 일반적인 특성을 보존하면서, 더 낮은 수준의 특성을 타깃 도메인에 맞게 조정하는 데 도움이 됩니다.
예를 들어 특정 의료 영상 데이터에서 성능을 향상시키기 위해, 사전 학습된 컨볼루션 신경망의 일부 계층을 동결하고, 나머지 일부 계층에 대해 새로운 데이터에 맞게 가중치를 미세 조정.
계층 동결은 전이 학습에서 중요한 개념으로, 어떤 계층을 고정할지 여부에 따라 모델이 얼마나 새로운 작업에 적합해지는지가 결정됩니다.
'Deep Learning > etc' 카테고리의 다른 글
Bicubic Interpolation (0) | 2024.05.02 |
---|---|
쿨백 라이블러 발산 (0) | 2024.03.15 |