본문 바로가기
1️⃣ AI•DS/📒 Deep learning

[인공지능] Meta learning , Transfer learning

by isdawell 2022. 6. 14.
728x90

 

Summary 


 

✨ Meta learning 

 

◾ Few-shot learning 

 

 

✨ Transfer learning : knowledge 를 전달

 

◾ Fine-Tuning →  dataset 이 부족한 경우 

◾ Knowledge distillation →  모델 경량화를 하고자 하는 경우 

◾ Domain adaptation →  같은 도메인에 있지만, 학생 도메인의 데이터셋이 부족한/레이블이 없는 경우 

◾ Inductive/unsupervised →  다른 task 를 수행하기 위해 

 

 

 

 

 

 

 

1️⃣  Meta learning 


①  Meta learning 

 

 

기계가 아는지 모르는지 구분이 가능하다.

 

 

🔘 learning to learn 

 

◾ 메타학습은 여러가지 task 에 대해서 일반화될 수 있는 모델을 학습하는 것을 목표로 한다

◾ 메타학습된 모델은 보지 못했던 task 에 대해서도 빠르게 학습이 가능하다. 

 

 

🔘 메타학습이 필요한 이유

 

1. a few samples in a dataset : 실제 세계에서는 데이터셋의 샘플이 몇가지 없다. 그러나 딥러닝은 많은 수의 데이터로 학습을 진행한다. 메타 학습은 적은 데이터 수만을 가지고도 일반화 학습이 가능하다. 

 

2. don't have enough computation power : 대기업과 같이 하드웨어 소스가 지원되는 상황이 아닌 이상은, 학습에 있어 충분한 연산능력을 갖출 수 없는데, 메타학습의 경우엔 훈련을 하는데 하드웨어적인 리소스가 많이 필요하지 않다.

 

 

 

🔘 메타인지

 

 

◾ 아이가 처음 보는 동물에 대해 어떠한 것인지 알게되는 과정처럼, 보지 못한 input (query)에 대해서도 적은 수의 데이터만을 가지고 학습을 진행할 수 있게 된다. 

 

 

 

 

 

② Few-Shot learning 

 

🔘 Few shot learning 

 

◾ few-shot learning 은 메타학습의 한 종류이다.

적은 수의 샘플을 가지고 가장 좋은 답변을 찾을 수 있도록 하는 것

 

 

◾  전통적인 딥러닝 방법에서는 이렇게 적은 수의 데이터로 학습이 불가능하다. 

 

 

 

🔘 Few shot learning  VS  Supervised learning 

 

 

💨 전통적인 지도학습 

 

  • Test samples are never seen before 👉 test sample 은 training 과정에서 보지 못했던 샘플에 해당
  • Test samples are from known classes 👉 class에 속하는 sample 에 해당한다. 이미 훈련을 통해 학습된 class

 

 

 

💨 Few-shot learning 

 

  • Query samples are never seen before
  • Query samples are from unknown classes

👉 few-shot learning 에서 query sample 이 들어오는데, 이때의 샘플은 훈련과정에서 보지 못한 샘플이기도 하나, 훈련하지 않은 class 에 해당하는 sample 이기도 하다

 

 

 

 

 

 

🔘 Few shot learning  : Support Set

 

◾ Training Set : Learn to learn

 

→ few-shot learning 에서는 각 그림을 특정 class 로 구분하는 것 보다는 서로 다른 이미지 클래스라는 사실 자체를 학습한다 = 아는 것과 모르는 것을 학습

 

◾ Query image 

 

◾ Support set 

 

 

 

💨 Query sample 로 주어진 이미지의 정답을 Training set 에서 찾을 수 없다는 것을 알고 Support set 에서 유사한 이미지를 찾아 토끼라고 결론을 내리는 학습을 진행

 

 

◾ k-way n-shot Support Set 

 

  • k݇-way: the support set has ݇ k classes
  • n-shot : every class in the support set has ݊n samples : 클래스마다 n 개의 sample 이 존재함
  • k와 n에 따라 prediction accuracy 가 많이 달라진다. 

 

 

 

 

 

🔘 Prediction Accuracy

 

 

◾ way 수가 증가할수록 정확도가 낮아진다 👉 6개보단 3개 이미지 중에서 비교하는 것이 더 쉽다. 

 

 

 

◾ shot수가 증가할수록 정확도가 높아진다

 

 

 

 

💡  Basic Idea

 

