안녕하세요. 이번 포스팅에서는 Transfer Learning 에 대해서 배워보도록 하겠습니다.
기존의 기계학습 알고리즘에서는 2개의 훈련 데이터셋을 학습할 때, 비록 2개의 데이터셋이 비슷한 특징을 가진다고 하더라도, 2개의 모델을 각각 독립적으로 만들어서, 사용합니다.
예를 들어서, 첫번 째 모델은 가구에 소파, 식탁, 장롱 등의 다양한 category를 분류하는 모델이며, 두번 째 모델은 다양한 가구중에서 소파인지 아닌지를 분류하는 binary classification 모델이라고 가정하면, 첫번째와 두번째 모델은 각각 독립적으로 학습됩니다.
반면에, Transfer Learning은 이전에 사용되었던 모델의 정보를 입력받아 새로운 모델을 학습합니다.
예를 들어서, 가구를 분류하는 CNN 네트워크가 사전에 만들어져 있다고 합시다. 실제로 가구를 분류할 때, 사용되는 Feature들이 소파인지를 분류하는 Feature는 분명히 비슷한 점이 많기 때문에, 만들어져 있는 CNN 네트워크에서 만들어진 Feature를 새로운 모델을 만들 때, 그대로 사용하면 학습 시간에 있어서 상당히 줄일 수 있습니다.
이 때, 사전에 학습되는 모델을 pre-training 이라고 정의하고, 이를 활용하여 새로운 모델을 학습하는 과정을 Fine-tuning 이라고 정의합니다.
다음으로, Fine-tuning 과정에 대해서 배워보도록 하겠습니다.
Fine tuning 은 크게 4가지 유형으로 나눌 수 있습니다.
1. Small dataset and similar to the pre-trained model`s dataset
첫 번째는, 데이터셋이 적지만, 기존에 pre-trained 된 데이터 셋과 비슷한 특징을 가지는 경우입니다.
이 때, 데이터가 적기 때문에, 전체 네트워크에 대하여 Fine-tuning을 하면, over-fitting 문제가 발생합니다.
따라서, FC layer에 대해서만 Fine-tuning을 진행합니다.
Conv. layer에 대해서 학습을 막기 위해서 learning rate를 0으로 주고, 학습하는 층에 대해서는 learning rate를 기존에 pre-trained 된 네트워크의 learning rate의 1/10의 값으로 사용합니다.
왜냐하면, 만약 높은 값의 learning rate를 사용하면, 기존에 있던 정보들은 새로운 데이터 셋에 맞춰서 새로 업데이트 되기 때문에, pre-train 하는 이유가 없어집니다.
2. Large dataset and similar to the pre-trained model`s dataset
두 번째는, 데이터셋이 충분하고, 기존에 pre-trained 된 데이터 셋과 비슷한 특징을 가지는 경우입니다.
이때는 데이터가 충분히 있기 때문에 Conv. layer에 대해서 Fine-tuning을 진행해도 over-fitting의 위험이 없습니다.
하지만, 데이터 셋이 유사하기 때문에, 시간 비용을 감안할 때, 전체 layer에 대해서 Fine-tuning을 진행할 필요는 없습니다.
즉, 전체 layer의 약간만 기존의 learning rate의 1/10의 값으로 학습을 진행합니다.
3. Large dataset and different from the pre-trained model`s dataset
세 번째는, 데이터셋이 충분하고, 기존에 pre-trained 된 데이터 셋과 다른 특징을 가지는 경우입니다.
이 때, 데이터 셋에서 차이가 있으므로, 적은 Conv. layer를 Fine tuning 하면은 좋은 학습효과를 낼 수 없습니다.
데이터셋이 충분하기 때문에 전체 Conv. layer를 Fine tuning 해도 over-fitting문제가 크게 발생하지 않습니다.
4. Small dataset and different from the pre-trained model`s dataset
네 번째는, 데이터셋이 부족하고, 기존에 pre-trained 된 데이터 셋과 다른 특징을 가지는 경우입니다.
사실, 이 경우가 제일 문제입니다.
데이터 셋에 차이가 많기 때문에, 적은 layer를 Fine tuning하기에는 학습효과가 부족하고, 많은 layer를 Fine tuning하기에는 적은 데이터셋에 의해 over-fitting 문제가 발생합니다.
이 경우, 따라서 적당한 양의 layer만 Fine tuning을 진행해야 하는데, 실로 어려운 문제라고 합니다.
'데이터 다루기 > 신경망' 카테고리의 다른 글
[신경망] 19. Recurrent Neural Network (RNN) (0) | 2019.06.18 |
---|---|
[신경망] 18. Deconvolution (0) | 2019.06.18 |
[신경망] 16. CNN Architecture (2) VGGNet, GoogleNet (0) | 2019.06.04 |
[신경망] 15. CNN Architecture (1) AlexNet, ZFNet (0) | 2019.06.04 |
[신경망] 14. Convolution Neural Network (0) | 2019.06.04 |