Transfer Learning
- 학습된 model을 기반으로 output layer을 바꿔 학습하는 기법
idea
- 인간은 과거학습한 지식으로 새로운 문제를 풀수있다.
- output layer을 보여중인 data에 대응하는 output layer로 바꾸기
# ex) vgg16 net = models.vgg16(pretrained=True) net.classifier[6] = nn.Linear(in_features=4096, out_features=10) # output layer
- 교체한 output layer을 소량의 data로 다시 학습
- 이때 input layer에 가까운 부분의 결합 파라미터는 학습된 값으로 변화 시키지 않는다.
- input layer에 가까운 층의 Parameter도 바꿔 학습된 값으로 갱신하는 방법은 Fine Tuning이라고한다.
- 이때 input layer에 가까운 부분의 결합 파라미터는 학습된 값으로 변화 시키지 않는다.
장점
- 적은 data set으로 학습이 가능
- 시간 절약
- 보통 전이학습 모델의 성능이 더 좋다.(초,중,후반 layer feture 추출이 다름)
ex) 이미지의 경우초,중반 layer에서는 직선,곡선의 대한 추출이기때문에 다른 글자인식에도 도움이된다.
Transfer learning with VGGNet & MNIST Dataset
- Goal : vgg16 model로 Tramsfer Learning을 이용하여 MNIST Data 학습시켜 확인해보자.
즉, image net을 학습한 model이 MNIST의 숫자 data들을 잘 구별할수있나 확인해보자.
- code: Transfer learning with VGGNet & MNIST Dataset