Transfer Learning(전이 학습)
: 이미 학습된 Neural Networks의 파라미터를 새로운 Task에 맞게 다시 미세조정(Fine-Tuning)하는 것
몇몇 사전 학습 모델들은 큰 사이즈의 합성곱 신경망(CNN) 구조를 가지고 있다.
CNN은 크게 두 가지 파트로 나뉜다.
1. Convolutional base
: Convolutional 층과 Pooling 층이 여러겹 쌓여있는 부분.
이 부분의 목표는 이미지로부터 특징을 효과적으로 추출하는 것이다.
2. Classifier
: 주로 완전 연결 계층(모든 계층의 뉴런이 이전 층의 출력노드와 하나도 빠짐없이 모두 연결되어 있는 층)으로 이루어짐.
이 부분의 목표는 추출된 측징을 잘 학습해서 이미지를 알맞는 카테고리로 분류하는 것이다.
→ Convolutional base부분에서 낮은 레벨의 계층(input에 가까운 계층)일수록 일반적인 특징을 추출할 것이고, 높은 레벨의 계층(output과 가까운 계층)과 Classifier 부분은 보다 구체적이고 특유한 특징들을 추출한다.
<Fine-Tuning의 세 가지 전략>
① 전체 모델을 새로 학습
- 사전학습 모델의 구조만 사용, 나머지는 전부 새로 학습시키기
따라서 큰 사이즈의 데이터셋이 필요
② Convolutional base의 일부분은 고정시킨 상태로, 나머지 계층과 classifier를 새로 학습
- Convolutional의 낮은 레벨의 계층 혹은 높은 레벨의 계층은 각각 특징이 달랐다.
따라서 이런 파라미터 중 어느 정도까지 재학습시킬지를 정해야 한다.
ex) 데이터셋이 작고 모델의 파라미터가 많다면, 오버피팅이 될 위험이 있으므로 더 많은 계층을 건들지 않고 그대로 둠
데이터셋이 크고 모델의 파라미터가 적다면 더 많은 계층을 학습시켜서 진행하고자 하는 프로젝트에 맞게 학습시킴
③ Convolutional base 전체는 고정, classifier만 새로 학습
- 컴퓨팅 연산 능력이 부족하거나 데이터셋이 너무 작을때,
진행하고자 하는 문제가 사전학습모델이 이미 학습한 데이서셋과 매우 비슷할 때 고려할 수 있는 방법
'Study > Deep Learning' 카테고리의 다른 글
순환신경망(RNN) (0) | 2021.10.19 |
---|---|
Pre-Trained CNN 모델을 이용한 Image Classification (0) | 2021.10.18 |
TensorBoard 이용하기 (0) | 2021.10.18 |
tf.train.CheckpointManager API (0) | 2021.10.18 |
드롭아웃(Dropout) (0) | 2021.10.17 |