transfer learning이란 무엇일까?

1. motivation

 

지금까지 보지 못한 새로운 인공지능을 만들어야한다고 할 때 데이터부터 준비해야할 것이다.

 

기본적으로 인공지능은 어마어마한 데이터가 필요한데 입력데이터만 단순히 모으는 것이 아니라 데이터의 label도 필요함

 

이런 것은 단기간에 모으기 쉽지 않고 비용도 많이 나오고

 

외주업체에 맡겨도 사람이 하는 일이라 원하는 형태의 데이터보다는 질이 낮은 데이터가 얻어짐

 

만약 원하는 task와 연관된 어떤 task에 대해 미리 학습한 모델을 이용할 수 있다면?

 

적은 데이터로도 좋은 성능을 낼 수 있지 않을까?

 

 

2. definition

 

기존에 미리 학습시켜놓은 사전 지식으로 연관된 새로운 task에 적은 노력으로 높은 성능에 도달하겠다는 것이 목적

 

쉽고 경제적이며 어느 정도의 성능도 보장한다

 

직관적으로 한 데이터 셋에서 배운 지식을 다른 데이터 셋에서도 활용하겠다는 것

 

3. 1번째 방법

 

10-dim classification에 대한 하나의 데이터 셋에 미리 학습시킨 모델을 준비한다.

 

이 모델의 Fully connected layer를 제거하고 원하는 task인 100-dim classification에 맞는 새로운 fully connected layer를 붙인다

 

기존 모델의 CNN은 weight를 고정시키고 새로 붙인 fully connected layer만 원하는 task에 대응하는 새로운 데이터 셋으로 학습시킨다

 

CNN의 weight는 fix하여 기존의 지식을 활용하여 새로 붙인 fully connected layer의 weight를 학습하겠다

 

새로운 layer만 학습하면 되니까 당연히 상대적으로 적은 데이터로 학습이 가능하다

 

새로운 fully connected layer의 weight만 학습해도 되니까 전체 parameter는 감소된다

 

 

 

4. 2번째 방법

 

첫번째와 마찬가지로 미리 학습한 모델을 준비

 

기존 fully connected layer를 제거하고 새로운 task에 대한 fully connected layer를 붙인다

 

첫번째 방법은 미리 학습한 CNN의 weight를 고정시켰는데 이번에는 매우 작은 learning rate로 학습을 진행한다

 

새로 붙인 fully connected layer는 높은 learning rate를 주어 새로운 task에 빠르게 적응할 수 있도록 한다

 

첫번째와는 다르게 두 layer를 모두 학습시키니 데이터는 더 필요할 수도 있다

 

그리고 CNN도 새로운 task에 어느정도 적응시키니까 첫번째 방법보다 성능은 더 좋을 수 있다

 

 

결론적으로 새로운 task에 대한 데이터가 상대적으로 적을때는 첫번째 방법이 적절하고

 

그래도 데이터가 조금은 더 있으면 두번째 방법이 적절하다

TAGS.

Comments