Transfer Learning(전이학습)
Transfer Learning이란?
사전에 학습된 모델(Pretrained Model)을 가지고 우리가 원하는 학습에 미세 조정하여 학습시키는 방법을 말한다.
왜 사용할까?
모델을 처음부터 만드려면 아래와 같은 문제점이 생긴다.
- 학습 시킬 데이터수가 적거나 데이터 확보하는데 많은 비용이 든다.
- 새로운 문제를 해결할 때 데이터의 분포가 바뀌면 기존의 통계적 모델을 새로운 데이터로 다시 만들어야 한다.
- Convolution network을 처음부터 학습시켜야 한다.
- 복잡한 모델일수록 학습 시간도 오래 걸리고 GPU 비용도 비싸다.
- layers의 개수, activation, hyper parameters 등 고려해야할 사항들이 많고, 처음부터 학습시키려면 많은 시행착오가 필요하다.
즉, 이미 잘 훈련된 모델이 있고, 해당 모델과 유사한 문제를 해결한다면 transfer learing을 사용하는 것이 좋다. 실제로 CNN을 구축하는 경우 대부분 처음부터 (random initialization) 학습하지는 않는다. ImageNet과 같은 대형 데이터셋을 사용해서 pretrain된 ConvNet 을 사용한다.
무엇이 있을까?
ImageNet, VGGNet, ResNet, gooGleNet 등
Fine Tuning
Fing-tuning이란?
기존에 학습된 모델을 기반으로 아키텍쳐를 새로운 목적에 맞게 변형하고 이미 학습된 모델의 가충치를 미세하게 조정하여 학습시키는 방법을 말한다.
fine-tuning은 3가지 방법이 있다.
1. 전체 모델을 새로 학습
사전학습 모델의 구조만 사용하면서, 자신의 데이터셋에 맞게 전부 새로 학습시키는 방법이다.
2. Convolutional base 일부분은 고정, 나머지 계층과 Classifier를 새로 학습
낮은 레벨의 계층은 일반적인 특징(독립적인 특징)을 추출하고, 높은 레벨의 계층은 구체적이고 특유한 특징(Task에 따라 달라지는 특징)을 추출한다. 이런 특성을 이용하여 어느 정도까지 재학습시킬지 정할 수 있다.
데이터 셋이 작고 모델의 파라미터가 많다. -> 오버피팅이 일어날 수 있다.
데이터 셋이 크고 모델이 작다. -> 더 많은 계층을 학습시켜 적합한 모델로 발전가능하다.
3. Convolutional base는 고정시키고, Classifier만 새로 학습
컴퓨팅 연산 능력이 부족하거나, 데이터 셋이 너무 작을 때, 혹은 적용하려는 Task가 학습모델이 이미 학습한 데이터 셋과 매우 비슷할 때 고려해볼 수 있다.
참고
https://blog.naver.com/flowerdances/221189533377
http://boysboy3.tistory.com/112
http://incredible.ai/artificial-intelligence/2017/05/13/Transfer-Learning
https://choice-life.tistory.com/40