* 딥러닝 파이토치 교과서 내용(ch5.3)을 바탕으로, 추가로 찾은 내용들을 포함하여 개념 위주로 간단히 정리했습니다.
전이학습(transfer learning)이란?
전이학습이란, 아주 큰 dataet을 이용하여 훈련된 모델을 가져와 우리가 해결하려는 문제에 보정하여 사용하는 것을 의미한다. 즉, 사전 학습된 모델(pre-trained model)을 이용한다는 것을 의미한다.
Example) ImageNet
즉, 비교적으로 적은 수의 데이터를 가지고 있어도 이미 학습된 모델을 활용하면 주어진 문제를 더 잘 해결할 수 있을 것이다. 전이 학습은 보통, 이미지 관련 문제에서 많이 활용하게 된다.
어떻게 활용할 것인가? - 특성 추출 기법
우선 CNN의 구조를 다시 간단하게 생각해보면
입력 데이터 -> 합성곱 층 -> 완전 연결층 -> 출력
모든 층을 그대로 활용할수는 없고, 전체 모델을 다시 학습시킨다면 새로 모델을 만드는 것과 큰 차이가 없다.
따라서, 남은 선택지들을 보면 다음과 같다.
- 합성곱 층의 가중치는 모두 그대로 두고, 분류기 부분만 재학습하기
- 합성곱 층의 가중치도 일부는 재학습하기
가중치의 일부를 재학습 한다는 의미는, 문제의 해결 과정에서 세부적인 학습 과정은 데이터셋에 맞게 다시 구성할 수 있음을 의미하게 된다.
미세 조정 기법, fine-tuning
여기서 더 나아가, 사전 훈련된 모델과 합성곱층, 분류기의 가중치를 업데이트하는 방식도 고려할 수 있다.
특성 추출 기법에서 특성이 잘못 추출될 수도 있다. 그 경우, 미세 조정 기법을 통해 새로운 데이터를 활용하여 가중치를 업데이트 하게 된다.
데이터셋의 크기와 사전 훈련된 모델과의 유사성에 따라 다음과 같은 전략을 세울 수 있다.
사전 훈련된 모델과의 유사성 | |||
유사성이 높다 | 유사성이 낮다 | ||
데이터셋의 크기 | 크다 | 합성곱층 뒷 부분 분류기 재학습 |
모델 전체 재학습 |
작다 | 분류기만 재학습 (과적합 방지를 위함) |
합성곱층 뒷 부분 분류기 재학습 |
파라미터에 큰 변화를 주게 되면, 과적합 문제가 발생하여 정교하고 미세한 파라미터 업데이트가 필요.
'ML & DL' 카테고리의 다른 글
(극복Proj-2) RNN 구현 이해하기 (0) | 2021.12.24 |
---|---|
(극복Proj-1)[Pytorch] DataLoader란? (0) | 2021.12.23 |
[DL] 순환 신경망 RNN과 장단기메모리 LSTM 개요 (0) | 2021.08.21 |
[DL] 컨볼루션 신경망, CNN 이해하기 (0) | 2021.06.24 |
[DL] Pytorch로 Layer 만들기 (0) | 2021.06.23 |