NeuroWhAI의 잡블로그

전이 학습(사전 훈련된 네트워크 사용) 지침 정리 본문

개발 및 공부

전이 학습(사전 훈련된 네트워크 사용) 지침 정리

NeuroWhAI 2020. 2. 24. 21:22


※ "케라스 창시자에게 배우는 딥러닝" 책 일부 내용을 정리함.

 

사전 훈련된 네트워크(Pretrained Network)를 사용하는 기법엔 두가지가 있다.

특성 추출(Feature Extraction), 미세 조정(Fine Tuning)이다.

 

특성 추출도 여러 방법으로 진행할 수 있다.

먼저 사전 훈련된 네트워크에 샘플 데이터를 넣어 말 그대로 특성을 추출하여 나온 결과값(예측값)을 새로 만들 모델의 입력으로 사용하는 방법이 있다.

이 방법은 데이터 증식을 사용할 수 없고 미세 조정이 힘들다는 문제가 있다.

다른 방법은 새로 만들 모델에 사전 훈련된 네트워크를 포함하여 학습을 진행하는 것이다.

이 방법은 데이터 증식을 사용할 수 있지만 모델이 무거워진다는 단점이 있다.

 

첫번째 방법은 쉽다.

사전 훈련된 네트워크와 학습 데이터를 준비한 후 입력 데이터를 네트워크에 넣어 얻은 결과값을 라벨과 함께 저장해둔다.

이것을 입력으로 하는 새 모델을 만들고 학습을 시킨다.

끝.

 

두번째 방법은 아래와 같다.

사전 훈련된 네트워크에 새 네트워크를 이어 모델을 만든다.

기반 네트워크(사전 훈련된 네트워크) 부분을 동결(Freezing)하여 학습되지 않도록 한다.

데이터 증식이 필요하면 함께 써서 모델을 학습시킨다.

그리고 여기서 다음의 방법으로 미세조정을 한다.

기반 네트워크의 일부 부분(상황에 따라 적절히 선택. 많은 부분을 하지는 말 것.)의 동결을 풀고 이어서 학습시킨다.

끝.

 

처음부터 기반 네트워크의 일부분을 동결 해제하고 학습을 시키지 않는 이유는 여기에 이어 붙힌 네트워크는 랜덤하게 초기화되어 있으므로 학습시 큰 오차가 전파되고 이것이 기반 네트워크의 기존 학습된 부분을 망칠 수 있기 때문이라고 합니다.

말 그대로 미세하게 하나씩 차근히 조정하는 것이네요.



Comments