[Daily morning study] 퓨샷 러닝(Few-shot Learning)과 인컨텍스트 러닝(In-context Learning)
#daily morning study
퓨샷 러닝(Few-shot Learning)이란
기존 지도 학습은 수천~수십만 개의 레이블된 데이터가 필요하다. 퓨샷 러닝은 소수의 예시(보통 1~5개)만으로 새로운 태스크를 수행할 수 있도록 하는 학습 패러다임이다.
예시 수에 따라 세 가지로 구분한다.
| 이름 | 예시 수 | 설명 |
|---|---|---|
| Zero-shot | 0개 | 예시 없이 설명이나 레이블만으로 추론 |
| One-shot | 1개 | 예시 하나로 태스크 파악 |
| Few-shot | 2~수십 개 | 소수의 예시로 태스크 파악 |
사람은 고양이 사진을 3장만 보고도 새로운 고양이 사진을 분류할 수 있다. 퓨샷 러닝은 이런 인간의 일반화 능력을 모델에 부여하는 것이 목표다.
전통적인 퓨샷 러닝 접근법
Siamese Network
동일한 가중치를 공유하는 두 개의 네트워크로 두 입력 간의 유사도를 학습한다. 새로운 클래스가 나타났을 때 지원 셋(support set)의 예시와 유사도를 비교해 분류한다.
[입력 A] → [CNN] ─┐
├→ 유사도 계산 → Yes/No
[입력 B] → [CNN] ─┘
Prototypical Networks
클래스별 프로토타입(평균 임베딩)을 계산하고, 쿼리 샘플을 가장 가까운 프로토타입의 클래스로 분류한다.
지원 셋:
클래스 A의 예시들 → 평균 임베딩 = 프로토타입 A
클래스 B의 예시들 → 평균 임베딩 = 프로토타입 B
쿼리 샘플 → 어느 프로토타입에 더 가까운가?
MAML (Model-Agnostic Meta-Learning)
“태스크들을 빠르게 학습하는 방법”을 메타 학습한다. 새로운 태스크가 주어졌을 때 몇 번의 gradient update만으로 좋은 성능을 낼 수 있는 초기 파라미터를 학습하는 것이 핵심이다.
메타 학습 루프:
태스크 샘플링 → 소수 예시로 fine-tune → 평가
→ 초기 파라미터를 여러 태스크에 잘 적응할 수 있도록 업데이트
인컨텍스트 러닝(In-context Learning)이란
GPT-3 논문(2020)에서 처음 대규모로 관찰된 현상이다. 프롬프트 안에 몇 가지 예시를 포함하면 모델이 가중치를 업데이트하지 않고 그 패턴을 파악해 새로운 입력에 적용한다.
전통적인 fine-tuning과 차이점:
| 구분 | Fine-tuning | In-context Learning |
|---|---|---|
| 가중치 변화 | O (gradient 업데이트) | X (추론 단계만) |
| 필요 데이터 | 수백~수천 개 | 수~수십 개 |
| 비용 | 높음 (GPU 학습 필요) | 낮음 (API 호출만) |
| 범용성 | 특정 태스크에 특화 | 유연하게 변경 가능 |
인컨텍스트 러닝 프롬프트 구조
[시스템 지시]
당신은 감성 분류 전문가입니다. 텍스트의 감성을 긍정/부정으로 분류하세요.
[Few-shot 예시]
입력: "오늘 날씨가 정말 좋아서 기분이 업됐어"
출력: 긍정
입력: "버스를 놓쳐서 회사에 지각했다. 정말 최악이야"
출력: 부정
입력: "친구들이랑 맛있는 걸 먹었더니 너무 행복해"
출력: 긍정
[실제 쿼리]
입력: "시험에 떨어져서 너무 속상하다"
출력:
모델은 이 패턴을 보고 “부정”을 출력한다. 가중치 학습 없이 프롬프트만으로 태스크를 수행하는 것이다.
왜 인컨텍스트 러닝이 작동하는가
정확한 메커니즘은 아직 연구 중이지만 몇 가지 가설이 있다.
패턴 매칭 가설: 사전 학습 데이터에 유사한 패턴이 대량으로 포함되어 있어, 프롬프트의 입출력 패턴을 보고 가장 그럴듯한 다음 토큰을 예측하는 과정에서 자연스럽게 태스크를 수행한다.
잠재적 그래디언트 가설: Transformer의 어텐션 메커니즘이 암묵적으로 fine-tuning과 유사한 연산을 수행한다는 주장이다. Self-attention이 예시들로부터 “컨텍스트 내 학습”을 수행하는 것처럼 동작한다.
배이지안 추론 관점: 모델이 사전 지식(prior)과 제공된 예시(likelihood)를 결합해 태스크에 맞는 posterior를 추정한다고 볼 수 있다.
효과적인 퓨샷 프롬프트 작성 팁
예시 품질이 양보다 중요하다. 다양하고 명확한 예시 3~5개가 10개의 모호한 예시보다 낫다.
레이블의 형식을 일관되게 유지한다. 출력 포맷이 흔들리면 모델이 패턴을 잘못 파악한다.
예시 순서가 영향을 준다. 실험적으로 마지막 예시와 유사한 쿼리에서 성능이 높게 나오는 경향이 있다. 이를 “recency bias”라고 부른다.
Chain-of-Thought(CoT)와 결합하면 강력하다. 예시에 중간 추론 과정을 포함시키면 복잡한 추론 태스크에서 성능이 크게 향상된다.
예시 (CoT 포함):
입력: "철수는 사과 3개를 가졌고 영희에게 1개를 줬다. 남은 사과는?"
풀이: 철수는 처음에 3개를 가졌다. 1개를 줬으므로 3 - 1 = 2개가 남는다.
출력: 2개
쿼리:
입력: "민수는 볼펜 7개 중 친구에게 4개를 줬다. 남은 볼펜은?"
풀이:
한계와 주의점
컨텍스트 길이 제한: 모델마다 최대 컨텍스트 길이가 있어서 예시를 무한정 늘릴 수 없다.
일관성 없는 성능: 같은 예시라도 순서나 표현 방식에 따라 성능이 크게 달라진다. Fine-tuning에 비해 안정성이 낮다.
레이블 편향(Label bias): 학습 데이터에서 특정 레이블이 많이 등장했다면, 예시에서도 균형을 맞춰야 한다. 한쪽 레이블만 있는 예시는 모델을 편향시킨다.
복잡한 태스크에는 부적합: 복잡한 도메인 지식이 필요하거나 예외 케이스가 많은 태스크는 소수의 예시만으로 커버하기 어렵다. 이 경우 fine-tuning이 여전히 유효하다.
정리
퓨샷 러닝은 소수의 예시로 새로운 태스크를 수행하게 하는 패러다임이고, 인컨텍스트 러닝은 이를 LLM이 프롬프트 안에서 구현하는 방식이다. 가중치 업데이트 없이 프롬프트만으로 모델의 행동을 유도할 수 있어, RAG나 프롬프트 엔지니어링과 함께 실용적인 LLM 활용의 핵심 기법이 됐다.