변형된 모델 학습방법 - 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을 학습시켜나간다

 

self training의 기본 알고리즘1

 

self training의 기본 알고리즘2

 

이렇게 학습시켜 기존의 supervised learning의 한계를 뛰어넘어 최근 2019 ImageNet 대회에서 압도적인 성능으로 1등을 하였다

 

 

TAGS.

Comments