티스토리 뷰

▶전이학습(Transfer Learning)

오늘은 전이학습(Transfer Learning)에 대해서 알아보려고 합니다 :)

1. 등장하게 된 이유

  • 근래에 개발된 CNN 모델들을 설명하면서 ImageNet 데이터셋을 기반으로 하는 대회들이 있는데 이 대회들을 통해 다양한 네트워크 모델들이 개발되었음
  • 이때 사용된 데이터셋(ILSVRC 2012 기준)
    • 1,000개의 classes, 125만개의 이미지
    • 다 해서 겅의 150GB의 데이터
  • 이러한 이미지 데이터셋을 바탕으로 여러 CNN 모델들이 나온 것임

ImageNet

 

여기서 우리가 생각해 보아야 할 것

 

  • 우리가 직접 이런 이미지를 분류한다고 했을 때
    • 충분히 실행시킬 수 있는 하드웨어적인 성능을 뒷받침해줄 수 있는 환경이 되어있는가?
    • class에 포함되어 있지 않은 이미지가 주어졌을 때, 우리는 어떻게 이미지 분류를 할 것인가?
  • 만약 우리가 VGG16 과 같은 모델을 활용을 해서 할 수는 있겠지만
    • 만약에 이미지 데이터셋이 충분하지 못하면 학습을 하는 데에 어려움이 있을 수 있음

위 내용을 정리를 해서 전이학습이 등장하게 된 이유를 정리를 해 보면 아래와 같습니다.

ⓛ 충분히 학습할 수 있는 환경이 부족해서
② 새로운 이미지 데이터 세트를 분류하고 싶어서
→ 기존에 있는 네크워크 모델을 복사해서 사용해 보면 어떨까 생각해 볼 수 있음❗

그래서 나온 개념이 "Transfer learning"

 

간단한 전이학습 설명

 

  • 기존 ImageNet 데이터셋을 기반으로 학습된 VGG16 같은 모델에 feature들이 있다고 할 때
  • 이 feature들을 활용을 해서
  • 새로운 이미지 데이터셋이 있을 때
  • 모델을 활용해서 분류를 할 수 있지는 않을까❗

전이학습은 '한 분야의 문제를 해결하기 위해서 얻은 지식과 정보를 다른 문제를 푸는데 사용하는 방식'이다!

 

이게 어떻게 가능한건데..?

 

  • 네트워크가 다양한 이미지의 보편적인 특징 혹은 Feature들을 학습했기 때문
  • 일반적으로 네트워크가 깊어질수록 서로 다른 종류의 feature들을 학습
  • 낮은 layer에서 학습되는 feature : low-level feature
  • 깊은 layer에서 학습되는 feature: high-level feature
  • low-level feature의 예
    • 이미지의 색이나 경계(edge)
  • high-level feature의 예
    • 심화된 객체의 패턴이나 형태

  • 네트워크가 이러한 특징을 학습하기 위해서는 대량의 데이터셋이 필요
    • 가장 대표적으로 ImageNet ❗❗
728x90

2. Transfer Learning

Transfer learning

 

  • 학습된 데이터의 지식을 타겟으로하는 데이터셋에 전이를 해서 적용
  • 만약에 의자와 관련된 분류를 하고 싶다고 할 때
    • 하필 왜 의자..? 냐면 ImageNet 데이터셋에는 의자와 관련된 정보가 많이 없기 떄문에 예시를 들었습니다🙂
    • 그러면 의자와 관련된 그림이 주어졌을 때 의자라고 분류하기 힘들겠죠?
  • 기존 ImageNet 데이터셋을 기반으로 한 모던한 CNN 모델을 가지고 활용하게 되면 바로 문제 해결 가능
    • 기존에 학습된 모델이 일반적인 이미지 feature들과 관련된 특징들을 충분히 파악하고 있음
    • 예를 들어 기존 이미지로 학습을 함으로써, edge나 texture, shape 이런 것을
      • pre-trained 모델이 가지고 있음!
  • 우리는 이러한 정보들과 새롭게 구성된 의자와 관련된 이미지 데이터셋을 같이 활용해서 학습을 하게 되면
  • 좀더 효율적이고 효과적일 수 있다는 발상!

 

+ pre-trained model ( 사전훈련 모델 )

  • 일반적으로 대규모 이미지 분류 작업에서 이전에 대규모 데이터 세트에 대해 훈련된 저장된 네트워크
  • 사전훈련된 모델을 그대로 사용하거나 전이 학습을 사용하여
  • 이 모델을 지정된 작업에 사용자 지정도 가능

Transfer learning

  • pre-trained 모델의 feature들은 그대로 활용하면서
  • 맨 마지막 분류를 하는 layer(FC layer)는 새로운 target 데이터셋에 맞게 변경🔥🔥
    • 새로 들어오는 데이터셋의 shape에 맞게 변경

 

전이학습을 하기 위한 4가지 STEP

 

  1. source 데이터셋으로부터 pre-trained된 네트워크 모델을 준비
  2. 이때 pre-trained 된 모델의 디자인이나 파리미터들은 가져오게 됨
  3. 우리가 원하는 model에 맞게 output layer를 수정
  4. 새로운 데이터셋을 바탕으로 해서 우리가 원하는 model을 학습

Fine-tuning 과 Fixed

 

  • 방금 위 전이학습을 위한 4가지 STEP에서 우리가 택할 수 있는 방법 2가지에 해당
  • Fine-tuning
    • pre-trained된 모델을 기반으로 새로운 목적에 맞게 변형
    • 이미 학습된 모델의 weight를 미세하게 조정하여 학습 진행
      • learing rate를 충분히 작게 해서 target 데이터세트에 맞게 조금씩만 학습하도록
      • output layer의 learing rate를 상대적으로 높게 해서 target 데이터 세트에 맞게 잘 분류될 수 있도록 설계
  • Fixed
    • pre-trained 된 모델로부터 도출된 weight를 그대로 활용

 

전이학습의 효과

 

  • Target data (=ImageNet에는 없는 이미지 classs지만 우리가 예측하고 싶은 이미지)
    • 5개의 class : Hat, Cube, Card, Torch, Screw

ImageNet에는 포함되지 않은 이미지

  • ImageNet으로 pre-trained된 VGG16으로 Target data를 적용했을 때의 결과 (전이학습 X)

 

  • 전이학습을 적용하고서 Target data를 적용했을 때 결과

 

728x90
LIST
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함