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
🔘 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 를 비교적 쉽게 수행할 수 있다.
🔘 구조
👉 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
'1️⃣ AI•DS > 📒 Deep learning' 카테고리의 다른 글
[인공지능] 딥러닝 모델 경량화 (0) | 2022.06.21 |
---|---|
[인공지능] Federated Learning , Distributed Learning (0) | 2022.06.15 |
[인공지능] Reinforcement Learning (0) | 2022.06.14 |
[인공지능] GNN (0) | 2022.06.14 |
[인공지능] 추천시스템 (0) | 2022.06.13 |
댓글