모두야

Transfer Learning (전이학습) 본문

study/머신러닝 개념

Transfer Learning (전이학습)

미미밍2 2021. 3. 8. 10:37
반응형

 EECS Lec11-p50

전이학습 이란 ? 

Transfer learning (TL) is a research problem in machine learning (ML) that focuses on storing knowledge gained while solving one problem and applying it to a different but related problem.    [wikipedia]

머신러닝(기계학습) 에서 사용되는 방법으로, 이전에 훈련된 지식을 기반으로 비슷한 문제를 해결할 때 적용시킬 수 있다.
- 학습 데이터가 부족할 때, 데이터가 풍부한 상태로 사전학습 된 모델을 이용하여 새로운 데이터 학습에 적용시킨다.

강아지, 고양이 이미지를 분류하는 CNN 모델 을 만들려고 한다. 이때, 좋은 성능의 CNN 분류기를 갖기 위해서는 많은 양의 데이터가 필요하다. 수 많은 강아지, 고양이 이미지들을 모아서 모델을 훈련 시키고, 최적화된 모델의 가중치(weights) 값을 얻게 된다. 

강아지,고양이 분류 모델의 최적화된 가중치를 가지고 말, 소를 분류하는 모델 에 활용해볼 수 있을 듯 하다.


CNN 기반 모델의 구조

- Convolutional base : 합성곱층과 풀링층이 여러겹 쌓여있는 부분이다. 이미지로부터 특징을 추출한다. (feature extraction)

                           : input 낮은 레벨의 계층 (일반적인 특징) , output 높은 레벨의 계층 (구체적이고 특유한 특징) 

- Classifier : 완전 연결 계층(fully connectd layer) 

                  : 추출된 특징을 학습해서 이미지를 알맞은 카테고리로 분류한다.  (image classification)

 EECS Lec11-p52

Transfer Leaning 과정 - Linear Classifier

이미 대량의 데이터로 학습된 Imagenet 을 이용하여 원하는 작은 양의 데이터 분류에 활용한다. 

1) 마지막 층 FC-1000 삭제 
: 최종 Feature과 class scores간의 연결을 초기화 
: FC-4096까지는 Classifier 하기 위한 특징들을 가지고 있다.
: FC-1000은 1000개의 카테고리로 나눈다. 분류 전 높은 레벨의 최종 Feature 이 있다. 

2) 원하는 새로운 데이터에 적용한다. 
: 기존 모델의 나머지 layers의 가중치는 고정
: 4가지의 클래스로 분류하고 싶다면 (4096 x 1000)차원의 행렬을  (4096 x 4) 행렬로 바꿔준다.
: 마지막 레이어만 가지고 데이터 학습 시킨다.

 

 EECS Lec11-p53-57

 

여러 분야, 기존 방법 보다 모두 성능이 최고였다.

Alexnet의 학습된 모델의 마지막 단을 지우고, logiscit regression 을 붙이니 성능이 더 좋아졌다.


Fine-Tuning 이란 ? 

 

데이터 양이 많다면 Fine-Tuning 을 이용한다.

: 네트워크의 더 많은 부분을 학습 시킬 수 있다.

 

- feature extraction

: 먼저 특징만 추출하여 살펴보고, 새로운 데이터에 활용

- learning rate 줄인다.

: 기존 가중치들이 ImageNet으로 이미 학습이 잘 되어있기 때문

- freeze lower 

: 이전 레이어 고정

 

 

 

 

더 많은 부분은 어느 정도 ?

 

1) 전체 모델을 새로 학습 시키기

: 사전 학습 모델의 구조만 사용한다. 내 데이터셋에 맞게 전부 새로 학습 시키는 방법으로 큰 사이즈의 데이터셋이 필요하다.

 

2) Convolutional base의 일부분은 고정시킨 상태로, 나머지 계층과 classifier를 새로 학습시키기

: 레벨의 계층에 따라 이미지의 특징 추출이 달라진다. 이를 이용하여 재학습 시킬 적절한 계층의 크기 결정한다.

: 데이터 셋이 작고, 모델의 파라미터가 많다면 오버피팅 되기 쉽다 = 많은 계층 건들지 않기

: 데이터 셋이 크고, 모델의 파라미터가 적다면 오버피팅 걱정 없음 = 많은 계층 학습 

 

3) Convloutional base는 고정시키고, classifier만 새로 학습시키기

: 데이터셋이 너무 작거나 컴퓨터 연산 능력 부족, 사전 학습 모델과 데이터셋이 매우 비슷할때 사용한다.

 

 

 

 

 EECS Lec11-p60-62

Fine Tuning을 적용 했을 때, 성능이 더 좋고 발전됨을 볼 수 있다.


어떤 기준으로 선정할 수 있을까?

ImageNet 과 유사한 데이터셋

1) 데이터가 작을 경우

: 기존 모델의 마지막 레이어만 학습하는 Linear Classifier 사용

2) 데이터가 클 경우

: 모델 전체를 Fine-tuning 

 

ImageNet 과 다른 데이터셋

1) 데이터가 작을 경우

: 어렵다

2) 데이터가 클 경우

: 더 많은 레이어를 Fine-tuning

 


Transfer learning은 표준이 되었다.

사전 학습 된 ImageNet 을 이용하고, 각자의 문제에 맞게 Fine-tuning 한다.

오른쪽 그림의 Image Captioning의 경우 사전 학습된 word2vec 을 이용하여 word vectors를 사용한다. 

 

 EECS Lec11-p69
 EECS Lec11-p71-73

필수는 아니지만 권장한다.

사전 학습된 데이터를 이용하지 않아도 학습은 가능하다. 3배 정도 느릴 뿐

Pretrain + fine-tuning 을 권장한다. 더 효율적일 수 있다.

하지만 어느정도 데이터양이 많은 경우 굳이 하지 않아도 모델을 만들어 낼 수 있다. 


출처 

youtu.be/WUazOtlti0g

jeinalog.tistory.com/13

lsjsj92.tistory.com/405

insightcampus.co.kr/insightcommunity/?mod=document&uid=12802

반응형

'study > 머신러닝 개념' 카테고리의 다른 글

경사 하강법(Gradient Descent)  (0) 2023.02.08