출처: https://je0nsye0n.tistory.com/31
Pre-training이란, 임의의 값으로 초기화하던 모델의 가중치들을 다른 문제(task)에 학습시킨 가중치들로 초기화하는 방법이다.
이때, 사전 학습한 가중치를 활용하여 학습하고자 하는 본 문제를 하위 문제(downstram task)라 한다. 앞 예시에서 사전 학습한 모델인 감정 분석 문제가 사전 학습 문제(pre-train task)가 된다. 그렇다면, 사전 학습 문제에 맞게 학습된 모델이 어떻게 downstram task를 처리할 수 있을까? 이때 등장하는 개념이 Transfer Learning인 것이다.
Transfer Learning은 Pre-trained model을 downstram task에 맞는 라벨로 구성된 새로운 dataset으로 다시 학습시키는 것이다. 다른 도메인의 데이터로 다시 학습한다 해서 domain adaptation이라 부르기도 한다.
즉, 사전에 학습된 모델을 pre-trained model이라 하고, 이를 활용하여 새로운 데이터셋을 학습하는 과정을 transfer learning이라고 정의한다.

아래와 같은 task 조건이 있다고 하자.
1. 표범과 호랑이를 구분하고 싶으나, 이에 대한 dataset이 부족함
2. 강아지와 고양이를 구분하는 데이터를 이용하여 모델을 훈련시킴(Pre-training)
3. 표범, 호랑이 이미지와 각 클래스의 라벨로 구성된 새로운 데이터셋으로 다시 학습시킴(TL)
4. 표범과 호랑이를 구분하는게 아니라 모든 포유류를 구분하고 싶어짐
위와 같은 경우에는 어떻게 해야할까?
얻고자 하는 결과값이 다르기 때문에 마지막 output을 삭제하고 다른 layer들을 붙여서 써야한다. 그리고 이 과정을 fine tuning이라고 한다. 그리고 파인튜닝은 방법에 따라 아래와 같이 나뉠 수 있다.
