🤖 AI/ML

In-Context Learning

In-Context Learning

LLM이 프롬프트 내 예시만으로 새 작업을 학습하는 능력. 파인튜닝 없이 적응.

📖 상세 설명

In-Context Learning(ICL)은 대형 언어 모델(LLM)이 프롬프트 내에 제공된 예시만으로 새로운 작업을 수행하는 능력입니다. 모델 파라미터를 업데이트(파인튜닝)하지 않고도 프롬프트에 포함된 몇 개의 예시(few-shot)를 통해 패턴을 학습하고 이를 새로운 입력에 적용합니다.

ICL은 2020년 GPT-3 논문 "Language Models are Few-Shot Learners"에서 처음 주목받았습니다. 기존의 지도학습처럼 역전파(backpropagation)로 가중치를 변경하는 것이 아니라, 사전학습된 모델이 프롬프트의 맥락(context)을 이해하고 추론하는 방식입니다.

Zero-shot(예시 없음), One-shot(1개 예시), Few-shot(2~5개 예시)으로 구분됩니다. 연구에 따르면 5~20개 예시가 최적이며, 그 이상은 오히려 성능이 저하되는 "Over-prompting" 현상이 발생할 수 있습니다.

실무에서는 최소 2개, 최대 5개의 예시를 사용하고 긍정/부정 예시를 모두 포함하는 것이 효과적입니다. 예시의 정답 레이블보다 형식(format)과 입력 분포가 성능에 더 큰 영향을 미친다는 연구 결과가 있습니다.

💻 코드 예제

from openai import OpenAI

client = OpenAI()

# Few-shot In-Context Learning 예시: 감정 분류
def classify_sentiment_icl(text):
    prompt = """다음은 텍스트와 감정 분류 예시입니다:

예시 1:
텍스트: "이 제품 정말 최고예요! 매일 사용하고 있습니다."
감정: 긍정

예시 2:
텍스트: "배송이 늦고 포장도 엉망이었어요. 실망입니다."
감정: 부정

예시 3:
텍스트: "보통이에요. 가격 대비 적당합니다."
감정: 중립

이제 다음 텍스트의 감정을 분류해주세요:
텍스트: "{text}"
감정:"""

    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "user", "content": prompt.format(text=text)}
        ],
        max_tokens=10,
        temperature=0
    )

    return response.choices[0].message.content.strip()

# 테스트
test_texts = [
    "완전 강추합니다! 친구들에게도 추천했어요.",
    "그냥 평범해요. 다시 살지는 모르겠네요.",
    "절대 사지 마세요. 시간 낭비였어요."
]

for text in test_texts:
    result = classify_sentiment_icl(text)
    print(f"텍스트: {text}")
    print(f"분류 결과: {result}\n")

🗣️ 실무에서 이렇게 말하세요

💬 회의에서
"파인튜닝 없이 few-shot으로 분류 작업을 처리할 수 있습니다. 프롬프트에 3~5개 예시만 넣으면 새로운 데이터도 잘 분류해요. 학습 데이터가 부족할 때 빠르게 프로토타입 만들기 좋습니다."
💬 면접에서
"In-Context Learning은 모델 가중치를 바꾸지 않고 프롬프트의 예시만으로 작업을 수행하는 겁니다. GPT-3에서 처음 주목받았고, 예시의 정답보다는 형식과 분포가 성능에 더 큰 영향을 미친다는 연구 결과가 있습니다."
💬 기술 토론에서
"예시를 너무 많이 넣으면 오히려 성능이 떨어지는 Over-prompting 현상이 있어요. GPT-4에서는 5~20개 예시가 최적이고, 그 이상은 오히려 방해가 됩니다. 긍정과 부정 예시를 모두 포함하는 게 중요해요."

⚠️ 흔한 실수 & 주의사항

❌
예시를 무작정 많이 넣음

20개 이상의 예시는 성능 저하를 유발합니다. 5개 내외의 대표적인 예시가 가장 효과적입니다.

❌
예시 형식의 일관성 무시

예시마다 형식이 다르면 모델이 패턴을 파악하기 어렵습니다. 동일한 구조의 예시를 제공하세요.

✅
긍정/부정 예시 균형 있게 포함

올바른 답변뿐 아니라 잘못된 예시도 포함하면 모델이 경계를 더 잘 학습합니다.

🔗 관련 용어

📚 더 배우기