💨 Learn a similarity function : sim(x,x')

 

 

💨 A similarity function can be obtained by learning from large-scale training dataset

 

 

💨 apply the similarity function for prediction

 

  • query 를 support set 에 있는 모든 sample 과 비교한다 
  • sample 과 가장 높은 유사도 점수를 갖는 class 를 찾는다. 

 

실제로 이런 방법론을 구현하기 위한 시도가 현재 활발히 연구되는 중

 

 

 

 

 

 

2️⃣ Transfer learning 


①  Transfer learning

 

 

source task 로부터 지식을 추출해서 그 지식을 target task 에 전달을 해주는 것

 

 

🔘 전이학습이 필요한 이유 

 

데이터셋이 부족하기 때문이다.

◾ 딥러닝은 학습을 위해 레이블된 큰 사이즈의 데이터셋이 필요하지만, 새로운 task 에서 그러한 데이터셋 형태가 항상 존재하는 것은 아니다. 따라서 large labeled dataset 으로부터 학습한 knowledge 를 새로운 task 에 사용할 수 있도록 전달하는 방식을 선택한다. 

 

 

 

 

🔘 정의 

 

 

💨 Domain

 

  • D = { X , P(X) } 
  • X : feature space 
  • P(X) : marginal distribution over the feature space

 

💨 task 

 

  • ͳ = { y , P(Y|X) } 
  • y : label space 
  • P(Y|X) : conditional distribution 주어진 feature 에 대해 어떤 class 에 속할 확률 

 

💨 source, target

 

  • Ds : source domain, Dt : target domain
  • ͳs : source task, ͳt : target task

 

⭐ Transfer learning aims to improve the learning of the target predictive function f(•) using the knowledge in Ds and ͳs, where Ds ≠ Dt or  ͳs ≠ ͳt

 

전이학습의 목표는 source 도메인과 task 의 지식을 사용하여 목표예측 함수를 개선시키는 것이다.

 

 

🔘 Different settings

 

 

 

👉 Ds ≠ Dt or  ͳs ≠ ͳt  4가지 경우에 따라 다양한 전이학습 형태가 발생 

 

◾ Fine-tuning, Knowledge Distillation, Domain adaptation, Inductive/Unsupervised transfer learning

 

 

 

② Fine-Tuning 

 

👀 "same architecture" model, different task, different domain 

 

⭐ 사전훈련된 모델의 학습된 가중치를 같은 구조를 지닌 task 로 전달해줌

 

 

🔘 Pre-trained model

 

◾ large dataset 으로 pre-trained 된 source model 은 일반화된 모델이며 따라서 좋은 feature extractor 혹은 parameter initialization 을 가지고 있다. 

 

오버피팅을 방지하기 위해 fine tuning 을 진행할 때 Conv layer 의 가중치는 고정 freeze 시킨다. 

 

◾ Transfer to different domains and tasks with same architectures

 

 

👉 pre-train 과정을 통해 이미지로부터 얼굴의 특징점들을 어떻게 추출하는지 학습했기 때문에 배운 것을 토대로 fine-tuning 과정을 거쳐 얼굴인식 task 를 비교적 쉽게 수행할 수 있다.

 

 

🔘 구조 

 

fine tuning 과정 도식화

 

👉 pre-trained 를 통해 얻은 feature 나 파라미터가 다른 task 에도 유용할 것 useful 이라는 가정을 통해서 fine-tuning 이 이루어짐

 

 

 

③ Knowledge Distillation 

 

👀 same task, same domain 

 

 

 

🔘 target model 이 source model 을 흉내내도록 만드는 것

 

◾ feature 나 output 을 비슷하게 만들도록 함

◾ target 과 domain 이 같기 때문에 source model 의 지식이 매우 유용하다. 

 

 

 

🔘 Knowledge Distillation 을 사용하는 이유

 

 model compression 모델 경량화 : 일반적으로 target model 은 좀 더 작은 크기의 model 로 만듦 → 작은 크기의 모델로도 인공지능을 수행할 수 있게 함

 

◾ 모델의 크기는 작지만 전이없이 처음부터 학습을 진행하는 scratch learning 보단 성능이 좋다. 

 

 

🔘 구조 

 

 

◾ knowledge 를 teacher network 에서 student network 로 전달하는 방식으로 student network 의 성능을 높인다. 

 

◾ output 을 똑같게 만들도록 모델을 학습시킨다. 

 

◾ 기존 손실함수에서 source 와 target output 이 비슷해지는 방향을 가진 손실함수 부분을 추가한다.

 

 

 

 

④ Domain Adaptation

 

👀 same task, different domain 

 

👉 task 는 숫자 이미지를 분류하는 것으로 동일하지만, 가지고 있는 이미지 데이터 형태가 다르다. 

 

 

🔘 정의 

 

◾ task 가 같으므로 두 domain 에 대해 모두 일반화할 수 있는 (invariant) feature 를 학습해서 target model 이 잘 동작 하도록 할 수 있게 함

 

◾ 보통 target domain dataset 에 label 이 존재하지 않는 경우에 수행하는 방법이다 

 

  • domain invariant feature 를 학습하여 source model representation이 target domain 에서 사용될 수 있게함

 

 

🔘 Domain adaptation  

 

◾ source 와 target domain 을 모두 수용할 수 있는 표현방식을 학습 

◾ source domain 과 유사한 target representation 을 학습

 

 

 

⑤ Inductive/Unsupervised 

 

◾ Different tasks: different labels to predict

◾ task 가 다른 경우의 전이학습은 feature extractor 와 output layer 가 새로운 task 에 맞도록 조정되어야 함

Multi-task learning / fine-tuning are used to learn appropriate representations for target tasks from the source model's representations

 

 

 

🔘 Inductive learning 

 

👀 different task, same domain 

 

 

 

 

🔘 Unsupervised learning 

 

👀 different task, different domain 

 

 

 

 

 

 

 

728x90

댓글