Few-Shot / Zero-Shot 학습
핵심 요약: 예시가 아주 적거나(Few-shot) 아예 없어도(Zero-shot) 새 과제를 수행하는 능력이다. “사진 5장으로 새 동물 분류”, “프롬프트 하나로 감정 분석” — 대규모 사전 학습이 이를 가능하게 한다.
초보자를 위한 핵심 용어
섹션 제목: “초보자를 위한 핵심 용어”- Few-shot 학습: 클래스당 1~5개의 극소수 예제만으로 새로운 과제를 학습하는 것. 기존 ML이 수천 장을 필요로 하는 것과 대조적.
- Zero-shot 학습: 한 번도 본 적 없는 클래스에 대해 예측하는 능력. CLIP이 “얼룩말”을 학습 데이터 없이 분류할 수 있는 것이 대표적.
- 메타 학습(Meta-Learning): “학습하는 방법을 학습”하는 접근. 다양한 과제를 경험하여 새 과제에 빠르게 적응하는 능력을 획득한다.
- In-Context Learning(ICL): LLM이 프롬프트 안의 예시만 보고 과제를 수행하는 능력. 파라미터 업데이트 없이 추론만으로 가능하다.
- N-way K-shot: Few-shot 문제의 형식. N개 클래스, 각 K개 예제. “5-way 1-shot”은 5개 종류를 각 1장의 사진만으로 분류.
Few-shot 학습과 Zero-shot 학습은 극소수의 예제(또는 예제 없이)만으로 새로운 과제를 수행하는 능력이다. 전통적 ML은 대규모 라벨 데이터를 필요로 하지만, 실제 많은 상황에서 라벨 데이터는 극도로 부족하다. 메타 학습(meta-learning), 대규모 사전 학습, In-Context Learning(ICL) 등의 접근법이 이 문제를 해결한다.
비유: Few-shot 학습은 신입에게 예시 몇 개만 보여주고 일을 맡기는 것이다. “이런 메일은 이렇게 답하면 돼”라며 세 개쯤 보여주면 나머지는 알아서 한다. Zero-shot은 예시도 없이 말로만 설명하고 시키는 것이다. 다만 이 방식은 가르친 내용이 신입의 머리에 남지 않는다 — 다음 일을 시킬 때 예시를 처음부터 다시 보여줘야 하고, 그 비용이 매번 발생한다.
탄생 배경
섹션 제목: “탄생 배경”“데이터가 부족한 현실”은 ML의 가장 오래된 도전 과제 중 하나이다. 이 문제를 체계적으로 해결하려는 시도의 기원은 2016년 Google DeepMind의 Matching Networks (Vinyals et al.)까지 거슬러 올라간다. 이 논문은 “학습하는 방법을 학습한다(learning to learn)“는 메타 학습의 개념을 few-shot 이미지 분류에 처음으로 성공적으로 적용했다.
2017년에는 Chelsea Finn의 MAML(Model-Agnostic Meta-Learning)이 등장하여, 모델에 구애받지 않는 범용적 메타 학습 프레임워크를 제시했다. MAML의 핵심 아이디어 — “어떤 과제에든 소수의 gradient step만으로 빠르게 적응할 수 있는 초기화를 학습한다” — 는 이론적으로 우아하면서도 실용적이었다.
그러나 진정한 패러다임 전환은 2020년 GPT-3의 등장과 함께 일어났다. GPT-3는 1,750억 파라미터와 대규모 사전 학습을 통해, 파라미터 업데이트 없이 프롬프트 내의 예시만으로 새로운 과제를 수행하는 In-Context Learning(ICL) 능력을 보여주었다. 이것은 별도의 학습 루프나 fine-tuning 없이, 추론만으로 few-shot 학습이 가능하다는 것을 의미했다. 이후 few-shot 학습은 메타 학습 알고리즘 연구에서 대규모 사전 학습 + 효율적 적응이라는 방향으로 급속히 전환되었다.
핵심 개념
섹션 제목: “핵심 개념”1. 문제 정의
섹션 제목: “1. 문제 정의”| 용어 | 정의 |
|---|---|
| Zero-shot | 학습 시 본 적 없는 클래스에 대해 예측 |
| One-shot | 클래스당 1개 예제만으로 학습 |
| Few-shot | 클래스당 극소수(1~5개) 예제만으로 학습 |
| N-way K-shot | N개 클래스, 각 K개 예제로 구성된 에피소드 |
2. 메타 학습 (Meta-Learning)
섹션 제목: “2. 메타 학습 (Meta-Learning)”“Learning to learn”: 다양한 과제를 학습하여, 새로운 과제에 빠르게 적응하는 능력을 획득한다.
MAML (Model-Agnostic Meta-Learning)
섹션 제목: “MAML (Model-Agnostic Meta-Learning)”Finn et al. (2017)이 제안. 소수의 gradient step으로 빠르게 적응할 수 있는 초기화를 학습한다.
Inner loop (과제 적응):
Outer loop (메타 업데이트):
직관: “좋은 초기화란, 어떤 과제에든 몇 번의 업데이트만으로 빠르게 적응할 수 있는 위치”
Prototypical Networks
섹션 제목: “Prototypical Networks”각 클래스의 프로토타입(지원 집합의 평균 임베딩)을 계산하고, 쿼리 샘플을 가장 가까운 프로토타입의 클래스로 분류한다.
직관: 각 클래스의 “대표점”과의 거리로 분류
Matching Networks
섹션 제목: “Matching Networks”Attention 메커니즘 기반으로, 쿼리와 지원 집합 간의 유사도를 직접 학습한다.
3. In-Context Learning (ICL)
섹션 제목: “3. In-Context Learning (ICL)”LLM이 prompt 내의 예시만으로 새 과제를 수행하는 능력이다.
예시 1: "맛있는 음식이었습니다" → 긍정예시 2: "서비스가 불친절했습니다" → 부정질문: "분위기가 좋았어요" → ?특징:
- 파라미터 업데이트 없음 (추론만으로 수행)
- Prompt 설계가 핵심
- 모델 규모가 클수록 ICL 능력 향상
이론적 이해: 완전히 규명되지 않았다. Transformer가 내부적으로 gradient descent를 시뮬레이션한다는 가설(implicit meta-learning)이 유력하다.
4. Transfer 기반 Few-Shot
섹션 제목: “4. Transfer 기반 Few-Shot”대규모 사전 학습 후, 소수 예제로 fine-tuning한다.
| 접근법 | 방법 |
|---|---|
| Feature Extraction | 사전 학습 모델 고정 + 분류기만 학습 |
| LoRA / Adapter | 소수 파라미터만 효율적으로 학습 |
| Prompt Tuning | 학습 가능한 프롬프트 벡터 추가 |
숫자로 이해하기
섹션 제목: “숫자로 이해하기”프롬프트에 예시를 몇 개 넣느냐에 따라 토큰이 얼마나 늘어날까?
지시문 80토큰, 질문 60토큰, 예시 1개당 120토큰이라고 하자.
방식 계산 총 토큰 0-shot 대비 0-shot 140 1.0배 1-shot 260 1.9배 5-shot 740 5.3배 20-shot 2,540 18.1배 핵심은 이 비용이 매 요청마다 발생한다는 것이다. 파인튜닝은 한 번 학습하면 끝이지만, In-Context Learning은 질의할 때마다 예시를 다시 보낸다.
하루 50,000건을 처리한다면 20-shot은 0-shot보다 하루에 1.2억 토큰을 더 쓴다.
판단 기준: 요청량이 적고 과제가 자주 바뀌면 few-shot이 유리하다. 요청량이 많고 과제가 고정이면, 예시를 매번 보내는 비용이 파인튜닝 비용을 금방 넘어선다.
상세 내용
섹션 제목: “상세 내용”N-way K-shot 에피소드 구성
섹션 제목: “N-way K-shot 에피소드 구성”
메타 학습에서는 이러한 에피소드를 대량 생성하여 학습한다. 각 에피소드는 하나의 “미니 학습 과제”이다.
Zero-shot의 접근 방법
섹션 제목: “Zero-shot의 접근 방법”| 접근 | 원리 | 예시 |
|---|---|---|
| 속성 기반 | 클래스의 속성(예: “줄무늬 있음, 네 발”) 활용 | 동물 분류 |
| 텍스트 기반 | 클래스 이름의 텍스트 임베딩 활용 | CLIP zero-shot |
| LLM 기반 | Prompt로 과제 설명 | GPT few-shot |
언제 사용하는가
섹션 제목: “언제 사용하는가”| 상황 | 추천 접근 |
|---|---|
| 클래스당 0개 예제 | Zero-shot (CLIP, LLM) |
| 클래스당 1~5개 예제 | Prototypical Networks, MAML |
| 클래스당 10~100개 예제 | Transfer + LoRA fine-tuning |
| 새 클래스가 계속 추가 | 메타 학습 (에피소드 기반) |
| NLP 과제 | LLM In-Context Learning |
| 비전 과제 | CLIP zero-shot 또는 few-shot fine-tuning |
실전 사례
섹션 제목: “실전 사례”희귀 질환 진단: 5장의 이미지로 90% 정확도를 달성한 의료 AI
섹션 제목: “희귀 질환 진단: 5장의 이미지로 90% 정확도를 달성한 의료 AI”희귀 피부 질환 분류는 전통적 딥러닝의 한계를 극명하게 보여주는 분야이다. 질환당 전 세계에 보고된 사례가 수십 건에 불과한 경우도 있어, 일반적인 지도 학습에 필요한 수천 장의 학습 이미지를 확보하는 것이 원천적으로 불가능하다.
한 의료 AI 연구팀은 Prototypical Networks 기반의 few-shot 학습을 적용하여 이 문제를 해결했다:
- 사전 학습: 일반 피부 질환 100종, 총 20만 장의 이미지로 메타 학습을 수행했다. 모델은 “피부 질환을 소수 예제만으로 분류하는 방법”을 학습했다
- 적용: 새로운 희귀 질환에 대해 질환당 5장의 참조 이미지만 제공하고, 쿼리 이미지를 분류하도록 했다
- 결과: 10종의 희귀 질환에 대해 평균 90% 정확도를 달성했다. 전통적 전이 학습(fine-tuning) 방식은 5장으로는 심각한 과적합이 발생하여 60% 미만에 그쳤다
핵심 성공 요인은 다음과 같았다:
- 에피소드 학습: 학습 단계에서도 “5장만으로 분류”하는 과제를 반복하여, 모델이 소량 데이터 환경에 최적화되었다
- 도메인 내 사전 학습: 일반 이미지(ImageNet)가 아닌 피부 질환 이미지로 사전 학습하여 표현의 질이 높았다
- 참조 이미지의 질: 전문 피부과 의사가 선별한 대표적 이미지 5장이, 무작위 50장보다 더 효과적이었다
직접 해보기
섹션 제목: “직접 해보기”instr, question, per_example = 80, 60, 120req_per_day = 50_000print(f"{'방식':>10} {'토큰':>7} {'0-shot 대비':>12} {'하루 추가 토큰':>16}")base = instr + questionfor k in (0, 1, 5, 20): t = base + k*per_example extra = (t - base) * req_per_day print(f"{str(k)+'-shot':>10} {t:>7} {t/base:>11.1f}x {extra:>16,}")print("\n예시는 매 요청마다 다시 보낸다 -- 한 번 학습하면 끝인 파인튜닝과 다른 점")
# 실행 결과:# 방식 토큰 0-shot 대비 하루 추가 토큰# 0-shot 140 1.0x 0# 1-shot 260 1.9x 6,000,000# 5-shot 740 5.3x 30,000,000# 20-shot 2540 18.1x 120,000,00020-shot은 0-shot의 18.1배 토큰을 쓰고, 하루 5만 건이면 1억 2천만 토큰이 추가로 나간다. 파인튜닝은 한 번 학습하면 끝이지만 In-Context Learning은 매 요청마다 예시를 다시 보낸다 — 요청량이 많고 과제가 고정이라면 이 비용이 금방 파인튜닝 비용을 넘어선다.
흔한 오해와 함정
섹션 제목: “흔한 오해와 함정”-
“Few-shot 환경에서는 과적합이 문제가 아니다”: 오히려 과적합이 극심하다. 데이터가 적기 때문에 강한 정규화(weight decay, dropout, 증강)가 필수적이다.
-
“ICL이 fine-tuning을 대체한다”: ICL은 편리하지만, 특정 도메인에서는 fine-tuning이 훨씬 우수하다. 둘은 보완적 관계이다.
-
“MAML은 모든 few-shot 문제에 최고”: MAML은 이론적으로 우아하지만 학습이 불안정하고 계산 비용이 높다. 실무에서는 transfer 기반 방법이 더 간단하고 강력한 경우가 많다.
-
“클래스당 예제가 많을수록 항상 좋다”: 노이즈가 있는 예제는 오히려 해로울 수 있다. 예제의 질이 양만큼 중요하다.
-
일반 사전 학습이 항상 최적: 도메인 내(in-domain) 사전 학습이 범용 사전 학습보다 few-shot 성능에서 더 효과적인 경우가 많다.
스스로 점검하기
섹션 제목: “스스로 점검하기”1. In-Context Learning은 모델의 가중치를 바꾸는가?
정답 보기
바꾸지 않는다. 예시는 입력 프롬프트의 일부로 들어갈 뿐이며, 학습된 것은 아무것도 없다. 그래서 다음 요청에는 예시를 처음부터 다시 보내야 한다.
2. few-shot과 파인튜닝 중 무엇을 골라야 하는가?
정답 보기
요청량과 과제 고정 여부로 판단한다. 요청이 적고 과제가 자주 바뀌면 few-shot, 요청이 많고 과제가 고정이면 파인튜닝이 유리하다. 예시 토큰 비용은 매 요청 반복된다.
3. Zero-shot 성능이 나쁠 때 가장 먼저 시도할 것은?
정답 보기
지시문을 더 구체적으로 쓰고 출력 형식을 명시하는 것이다. 그 다음이 예시 추가(few-shot), 그래도 부족하면 파인튜닝이나 RAG를 검토한다.
다른 주제와의 연결
섹션 제목: “다른 주제와의 연결”- 전이 학습: 사전 학습 + fine-tuning의 few-shot 활용
- LLM: In-Context Learning, Prompt Engineering
- Self-Supervised Learning: 사전 학습으로 표현 품질 향상
- 데이터 증강: 소량 데이터에서 증강의 효과
- 어텐션 메커니즘: Matching Networks의 기반
- ML을 사용하지 말아야 할 때: 데이터 부족 시 대안