![Few-Shot Learning 이해하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL1dup%2FbtsL1YPTXDn%2F9GIrKTAXSOYi2FjFd2KUL1%2Fimg.jpg)
회사에서 AI 관련 교육이 있어서 내용을 정리 해 두려고 합니다.
서울대학교 AI 교수님께서 Multi Modal과 관련된 내용을 하면서 나온 내용의 일부입니다.
가장 처음으로 학습한 내용이 바로 Few-Shot Learning 이었습니다.
Few-shot learning 의 필요성
일반적인 머신러닝 혹은 딥러닝의 경우 학습에 있어서 대량의 데이터가 필요합니다.
예를 들어, 고양이 사진을 분류하는 모델을 학습하려면 수천/수만개의 고양이와 고양이와 관련 없는 사진이 필요합니다.
하지만, 사람의 경우에는 이전의 지식을 통해서 다른 지식을 추가로 쉽게 학습합니다.
힌트가 몇개 없더라도 기존 지식과 차이를 통해서 다른 점을 인식하고 분류할 수 있습니다.
이런 원리에 입각하여 AI 모델에도 몇 개의 데이터로도 결과를 추론 할 수 있도록 하려는 것이죠.
또한, 실제로 데이터가 부족한 경우에도 의미가 있습니다.
희귀한 동물 (희귀 개미나 심해어) 등을 분류하고 싶은데, 사진이 많지 않은 경우 이런 Few-Shot learning이 필요합니다.
Few-Shot learning은 좀 쉬운 k-nearest 알고리즘을 써서도 상당히 괜찮은 성능이 나오는 경우가 많아서 학계의 연구와 비교를 위한 base line으로 많이 사용한다고 합니다.
Few-shot learning 의 중요한 특징
Few-Shot Learning을 위해서 학습 및 테스트를 위한 데이터의 분류가 필요합니다.
1. Training Set
- 모델이 학습하는데 (일반화 하는 능력을 학습) 사용하는 데이터입니다.
- 모델이 주어진 데이터와 그에 대응하는 정답(라벨)을 학습하여 패턴을 익히는 단계에 사용됩니다.
- Training Set은 다수의 Episode로 구성됩니다.
- 각 Episode는 다음 두 가지로 나뉩니다.
- Support Set : 모델이 학습을 하는 소량의 샘플
- Query Set : 모델이 예측을 수행하는 샘플.
A. Support Set
- N개의 클래스 각각에 대한 K개의 레이블이 지정된 Training Set이 있습니다.
- AI 모델은 이런 Support Set 샘플을 사용하여 각 클래스에 대한 일반화된 표현을 학습합니다.
- 예를 들면 아래와 같습니다.
4개의 클래스 (Squirrel, Rabbit, Hamster, Otter)와 2개의 Shot (실제 각 클래스에 대한 사진 Example을 의미)를 주어 해당 4개의 클래스에 대한 지식을 추가로 학습시키는 것이지요.
B. Query Set
- 각 N개의 클래스에 대해 하나 이상의 Example이 포함되어 있습니다.
- 모델은 Support Set에서 학습한 표현을 사용하여 Query Set의 각 예제에 대한 분류를 예측합니다.
Few-Shot Learning은 Meta-Learning의 일종인데 Meta-Learning의 목표는 특정 데이터 클래스를 인식하는 것이 아닌 보이지 않는 데이터를 잘 인반화 하도록 모델을 학습하는 것이므로, Training 작업에서는 일반적으로 이전의 Training 작업에 사용된 데이터 클래스와 다른 데이터 클래스가 포함됩니다.
2. Test Set
- 모델을 평가하는 데 사용되는 데이터 셋으로 Train Class와 겹치지 않는 새로운 클래스 (Test Class) 입니다.
- Test Set도 Episode 구조로 구성됩니다.
- Support Set
- Query Set
관련 질문
Q. Few-Shot Learning의 방식과 CNN, Supervised Classification이랑 크게 다른 방식이라고 느껴지지 않습니다.
A. 실제로 CNN 방식을 이기기가 어렵다. 학계의 few-shot learning은 문제가 많은 편이고 인공적으로 상황을 만들어 내는 경우가 많아 실용적이지는 않음. 현실에서는 중요한 문제이나, 학계에서는 여러가지 문제로 아쉬운 상황.
(결국은 데이터가 많은 학습이 Few-Shot Learning의 방식으로 보완하는 것 보다는 좋다는 의견인듯합니다.)
교수님의 최신 AI 트렌드에 대한 생각
1. 학습을 하는 도중에 데이터의 목적이 달라지면 데이터의 레이블링을 전부 다시해야합니다.
- 목적이 다른 레이블링을 사용하여 학습하면 성능이 안 좋아지므로 레이블링을 다시해야한다고 합니다.
- 예전에는 노이즈가 있더라도 엄청난 데이터를 학습하는 방식을 사용했다고 합니다.
- 요즘에는 진짜 잘 동작하는 AI를 만들기 위해서 레이블링부터 아주 심혈을 기울이고 있다고 합니다.
- 요즘의 추세는 대량의 데이터 + 일부 안좋은 데이터로 학습한 AI <<<<< 소수의 깨끗한 데이터로 학습한 AI라고 합니다.
- 현재 대량 + 안좋은 데이터의 학습 방식은 정체된 상황이라고 하네요.
- 그래서 아예 요은 전문가들의 데이터를 받으려고 합니다.
- 따라서, 정제된 데이터를 얻으려니 시간이 많이 필요하다고 하네요.
2. 사람의 지능을 뛰어넘으면 개선에 있어서 더 많은 문제가 생길 것이라고 합니다.
- 기존의 AI들이 학습한 지식은 기본적으로 전문가를 통하면 답변이 정확한지 아닌지 구분이 가능햇습니다.
- 그러나 사람보다 뛰어난 AI가 만들어지면 그때부터는 문제에 대한 정답을 사람에게 물어 볼 수 없게될 것 임을 알 수 있습니다.
- 그래서 그런 경우에 AI 스스로 그 문제에 대한 해답을 찾아야하는데 그렇게 하도록 설계하는게 쉽지는 않아보이고 이 문제에서 학계는 정체되어있다고 합니다.
- 쉬운 예시를 들면 알파고 제로인데
- 기존에는 사람이 둔 바둑을 기반으로 AI 모델이 성장했지만
- 지금은 사람을 뛰어 넘어서 사람 데이터로 학습하면 성능이 떨어진다고 합니다.
- 따라서, 지금은 기계끼리 서로 학습시키는 방식을 사용한다고합니다.
- 다만, 이 방법은 제한된 환경이라서 가능하다고 하네요.
참조
https://sebastianraschka.com/faq/docs/few-shot.html
What is few-shot learning? And how does it differ from the conventional training procedure for supervised learning?
Few-shot learning is a flavor of supervised learning for small training sets with a very small example-to-class ratio. In regular supervised learning, we tra...
sebastianraschka.com
'CS 지식 > AI 관련' 카테고리의 다른 글
Meta Learning - MAML, Reptile 이해하기 (0) | 2025.01.30 |
---|---|
Zero-shot learning, Metric Learning Approach 이해하기 (0) | 2025.01.28 |
Advanced RAG Techniques - Query expansion, Cross-encoder and Dense Passage Retrieval(DPR) (2) | 2024.12.29 |
Vector DB란 무엇인가? (3) | 2024.12.26 |
Vector DB : 전통적인 DB와 비교한 Vector DB의 특징들 (1) | 2024.12.25 |
개발 및 IT 관련 포스팅을 작성 하는 블로그입니다.
IT 기술 및 개인 개발에 대한 내용을 작성하는 블로그입니다. 많은 분들과 소통하며 의견을 나누고 싶습니다.