제로 샷, 원 샷, 퓨 샷
예시의 개수 선택
제로 샷, 원 샷, 퓨 샷은(는) CoddyKit의 무료 AI Prompt Engineering 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Prompt Engineering 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.
샷 스펙트럼
샷은 실제 질의 전에 프롬프트에 배치되는 라벨이 지정된 예시의 수를 의미합니다. 제로샷은 모델이 사전 학습을 통해 형성한 사전 지식에 전적으로 의존합니다. 퓨샷은 가중치를 업데이트하지 않고 추론 시점에 모델을 작은 작업별 분포에 맞춥니다.
이를 컨텍스트 내 학습(ICL)이라고 합니다. 트랜스포머는 예시를 시퀀스의 일부로 취급하고, 예시에 대해 메타 학습된 회귀와 유사한 작업을 암묵적으로 수행합니다. k(샷의 수)는 경험적으로 조정하는 하이퍼파라미터이지, 고정된 모범 사례가 아닙니다.
from dataclasses import dataclass
@dataclass
class ICLConfig:
k: int # number of demonstrations
selection: str # 'static' | 'dynamic'
order: str # 'random' | 'similarity' | 'curriculum'
# Zero-shot is simply k=0
cfg = ICLConfig(k=0, selection='static', order='random')제로샷이 성공하는 경우
작업이 사전 학습에 잘 반영되어 있고(요약, 번역, 일반적인 분류), 예시가 출력 형식에 편향을 일으킬 수 있다면 제로샷을 사용하십시오. 지시 사항을 따르도록 조정된 모델에서는 간결한 지시문과 출력 스키마를 함께 제시하는 편이, 스타일을 미묘하게 고정하는 예시보다 효과적인 경우가 많습니다.
제로샷은 토큰 비용과 지연 시간도 최소화하며, 모델이 데모에서 가장 많은 비중을 차지하는 분류를 과도하게 예측하는 다수 레이블 편향도 피할 수 있습니다.
# Zero-shot with explicit schema beats vague few-shot
PROMPT = (
'Classify sentiment as POSITIVE, NEGATIVE, or NEUTRAL.\n'
'Respond with only the label.\n\n'
'Text: ' + user_text + '\nLabel:'
)형식의 기준이 되는 원샷
원샷은 작업의 개념은 명확하지만 출력 형식이 특이하거나 엄격할 때 특히 효과적입니다. 단 하나의 데모만으로도 산문 설명보다 정확한 형식(JSON 키, 구분자, 대소문자)을 훨씬 안정적으로 학습시킬 수 있습니다.
토큰을 많이 사용하거나 여러 예시가 초래하는 레이블 분포의 치우침을 감수하지 않고 구조를 제한하고 싶다면 원샷을 사용하십시오.
ONE_SHOT = (
'Extract entities as JSON.\n\n'
'Input: Apple released the iPhone in Cupertino.\n'
'Output: {"org": ["Apple"], "product": ["iPhone"], "loc": ["Cupertino"]}\n\n'
'Input: ' + query + '\nOutput:'
)퓨샷과 k 곡선
k에 따른 성능은 거의 단조롭게 증가하지 않습니다. 일반적으로 예시가 문맥을 빽빽하게 채우고, 주의를 분산시키며, 실제 질의를 모델의 최근 정보 집중 지점에서 더 멀리 밀어낼수록 성능은 상승하다가 정체된 후 저하됩니다.
보류 데이터 세트에서 {1, 2, 4, 8, 16}의 k를 경험적으로 바꾸어 가며 확인하십시오. 최적의 k는 작업의 복잡도, 예시의 길이, 모델의 실질적인 문맥 활용률에 따라 달라지며, 이 활용률은 대개 모델에 명시된 문맥 창보다 훨씬 낮습니다.
def sweep_k(eval_set, candidates, ks=(1,2,4,8,16)):
results = {}
for k in ks:
acc = evaluate(build_prompt(candidates[:k]), eval_set)
results[k] = acc
return max(results, key=results.get)ICL이 작동하는 이유: 암묵적 추론
연구에서는 ICL을 모델이 암묵적인 베이즈 추론을 수행하는 과정으로 설명합니다. 데모는 모델이 사전 학습 중에 이미 학습한 잠재적인 작업 개념을 찾도록 돕습니다. 예시는 새로운 지식이 아니라 작업에 대한 사후 분포의 범위를 좁히는 증거로 작용합니다.
이 관점은 직관에 반하는 결과를 설명합니다. 데모의 레이블이 잘못되었더라도 정확도가 상당 부분 유지될 수 있는데, 지배적인 신호가 입력과 레이블의 대응 자체가 아니라 형식과 레이블 공간이기 때문입니다.
# Min, Lyu et al. (2022): label correctness matters less than
# - the input distribution
# - the label space (which classes exist)
# - the format / structure
# Implication: invest in representative inputs + valid label set토큰 예산과 비용의 상충 관계
모든 샷은 문맥과 비용을 소모합니다. 데모가 길면 예시 네 개만으로도 질의보다 훨씬 커질 수 있습니다. 정확도 포인트당 비용 지표를 계산하십시오. k=8이 k=4보다 정확도를 0.5% 높이는 대신 토큰을 두 배 사용한다면, 운영 환경에서는 k=4가 더 나은 선택입니다.
처리량이 높은 처리 과정에서는 고정된 예시 블록을 프롬프트 캐시에 저장하십시오. 그러면 반복되는 데모를 한 번만 과금하고 처리할 수 있습니다.
def cost_efficiency(acc_by_k, tokens_by_k, price_per_1k):
return {
k: acc_by_k[k] / (tokens_by_k[k] / 1000 * price_per_1k)
for k in acc_by_k
}
# Pick the k maximizing accuracy per dollar, not raw accuracy다수 레이블 및 위치 편향
퓨샷 프롬프트에는 숨은 편향이 있습니다. 다수 레이블 편향은 모델이 데모에서 가장 자주 등장하는 분류를 선호하게 만듭니다. 최근성 편향은 마지막 예시에 과도한 가중치를 둡니다. 빈번한 토큰 편향은 자주 나타나는 토큰을 선호하게 만듭니다.
문맥 보정과 같은 보정 기법은 내용이 없는 입력(예를 들어 N/A 토큰)에 대한 모델의 사전 분포를 추정한 뒤 그 영향을 나눠 제거하여, 퓨샷 분류기의 안정성을 크게 높입니다.
# Contextual calibration (Zhao et al. 2021)
p_cf = model_probs(prompt_with_input('N/A')) # content-free prior
W = 1.0 / p_cf # diagonal correction
def calibrated(probs):
return normalize(W * probs)데모 세트 균형 맞추기
다수 레이블 편향을 완화하려면 데모 전체에서 분류별 비중을 균형 있게 맞추고 순서도 바꾸십시오. k=4인 이진 분류에서는 3:1 대신 양성 예시 2개와 음성 예시 2개를 섞어 사용하십시오.
생성 작업에서는 중요한 차원(길이, 어조, 난이도)을 기준으로 균형을 맞추십시오. 그러면 모델이 가장 자주 본 하나의 방식으로만 수렴하는 것을 막을 수 있습니다.
import random
def balanced_demos(pool, k, label_fn):
by_label = {}
for ex in pool:
by_label.setdefault(label_fn(ex), []).append(ex)
per = k // len(by_label)
picks = [e for lst in by_label.values() for e in random.sample(lst, per)]
random.shuffle(picks)
return picks퓨샷과 미세 조정
작업이 자주 바뀌거나 데이터가 부족하거나 조정된 모델을 호스팅할 수 없다면 퓨샷이 적절한 도구입니다. 미세 조정은 수천 개의 예시가 있고 호출당 지연 시간을 최소화해야 하거나, 형식을 모델에 내장하여 프롬프트를 짧게 유지하고 싶을 때 더 효과적입니다.
일반적인 운영 경로는 다음과 같습니다. 퓨샷으로 시제품을 만든 다음 성공한 추론 기록을 수집하고, 이를 미세 조정에 증류하여 예시 토큰을 완전히 제거합니다.
# Decision heuristic
if num_labeled < 500 or task_volatility == 'high':
strategy = 'few-shot ICL'
elif latency_budget_ms < 200 or prompt_token_cost_dominant:
strategy = 'fine-tune + zero-shot'
else:
strategy = 'few-shot now, distill later'추론 작업에는 샷 이상의 것이 필요합니다
여러 단계의 추론에서는 단순한 퓨샷 답변 쌍이 오히려 해가 될 수 있습니다. 모델이 정당화할 수 없는 답변으로 곧장 건너뛰는 법을 학습하기 때문입니다. 퓨샷을 최종 레이블만이 아니라 추론 과정을 보여 주는 사고 과정 데모와 함께 사용하십시오.
샷의 수는 추론의 깊이와 상호 작용합니다. 산술 및 논리 벤치마크에서는 고품질 사고 과정 예시 k=2개가 답변만 있는 예시 k=8개보다 좋은 경우가 많습니다.
COT_SHOT = (
'Q: A shop had 23 apples, used 20, bought 6 more. How many now?\n'
'A: Start 23, minus 20 leaves 3, plus 6 is 9. Answer: 9\n\n'
'Q: ' + question + '\nA:'
)k를 위한 평가 harness
샷 선택을 harness로 뒷받침되는 경험적 탐색으로 다루십시오. 검증 세트를 따로 보관하고, 여러 시드로 예시 순서를 통제하며, 평균과 분산을 보고하십시오. 순서만 바뀌어도 퓨샷 정확도가 몇 포인트씩 변할 수 있기 때문입니다.
최종 선택이 정확도만이 아니라 전체 목표를 최적화하도록 k별 토큰 수와 지연 시간을 기록하십시오.
def harness(pool, val, ks, seeds=5):
report = {}
for k in ks:
accs = []
for s in range(seeds):
demos = balanced_demos(pool, k, label_fn)
accs.append(evaluate(build_prompt(demos), val))
report[k] = (mean(accs), stdev(accs))
return report빠른 확인
샷 선택과 ICL 편향에 대한 이해도를 확인해 보십시오.
정리
핵심 요점:
k는 조정할 수 있는 하이퍼파라미터이므로 여러 값으로 바꾸어 가며 상승-정체-저하 곡선을 관찰하십시오.- 제로샷은 잘 알려진 작업에 적합하고, 원샷은 엄격한 형식의 기준을 잡으며, 퓨샷은 작업 분포를 조건으로 사용합니다.
- ICL은 사전 학습된 작업을 찾아 작동하므로, 레이블의 정확성보다 형식과 레이블 공간이 더 큰 영향을 줍니다.
- 균형 맞추기, 섞기, 문맥 보정으로 다수 레이블 편향, 최근성 편향, 빈번한 토큰 편향에 대응하십시오.
- 정확도 대비 비용을 최적화하고, 추론 작업에는 사고 과정 예시를 함께 사용하며, 안정적인 퓨샷 프롬프트를 미세 조정 모델로 증류하십시오.
자주 묻는 질문
“제로 샷, 원 샷, 퓨 샷” 강의는 무료인가요?
네 — “제로 샷, 원 샷, 퓨 샷” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Prompt Engineering 강의 전체를 잠금 해제할 수 있습니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.
“제로 샷, 원 샷, 퓨 샷”에서 뭘 배우나요?
예시의 개수 선택 브라우저에서 직접 실행하는 실습 코드로 AI Prompt Engineering을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AI Prompt Engineering을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AI Prompt Engineering은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“제로 샷, 원 샷, 퓨 샷” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AI Prompt Engineering 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AI Prompt Engineering 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 제로 샷, 원 샷, 퓨 샷
- 효과적인 예시 설계
- 예시 순서와 최신성
- 동적 퓨 샷 선택