Leveraging Pre-trained Information

Heath_Jeong·2021년 3월 8일
0

Transfer Learning

높은 퀄리티의 데이터셋을 구하는 것은 비싸고 어렵다.
또한 품질 측면에서 사람이 데이터 라벨링을 해도 완벽하지 않다.

따라서 기존의 사전학습된 모델에 적은 데이터를 가지고 새로운 태스크를 수행하도록 Transfer Learning 을 하자.

정리하자면 하나의 거대한 데이터셋에서 배운 지식을 다른 데이터셋에 적용하는 방법이다!

방법 1 : 사전학습된 웨이트 고정

기학습된 Convolution 레이어들은 그대로 두고 FC 레이어의 웨이트만 업데이트한다.
데이터가 정말 적을 때 사용하면 유용하다.

방법 2 : 전체 모델 학습

Convolution 레이어에는 적은 러닝 레이트를 주고 FC 레이어에는 높은 러닝 레이트를 줘서 학습시킨다.
데이터가 조금 더 있을 때 사용하면 유용하다.


Knowledge Distillation

모델이 학습한 것을 다른 작은 모델이 배우도록 하는 방법이다.
기학습된 모델을 직접 사용하지 않고 가벼운 모델을 만들고자 할 때 사용한다.
(Teacher-student learning)

모델 압축 (큰 모델이 아는 것을 따라하기) 과 수도 레이블링 (레이블이 없는 데이터의 레이블 만들기) 을 위해 사용한다.

Teacher-student network structure

레이블이 없는 데이터의 경우

티쳐와 스튜던트의 아웃풋을 KL 발산 (divergence) 로스로 만들어 학습한다.
스튜던트는 티쳐의 결과를 따라하게 된다.

레이블이 있는 데이터의 경우

Distillation Loss (KL 발산) 는 레이블이 없을 때와 동일하게 스튜던트가 티쳐를 잘 따라하도록 만드는데 사용된다.
Student Loss (Cross-entropy) 는 Student 가 본연의 태스크를 잘 수행하도록 만드는데 사용된다.

여기서 Soft 레이블은 softmax 처럼 전체가 1 을 이루는 벡터를 말한다.
반대로 Hard 레이블은 원-핫 벡터로 하나의 피쳐만 1 인 벡터를 말한다.

Distilation Loss 를 만들 때 Student 에서 Soft prediction 을 하는 이유는 티쳐의 분포를 그대로 따라가기 위해서다.

Student Loss 를 만들 때 Hard prediction (위 사진에서는 soft 이지만, 사실 저기에 t=1 로 주어 hard 라고 봐도 된다) 을 하는 이유는 분류 태스크를 수행하기 위해서다.

Softmax with temperature (T)

Softmax 의 Temperature 를 어떻게 주냐에 따라 Hard Prediction 과 Soft Prediction 이 구해진다.

T 가 작으면 softmax 가 더 극단적으로 되어 값들이 많이 벌려지고 (0 과 1 에 가까운 값들이 나옴), t 가 크면 값들의 차이가 적어진다 (중간에 가까운 값들이 나옴).

지식을 표현하는데 있어서는 분포가 몇몇 값만 극단적으로 크지 않고 골고루 크게 만드는 Soft prediction 이 적절하다.

의미 있는 정보가 아닌 모형을 따라하는 것

Distillation Loss 로 Student 가 Teacher 의 Soft label 에 대해 따라하고자 할 때, Soft label 의 의미를 알고자 하는게 아니라 단순히 모형을 따라하려는 것임을 기억하자.

최종 웨이트

최종적으로는 Distillation Loss 와 Student Loss 를 가중합하여 사용한다.


Leveraging Unlabeled Dataset for Training

Semi-supervised learning

위에서 말했듯 많은 데이터가 있다 하더라도 이들에게 레이블을 다는 일은 쉽지 않다. 따라서 레이블이 있는 데이터는 매우 드물다.

Semi-supervised learning 은 레이블이 없는 데이터 다수와 레이블이 있는 데이터 소량으로 좋은 성과를 내는 방법이다.

구체적인 방법은 아래의 Self-training 에서 설명하겠다.

Self-training (Google, 2020)

Self-training 은 Augmentation + Teacher-Student Networks + Semi-supervised learning 세 방법을 적용하여 매우 뛰어난 성능을 보여준 모델이다.

Teacher 모델 (Teacher-student) 은 데이터를 라벨링하는 법을 배워서 많은 언레이블 데이터를 분류 (Semi-supervised) 한다. 이 데이터와 기존 데이터를 합치고 RandAugment (Noizy) 하여 Student 모델이 학습한다.
그리고 다시 Student 모델이 Teacher 모델이 되어 언레이블 데이터에 대해 분류하고 새로운 Student 모델을 학습하는 과정을 반복 (Semi-supervised) 한다.

Knowledge Distillation 은 Student 모델을 작게 만들었다면, Self-training 은 Student 모델의 크기가 Teacher 모델보다 크게 만든다. (레이블이 없는 많은 데이터를 학습시키는 것이 목적이기 때문이다.)


참조

  • BoostCamp AI Tech
profile
데이터로 문제를 해결하는 엔지니어를 꿈꿉니다.

0개의 댓글