변형된 모델 학습방법 - semi-supervised training과 self-training
1. semi-supervised learning
supervised learning은 label된 데이터를 사용해야한다.
그러나 label된 데이터는 대규모로 구축하는데는 비용이 너무 많이 든다
반면 unsupervised learning에서 활용하는 label이 필요없는 unlabel 데이터는 온라인상에서 무궁무진하게 아주 쉽게 수집하여 활용할 수 있다는 장점이 있다.
사실 대부분의 유용한 task는 supervised learning인데 unlabel된 데이터를 활용할 방법이 있지 않을까?
unlabel된 데이터와 label된 데이터를 모두 사용하여 학습하는 방식이 semi-supervised learning이다.
1-1) semi-supervised learning using knowledge distillation
상대적으로 적은 label된 데이터를 통해 미리 학습한 model을 준비한다
이 model로부터 input을 적당히 넣어 prediction 값을 구한다.
input에 대한 prediction이어서 input의 label이 있다고 말할 수 있지만 true값은 아니니 pseudo label이라고 부른다
사전학습에 이용한 label 데이터와 대량으로 생성한 pseudo label 데이터를 활용하여
새로운 model을 학습시키거나 이전에 사전학습시킨 모델을 재학습시킨다.
재학습시켜도 되고 새로운 모델을 사용하여 학습시켜도 되고
2. self-training
앞에서 배운 data augmentation과 teacher student knowledge distillation이랑 semi supervised learning을 모두 섞은 괴물같은 알고리즘
ImageNet의 대량의 데이터(100만)를 활용하여 하나의 teacher model을 사전학습 시킨다.
이 사전학습시킨 teacher model을 활용하여 대량의 unlabel data인 pseudo label 데이터(30000만???)를 자동적으로 생성한다
이제 기존의 ImageNet의 대량의 데이터와 자동 생성한 pseudo label 데이터를 활용하여
기존 teacher model보다 더 큰 student model을 학습시킨다.
이 때 그냥 학습시키는 것이 아니고 random augmentation을 활용하여 데이터를 더욱 증가시켜서 학습을 시킨다.
기존의 teacher model을 날려버리고 학습시킨 student model을 활용하여 pseudo label 데이터를 또 생성한다
그러면 이제 생성한 모든 데이터에 또 random augmentation으로 데이터를 더욱 늘려 기존의 student model보다 더 큰 student model을 학습시킨다.
위 과정을 2~3회 반복하면서 기존보다 더 큰 student model을 학습시켜나간다
이렇게 학습시켜 기존의 supervised learning의 한계를 뛰어넘어 최근 2019 ImageNet 대회에서 압도적인 성능으로 1등을 하였다
'딥러닝 > Computer Vision' 카테고리의 다른 글
GAN(Generative Adversarial Network)의 핵심 아이디어 미리보기 (0) | 2022.03.13 |
---|---|
DenseNet과 SENet의 핵심아이디어 살펴보기 (0) | 2022.03.13 |
semantic segmentation task와 Fully convolutional network, deconvolution 간단하게 알아보기 (0) | 2022.02.20 |
가장 좋은 data augmentation이 있을까?(random augmentation) (0) | 2022.02.13 |
컴퓨터비전에서 사용하는 기본적인 data augmentation 1 (0) | 2022.02.12 |