💻 개인공부 💻/머신러닝, 딥러닝

[ 딥러닝 알아가기 ] Transfer Learning과 Fine Tuning

공대생 배기웅 2021. 8. 8. 19:35
반응형

Transfer Learning (전이학습)

성능이 좋은 딥러닝 모델을 만드는 최고의 방법은 바로 많은 수의 데이터를 확보하는 것이다. 하지만 데이터의 수가 많지 않거나 데이터를 확보하는데 많은 비용이 드는 경우가 존재할 수 있다.

 

이를 해결하기 위해 Transfer Learning(전이학습)을 이용한다. 전이학습이란, 특정 분야에서 학습된 신경망의 일부 능력을 유사하거나 전혀 새로운 분야에서 사용되는 신경망의 학습에 이용하는 방법이다. 전이학습은 학습 데이터의 수가 적을 때 효과적이며, 전이학습 없이 학습할 때보다 훨씬 높은 정확도와 더 빠른 학습 속도를 제공한다.

 

전이학습에서 이용되는 학습된 신경망pretrained model이라고 부르며 대표적으로 ImageNet, ResNet, gooGleNet, VGGNet등이 있다. 대규모의 데이터셋으로 잘 훈련된 이 pretrained model들을 가지고 와 사용자가 적용하려고 하는 문제 상황(데이터셋의 규모, pretrained model 데이터셋과 문제상황에서 사용되는 데이터셋과의 연관성 등)에 맞게 모델의 가중치를 약간씩 변화하여 사용한다. 따라서, 실제로 CNN을 이용하는 경우에 처음부터 가중치를 초기화하는 것 보단 pretrained model을 이용하여 어느 정도 합당한 값을 가진 가중치를 이용한다.

 

사전 학습된 모델을 재정의했다면, pretrained model의 classifier는 삭제하고, 목적에 맞는 새로운 classifier를 추가한다. 이렇게 새롭게 만들어진 모델을 다음 세 가지 전략 중 한 가지 방법을 이용해 Fine Tuning(파인튜닝)을 진행한다. Fine Tuning은 기존의 신경망을 이용한 재학습 과정을 의미한다.


Fine-tuning

Fine-tuning이란 기존에 학습되어져 있는 모델을 기반으로 아키텍쳐를 새로운 목적에 맞게 변형하고 이미 학습된 모델의 가중치를 미세하게 조정하여 학습시키는 방법을 말한다.

 

Fine-tuning을 진행할 때, 완전히 랜덤한 초기 파라미터를 사용하거나, 가장 아래쪽의 레이어의 파라미터를 학습하게 되면 Overfitting(과적합)이 발생하거나 전체 파라미터가 망가질 수 있으니 주의해야 한다.

 

 

- Fine Tuning 3가지 방법

전략 1 전략 2 전략 3
모델 전체를 새로 학습 Conv base은 일부분 고정(Freezing)
나머지 Conv Base 계층과 Classifier를 새로 학습
Conv Base는 고정(Freezing)
Classifier만 새로 학습
사전 학습 모델의 구조만 사용하면서, 자신의 데이터셋에 맞게 모델을 전부
새롭게 학습시키는 방법.

Conv Base는 합성곱 층과 풀링 층이
여러 겹 쌓여있는 부분으로, 측징을
추출하는 부분이다.

Classifier는 주로 완전연결계층으로 이루어져 있으며, Conv base가 데이터셋에서 추출한 특징들을 잘 학습하여 각각의 이미지 샘플들을 알맞은 class로
분류(image classification)하는 부분
이다.

낮은 레벨의 계층은 일반적이고 독립적인 특징(신형성)을 추출하고, 높은 라벨의 계층은 보다 구체적이고 명확한 특징(형상)을 추출한다.

이런 특성을 고려하여 어느 정도까지 재학습시킬 것인지 정한다.


컴퓨팅 연산 능력이 부족하거나, 데이터 셋이 너무 작을 때, 혹은 적용하려는
task가 학습 모델이 pretrained model의 데이터셋과 매우 비슷할 때 사용한다.

 

 

 

위의 전략들을 바탕으로 어떤 상황에서 사용될 수 있는지를 소개한다.

 

상황1 : 크기가 크고 유사성이 작은 데이터셋일 때

이 경우에는 전략1(전체 모델을 새로 학습)을 이용한다. 데이터셋의 크기가 크므로, 모델을 다시 처음부터 내가 원하는대로 다시 학습시키는 것이 가능하다. 사전 학습 모델의 구조만 사용하고, 많은 데이터셋을 이용하여 모델을 학습시킨다.

 

상황 2: 크기가 크고 유사성도 높은 데이터셋일 때

이 경우에는 어떤 선택을 하던 상관이 없지만 전략2(Convolutional base은 일부분 고정, 나머지 계층과 Classifier를 새로 학습)이 효과적이다. 데이터셋이 크기 때문에 과적합 현상은 문제가 안되지만, 데이터의 유사도가 높기 때문에 pre-trained 모델이 이전에 학습한 지식을 활용하는 것이 효과적이다.

 

상황 3: 크기가 작고 유사성도 작은 데이터셋일 때

좋지 않은 상황이다. 이런 상황에서는 전략2(Convolutional base은 일부분 고정, 나머지 계층과 Classifier를 새로 학습)을 선택한다. 하지만 Convolutional base에서 몇 개의 층을 학습시키고 몇 개의 층을 freezing해야 하는지 알기가 어렵다. 너무 많은 계층을 학습시키면 과적합 현상이 발생할 수 있고, 너무 적은 계층만을 학습시키면 제대로 학습이 되지 않기 때문이다. 상황 2보다는 조금 더 깊은 계층까지 새로 학습을 시켜야 한다.

+) Data Augmentation도 하나의 방법이 될 수 있다.

 

상황 4: 크기는 작지만 유사성이 높은 데이터셋일 때

이런 경우에 전략 3을 선택한다. convolutional base 부분을 특징 추출기로써 사용하고, classifier부분만을 변경하여 학습시킨다.

 

 

출처 :

https://choice-life.tistory.com/40

https://bskyvision.com/698

https://blog.naver.com/PostView.nhn?blogId=flowerdances&logNo=221189533377&categoryNo=32&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView

https://jeinalog.tistory.com/13

728x90
반응형