0. Pretrained Model
Pretrained Model이란 대규모 데이터셋을 기반으로 학습된 모델로, 학습한 task에 대한 일반적인 지식을 갖추고 있는 모델로, GPT / PALM / Stable-Diffusion 등이 이에 해당한다.
1. Transfer Learning
Transfer Learning: 전이학습이란 사전학습된 모델의 지식을 다른 task에 활용하는 것을 말한다. 모델이 이미 학습한 일반적인 지식을 기반으로 더 빠르고 효과적이게 새로운 지식을 학습할 수 있다. 이러한 방법은 보통 특정 딥러닝 모델을 사용하는 것보다 더 적은 양의 학습 데이터를 사용하면서도 학습 속도도 빠르고 성능도 우수한 결과를 보인다.
이렇게 이미 학습된 모델을 사용해 문제를 해결함에 따라 layer, Activation Function 등의 하이퍼파라미터들을 정하는 것을 생략하여 잘 훈련된 모델을 사용한다는 이점이 있다.
1-1. Fine-Tuning
전이학습의 방법으로는 Fine-Tuning이 있는데 이는 Pretrained Model을 그대로 혹은 layer을 몇개 추가한 후 새로운 작업에 맞는 데이터로 모델을 추가로 훈련시키는 방법을 말한다.
각 전략은 다른 상황에 사용된다.
1. 새로운 데이터의 크기가 작은데 기존과 유사성이 높을 때
: 이 때는 추가적인 학습없이 기존의 일반적인 지식을 전달하는데 집중하기 위해서 마지막 Classifier만 학습시키는 세번째 전략을 사용한다.
2. 새로운 데이터의 크기가 크고 기존과 유사성이 작을 때
: 이 경우에는 첫번째 전략을 사용하여 사전 학습 모델의 구조만 본따와 내 데이터와 합쳐 처음부터 다시 학습시킨다.
3. 새로운 데이터의 크기가 크고 기존과 유사성이 높을 때
: 이 경우에는 기존의 학습한 일반적인 지식을 유지하며 일부 layer만 추가로 학습시키는 등의 두번째 전략을 사용한다.
1-2. Domain Adaption
다음으로 Domail Adaption은 A라는 도메인에서 학습된 모델을 B라는 도메인으로 전이하여 도메인 간의 차이를 극복하는 것이 목적이다.
이것외에도 다양한 파인튜닝 기법들이 존재한다.
`Multi-task Learning`: 하나의 모델을 사용하여 여러개의 관련된 작업을 동시에 학습하면서 공통으로 사용되는 특징을 공유하는 학습 방식
`Zero-shot learning`: 기존에 학습되지 않은 새로운 클래스나 작업에 대해 에측을 수행하는 기술(CLIP)
`One/few-shot learning`: 하나 또는 몇 개의 훈련 예시를 기반으로 결과를 예측하는 방식
2. Pretrained Model Community
최근 대규모 데이터셋을 사전 학습한 모델들이 많이 발전하면서 이런 대규모 모델을 쉽게 커스터마이징하여 활용하고자하는 수요가 증대하였다. 이러면서 자연스레 이러한 사전학습모델들을 모아놓은 community들이 생겨났다.
2-1. Timm
Timm은 Pytorch Image Model의 약자로, 컴퓨터 비전 분야에서 사용하는 사전 학습 모델 라이브러리이다.
23년7월 기준으로 현재 총 1,163개의 사전학습 모델을 제공하고 있다.
import timm
# 제공되는 모델을 볼 수 있음
timm.list_models()
# 사전학습된 모델의 가중치를 불러올 수 있음
timm.create_model("모델명",pretrained=True)
Timm을 활용한 실습은 다음글에서 확인해볼 수 있다.
2-2. Hugging Face
초기에 Hugging Face는 NLP분야 위주로 만들어졌었는데 점차 규모가 커지면서 다양한 모달의 사전학습 모델을 제공하고 있다. 현재 23년 7월기준 243,069개의 모델과 46,033개의 데이터셋을 제공하고 있다.
사용법은 Hugging Face Docs에서 사용하고자하는 모델의 예시를 참고하여 설치하여 사용하면 된다.
'ML & DL > 개념정리' 카테고리의 다른 글
Hugging Face를 이용한 Finetuning 실습 (0) | 2024.01.09 |
---|---|
Timm을 이용한 Finetuning 실습 (0) | 2024.01.09 |
PyTorch 프로세스 (1) | 2024.01.09 |
PyTorch-DNN, CNN을 이용한 MNIST 실습 (0) | 2024.01.02 |
딥러닝 발전 (0) | 2023.12.28 |