빅데이터 & 인공지능

인공지능 전이학습

헬로월드! 2020. 12. 1. 23:30

지도학습은 학습데이터(Training data) 와 검증데이터(validation data) 그리고 테스트데이터(test data) 로 구성되어 있다. 

학습데이터를 통해 특징을 추출하고 model을 만들고 검증데이터로 모델이 잘 만들어졌는지 확인할 수 있다. 그리고 최종적으로 이 모델이 잘 만들어진 모델인지 테스트 데이터를 통해 그결과를 확인할 수 있다.

이때, 뉴스데이터를 예로 들자면 뉴스의 카테고리(정치,문화,경제 등등..) 가 없는 뉴스기사를 데이터로 이용하고 이를 분류한다면 예측률이 매우 안 좋다. 반면 카테고리가 있는 뉴스기사를 데이터로 이용한다면 예측률이 좋다. 

이 둘(카테고리가 있는 뉴스+ 카테고리가 없는 뉴스 데이터) 을 섞으면? 더 좋다!  

그렇다면 이때 카테고리가 있는 뉴스와 없는 뉴스 한 모델에서 학습시킬 수 있을까? 그건 불가능하기 때문에 나온 개념이 전이학습이다.

 

전이학습은 다른 데이터로부터 학습된 내용을 가져오는 것이다. 처음부터 학습을 다시하는 것은 시간낭비기 때문에!! 

소규모의 데이터를 사용해 모델학습에서 학습데이터가 부족할 경우, 학습 속도를 개선하고 싶을 경우 '전이학습'을 하면 좋다. 이미 학습된 모델을 가져와서 사용하여 해당 모델과 비슷한 문제를 해결할 때 전이학습이 도움이 된다.

 

전이학습을 이용하려면? tf.keras.applications 에서 사전에 훈련된 가중치와 신경망 구조를 제공한다. 또는 텐서플로 허브를 이용하는 방법도 있다.

 

모델의 일부를 재학습 시키는 방식(전이학습 방식) 은 크게 세가지로 나눌 수 있다.

  • 전체 모델을 새로 학습: 사전학습 모델의 구조만 이용하고, 내가 가지고 있는 데이터셋에 맞게 전부 새로 학습시키는 방법이다.
  • Convolutional base 의 일부분은 고정시키고, 나머지 계층과 classifier 를 새로 학습시킨다. 
  • Convolution base는 고정시키고 , classifier만 새로 학습시킨다. (데이터 셋이 너무 작을 때, 내가 풀고자 하는 문제가 전에 사용한 모델과 비슷한 경우)