우노
[DL] Transfer Learning(전이학습)이란? 본문
Transfer Learning 이란?
- 기존의 만들어진 모델을 사용하여 새로운 모델을 만드는 것입니다.
- 학습이 빨라지며, 예측도 높아집니다.
왜 사용할까?
- 이미 학습된 모델을 사용해서 문제를 해결할 수 있습니다.
- 실질적으로 Convolution network을 처음부터 학습시키는 일은 많지 않습니다.
- 만들고자하는 모델이 복잡한 모델일수록 학습시키기 어렵습니다.
- layers의 갯수, activation, hyper parameters등등 고려해야 할 사항들이 많습니다.
- 모델 학습이 오래 걸릴 수도 있습니다.
- 학습 데이터의 수가 적을때 효과적입니다.
- 또한, 전이학습 없이 학습하는 것보다 학습 속도도 빠르며 훨씬 높은 정확도를 제공한다는 장점이 있습니다.
- 즉, 이미 잘 훈련된 모델이 있고, 해당 모델과 유사한 문제를 해결시 transfer learining을 사용합니다.
Fine-tuning 이란?
- 기존에 학습되어져 있는 모델을 기반으로, 아키텍쳐를 새로운 목적에 맞게 변형하고,
- 이미 학습된 모델의 파라미터를 업데이트 하는 방법을 말합니다.
- "Fine-tuning 했다" 라고 말하려면, 기존에 학습 된 layer에 데이터를 추가로 학습시켜, 파라미터를 업데이트 해야합니다.
- 이 때 주의할 점은, 완전히 랜덤한 초기 파라미터를 쓴다거나, 가장 아래쪽의 레이어의 파라미터를 학습하게 되면 오버피팅이 일어나거나 전체 파라미터가 망가지는 문제가 생깁니다.
방법
새로 훈련할 데이터가 적지만, original 데이터와 유사할 경우
- 데이터의 양이 적어, 전체 네트워크를 fine-tuning 하는 것은 over-fitting의 위험이 있기에 하지 않습니다.
- 새로 학습할 데이터는 original 데이터와 유사하기 때문에
- 이 경우 최종 linear classfier layer만 학습합니다.
새로 훈련할 데이터가 적으며, original 데이터와 다른 경우
- 이 경우 데이터의 양이 적고, 데이터가 서로 다르기 때문에, 네트워크의 마지막부분만 학습하는 것은 좋지 않습니다.
- 따라서, 네트워크 초기 부분 어딘가 activation 이후에 특정 layer를 학습시키는게 좋습니다.
새로 훈련할 데이터가 많으며, original 데이터와 유사할 경우
- 새로 학습할 데이터의 양이 많다는 것은, over-fitting의 위험이 낮다는 뜻이므로
- 전체 layer를 fine-tuning을 하거나
- 마지막 몇 개의 layer만 fine-tuning하거나
- 마지막 몇 개의 layer를 날려버리는 방법이 있습니다.
새로 훈련할 데이터가 많지만, original 데이터와와 다른 경우
- 데이터가 많기 때문에, 아예 새로운 ConvNet을 만들수도 있지만,
- 실적적으로 transfer learning의 효율이 더 좋습니다.
- 따라서, 전체 네트워크를 fine-tuning 해도 됩니다.
'AI > Deep Learning' 카테고리의 다른 글
[DL] Convolution, Padding, Stride, Pooling in CNN (1) | 2021.02.03 |
---|---|
[DL] LeNet-5, AlexNet, VGG-16, ResNet, Inception Network (1) | 2021.02.03 |
[DL] End-to-End Deep Learning 이란? (6) | 2021.01.27 |
[DL] 배치 정규화(Batch Normalization) (0) | 2021.01.21 |
[DL] Momentum, NAG, AdaGrad, RMSProp, Adam (0) | 2021.01.21 |
Comments