오늘의 인기 글
최근 글
최근 댓글
Today
Total
12-17 00:15
관리 메뉴

우노

[DL] Transfer Learning(전이학습)이란? 본문

AI/Deep Learning

[DL] Transfer Learning(전이학습)이란?

운호(Noah) 2021. 1. 27. 17:39

Transfer Learning 이란?

  • 기존의 만들어진 모델을 사용하여 새로운 모델을 만드는 것입니다.
  • 학습이 빨라지며, 예측도 높아집니다.

왜 사용할까?

  • 이미 학습된 모델을 사용해서 문제를 해결할 수 있습니다.
    • 실질적으로 Convolution network을 처음부터 학습시키는 일은 많지 않습니다.
  • 만들고자하는 모델이 복잡한 모델일수록 학습시키기 어렵습니다.
    • layers의 갯수, activation, hyper parameters등등 고려해야 할 사항들이 많습니다.
    • 모델 학습이 오래 걸릴 수도 있습니다.
  • 학습 데이터의 수가 적을때 효과적입니다.
    • 또한, 전이학습 없이 학습하는 것보다 학습 속도도 빠르며 훨씬 높은 정확도를 제공한다는 장점이 있습니다.
  • 즉, 이미 잘 훈련된 모델이 있고, 해당 모델과 유사한 문제를 해결시 transfer learining을 사용합니다.

Fine-tuning 이란?

  • 기존에 학습되어져 있는 모델을 기반으로, 아키텍쳐를 새로운 목적에 맞게 변형하고,
  • 이미 학습된 모델의 파라미터를 업데이트 하는 방법을 말합니다.
  • "Fine-tuning 했다" 라고 말하려면, 기존에 학습 된 layer에 데이터를 추가로 학습시켜, 파라미터를 업데이트 해야합니다.
  • 이 때 주의할 점은, 완전히 랜덤한 초기 파라미터를 쓴다거나, 가장 아래쪽의 레이어의 파라미터를 학습하게 되면 오버피팅이 일어나거나 전체 파라미터가 망가지는 문제가 생깁니다.

방법

  • 새로 훈련할 데이터가 적지만, original 데이터와 유사할 경우

    • 데이터의 양이 적어, 전체 네트워크를 fine-tuning 하는 것은 over-fitting의 위험이 있기에 하지 않습니다.
    • 새로 학습할 데이터는 original 데이터와 유사하기 때문에
    • 이 경우 최종 linear classfier layer만 학습합니다.
  • 새로 훈련할 데이터가 적으며, original 데이터와 다른 경우

    • 이 경우 데이터의 양이 적고, 데이터가 서로 다르기 때문에, 네트워크의 마지막부분만 학습하는 것은 좋지 않습니다.
    • 따라서, 네트워크 초기 부분 어딘가 activation 이후에 특정 layer를 학습시키는게 좋습니다.
  • 새로 훈련할 데이터가 많으며, original 데이터와 유사할 경우

    • 새로 학습할 데이터의 양이 많다는 것은, over-fitting의 위험이 낮다는 뜻이므로
    • 전체 layer를 fine-tuning을 하거나
    • 마지막 몇 개의 layer만 fine-tuning하거나
    • 마지막 몇 개의 layer를 날려버리는 방법이 있습니다.
  • 새로 훈련할 데이터가 많지만, original 데이터와와 다른 경우

    • 데이터가 많기 때문에, 아예 새로운 ConvNet을 만들수도 있지만,
    • 실적적으로 transfer learning의 효율이 더 좋습니다.
    • 따라서, 전체 네트워크를 fine-tuning 해도 됩니다.
Comments