Transfer Learning(전이 학습)

: 이미 학습된 Neural Networks의 파라미터를 새로운 Task에 맞게 다시 미세조정(Fine-Tuning)하는 것

 

몇몇 사전 학습 모델들은 큰 사이즈의 합성곱 신경망(CNN) 구조를 가지고 있다.

CNN은 크게 두 가지 파트로 나뉜다.

이미지 출처 https://muzukphysics.tistory.com/entry/DL-8-Convolutional-Neural-Network-CNN-%EA%B5%AC%EC%A1%B0-%EB%B0%8F-%EB%8F%99%EC%9E%91-%EB%B0%A9%EC%8B%9D

1. Convolutional base

: Convolutional 층과 Pooling 층이 여러겹 쌓여있는 부분. 

  이 부분의 목표는 이미지로부터 특징을 효과적으로 추출하는 것이다.

 

2. Classifier

: 주로 완전 연결 계층(모든 계층의 뉴런이 이전 층의 출력노드와 하나도 빠짐없이 모두 연결되어 있는 층)으로 이루어짐.

  이 부분의 목표는 추출된 측징을 잘 학습해서 이미지를 알맞는 카테고리로 분류하는 것이다.

 

→ Convolutional base부분에서 낮은 레벨의 계층(input에 가까운 계층)일수록 일반적인 특징을 추출할 것이고, 높은 레벨의 계층(output과 가까운 계층)과 Classifier 부분은 보다 구체적이고 특유한 특징들을 추출한다.

 


<Fine-Tuning의 세 가지 전략>

이미지 출처 https://adioshun.gitbook.io/deep-learning/transfer-learning/transfer-learning

① 전체 모델을 새로 학습

-  사전학습 모델의 구조만 사용, 나머지는 전부 새로 학습시키기

   따라서 큰 사이즈의 데이터셋이 필요

 

② 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

+ Recent posts