Foundation Models - AI의 새로운 패러다임

2020년대 들어 AI 분야에서 놀라운 변화가 일어났습니다. GPT-3가 공개되었을 때, 많은 개발자들이 충격을 받았습니다. “어떻게 하나의 모델이 번역도 하고, 코드도 작성하고, 질문에도 답할 수 있지?”

과거에는 각 작업마다 별도의 모델을 학습시켜야 했습니다. 번역 모델, 요약 모델, 질문-답변 모델… 하지만 이제는 하나의 거대한 모델이 수십, 수백 가지 작업을 수행합니다. 이것이 바로 파운데이션 모델(Foundation Models)이 가져온 혁명입니다.

왜 파운데이션 모델을 이해해야 할까요?

파운데이션 모델은 단순히 “큰 AI 모델”이 아닙니다. 이것은 AI 개발 방식 자체를 근본적으로 바꿔놓았습니다.

1. AI 개발의 새로운 표준

과거 AI 개발 방식을 떠올려보세요:

  1. 특정 작업을 위한 데이터셋 수집
  2. 그 작업에 맞는 모델 설계
  3. 처음부터 학습
  4. 배포

이 과정은 시간도 오래 걸리고, 비용도 많이 들었습니다. 하지만 파운데이션 모델은 이 패러다임을 완전히 바꿨습니다:

  1. 거대한 범용 모델 사용 (이미 학습된 상태)
  2. 특정 작업에 맞게 조정 (Fine-tuning 또는 Prompting)
  3. 배포

OpenAI의 GPT-4, Google의 PaLM, Meta의 LLaMA - 이들은 모두 파운데이션 모델입니다. 전 세계 수많은 AI 서비스들이 이런 파운데이션 모델을 기반으로 만들어지고 있습니다.

2. 전이 학습의 극한

전이 학습(Transfer Learning)이라는 개념, 들어보신 적 있나요? ImageNet으로 학습된 모델을 가져와서 우리 도메인에 맞게 조정하는 방식이죠. 파운데이션 모델은 전이 학습을 극한까지 밀어붙인 결과입니다.

한 번 학습된 파운데이션 모델은 수백 가지 다운스트림 작업(downstream tasks)에 활용됩니다. 2023년 Stanford의 보고서에 따르면, 파운데이션 모델 기반 서비스가 전체 AI 서비스의 80% 이상을 차지한다고 합니다.

3. 실무에서의 현실

실무에서 AI를 도입하려고 할 때, 이제는 “처음부터 모델을 학습시킬 것인가?”라는 질문보다 “어떤 파운데이션 모델을 사용할 것인가?”라는 질문이 먼저입니다.

제 경험상, 스타트업이나 중소기업에서는 파운데이션 모델 없이 AI 서비스를 만드는 것은 거의 불가능합니다. 처음부터 학습시키려면 수십억 원의 인프라 비용과 수개월의 시간이 필요하기 때문입니다.

먼저, 기초부터 이해하기

파운데이션 모델이란 무엇인가?

파운데이션 모델(Foundation Model)은 2021년 Stanford의 연구진이 제안한 용어입니다. 정의를 살펴보면:

“대규모의 다양한 데이터로 학습되어, 광범위한 다운스트림 작업에 적용(adapt)될 수 있는 모델”

핵심은 세 가지입니다:

  1. 대규모 학습: 수십억 개의 파라미터
  2. 다양한 데이터: 인터넷의 텍스트, 이미지, 코드 등
  3. 범용 활용: 하나의 모델로 여러 작업 수행

왜 “파운데이션(Foundation, 기초)”인가?

건물을 지을 때 기초(foundation)를 먼저 놓고, 그 위에 다양한 구조물을 세우죠. 파운데이션 모델도 마찬가지입니다.

[파운데이션 모델 - GPT-4]
         |
    ┌────┼────┬────┬────┐
    |    |    |    |    |
  번역  요약  코드  대화  질문답변
        생성

하나의 견고한 기초 위에 수많은 응용 프로그램이 만들어집니다.

전통적 AI vs 파운데이션 모델

차이를 명확히 이해하기 위해 비교해볼까요?

❌ 전통적 방식 (Task-Specific Models)

각 작업마다 별도 모델:

[감성 분석 데이터] → [감성 분석 모델] → 긍정/부정 판단
[번역 데이터]      → [번역 모델]      → 번역 결과
[요약 데이터]      → [요약 모델]      → 요약 결과

특징:

  • 각 작업에 특화되어 높은 성능
  • 새 작업마다 처음부터 학습 필요
  • 데이터 수집과 학습에 많은 시간과 비용
  • 총 3개 모델 = 3배의 유지보수 비용

✅ 파운데이션 모델 방식

하나의 모델로 모든 작업:

[거대한 학습 데이터]
        ↓
 [파운데이션 모델]
    ↓   ↓   ↓
  감성 번역 요약
  분석

특징:

  • 하나의 모델로 다양한 작업 처리
  • Prompt나 Fine-tuning으로 빠르게 적용
  • 초기 학습 비용은 크지만, 재사용 가능
  • 한 번 학습하면 계속 활용

파운데이션 모델의 핵심 특징

파운데이션 모델이 전통적인 AI 모델과 근본적으로 다른 이유를 살펴보겠습니다.

1. 스케일(Scale) - 크기의 힘

파운데이션 모델의 첫 번째 특징은 압도적인 크기입니다. 하지만 단순히 “크다”는 것 이상의 의미가 있습니다.

파라미터 수의 변화:

  • BERT (2018): 340M (3억 4천만) 파라미터
  • GPT-2 (2019): 1.5B (15억) 파라미터
  • GPT-3 (2020): 175B (1750억) 파라미터
  • GPT-4 (2023): 추정 1.7T (1조 7천억) 파라미터

왜 이렇게 크기를 키울까요? 2020년 OpenAI의 연구에서 발견한 스케일링 법칙(Scaling Laws)이 그 답입니다:

“모델 크기, 데이터 크기, 컴퓨팅 파워가 증가하면, 모델 성능이 예측 가능하게 향상된다”

실제로 GPT-3의 경우, 단순히 크기를 키웠더니 few-shot learning 능력이 나타났습니다. 이전 모델들에서는 보지 못했던 새로운 능력이 창발(emergence)한 것이죠.

2. 자기지도학습(Self-Supervised Learning)

“어떻게 그렇게 많은 데이터에 레이블을 붙이나요?” - 이 질문을 자주 받습니다.

답은 간단합니다: 레이블을 붙이지 않습니다.

파운데이션 모델은 자기지도학습을 사용합니다. 데이터 자체에서 학습 신호를 만들어냅니다.

텍스트: 다음 단어 예측

입력: "The cat sat on the"
목표: "mat"

입력: "파운데이션 모델은 대규모"
목표: "데이터로"

문장의 일부를 보고 다음 단어를 예측하는 과정에서, 모델은 언어의 구조, 문법, 의미를 학습합니다.

이미지: Masked Autoencoding

원본 이미지 → [일부 가림] → 가려진 부분 복원

Vision Transformer(ViT) 같은 모델은 이미지의 일부를 가리고, 가려진 부분을 복원하는 과정에서 시각적 패턴을 학습합니다.

왜 이게 효과적일까요?

인간이 수동으로 레이블을 붙일 수 있는 데이터는 제한적입니다. ImageNet은 100만 장의 이미지에 레이블이 있지만, 인터넷에는 수십억 장의 이미지가 있습니다.

자기지도학습을 사용하면:

  • 레이블 없는 무한한 데이터 활용 가능
  • 인간의 편향 없이 학습
  • 비용과 시간 대폭 절감

Meta의 CLIP 모델은 인터넷의 4억 쌍의 이미지-텍스트로 학습했습니다. 사람이 직접 레이블을 붙였다면 불가능한 규모입니다.

3. 전이 가능성(Transferability) - 한 번 배우고 여러 번 활용

파운데이션 모델의 진짜 힘은 전이 가능성에 있습니다. 한 번 학습된 모델을 다양한 작업에 활용할 수 있습니다.

Adaptation 방법들

방법 1: Prompting (프롬프트 엔지니어링)

모델을 수정하지 않고, 입력(prompt)만 바꿔서 작업 수행:

# 번역 작업
"Translate to Korean: Hello, how are you?"
→ "안녕하세요, 어떻게 지내세요?"

# 요약 작업
"Summarize this article: [긴 텍스트]"
→ [요약문]

# 코드 생성
"Write a Python function to calculate factorial"
→ [코드]

장점: 모델 수정 없이 즉시 사용, 비용 0 단점: 복잡한 도메인 특화 작업은 성능 제한

방법 2: Fine-tuning (미세 조정)

파운데이션 모델을 시작점으로, 특정 데이터로 추가 학습:

[GPT-3.5]
   ↓
[의료 데이터 Fine-tuning]
   ↓
[의료 특화 챗봇]

장점: 도메인 특화 높은 성능 단점: 학습 데이터와 컴퓨팅 리소스 필요

방법 3: Parameter-Efficient Fine-Tuning (LoRA, Adapters)

전체 모델을 학습시키지 않고, 일부만 조정:

[175B 파라미터 GPT-3]
         ↓
[1B 파라미터만 학습] ← 훨씬 효율적!
         ↓
    [특화 모델]

장점: Fine-tuning의 성능 + 낮은 비용 단점: 구현 복잡도 증가

4. 창발 능력(Emergent Abilities) - 예상치 못한 능력의 출현

파운데이션 모델에서 가장 신비로운 현상은 창발 능력입니다. 모델 크기가 특정 임계값을 넘으면, 학습시키지 않은 능력이 갑자기 나타납니다.

Few-shot Learning

GPT-3에서 처음 두드러지게 관찰된 능력입니다:

# 예시 3개만 제공
1. happy → sad
2. big → small
3. fast → slow

# 새로운 단어의 반대말 예측
4. hot → ?

→ GPT-3: "cold" ✅

모델을 추가 학습시키지 않았는데도, 예시 몇 개만으로 패턴을 파악하고 적용합니다.

Chain-of-Thought Reasoning

복잡한 수학 문제를 단계별로 풀어내는 능력:

질문: Roger has 5 tennis balls. He buys 2 more cans of tennis balls.
Each can has 3 tennis balls. How many tennis balls does he have now?

GPT-3 (작은 모델):
"11" ❌ (틀림)

GPT-3 (큰 모델 + Chain-of-Thought):
"Let's think step by step:
1. Roger starts with 5 balls
2. He buys 2 cans, each has 3 balls
3. 2 cans × 3 balls = 6 balls
4. 5 + 6 = 11 balls"
→ "11" ✅ (정확)

왜 창발이 일어날까?

아직 완전히 이해되지 않았지만, 유력한 가설은:

  • 데이터의 복잡한 패턴을 표현하려면 일정 크기 이상 필요
  • 임계점을 넘으면 질적으로 다른 수준의 표현 가능
  • 인간 지능의 창발과 유사한 현상

2022년 Google의 연구에서는 모델 크기와 창발 능력의 관계를 체계적으로 분석했습니다.

실전 예제: 파운데이션 모델 활용하기

이론은 충분합니다. 실제로 어떻게 사용하는지 살펴볼까요?

예제 1: Sentiment Analysis (감성 분석)

과거에는 감성 분석을 위해 수천 개의 레이블된 데이터가 필요했습니다. 이제는?

❌ 전통적 방식

# 1. 데이터 수집 (수천 개 필요)
train_data = [
    ("This movie is great!", "positive"),
    ("I hate this product", "negative"),
    # ... 5000개 이상
]

# 2. 모델 학습 (수 시간~수 일)
model = SentimentClassifier()
model.train(train_data, epochs=10)

# 3. 예측
result = model.predict("I love this!")

문제점:

  • 데이터 수집과 레이블링에 몇 주 소요
  • 도메인이 바뀌면 다시 처음부터
  • 유지보수 비용 높음

✅ 파운데이션 모델 방식 (Zero-shot)

import openai

# 1. 즉시 사용 (학습 불필요)
prompt = """
Classify the sentiment of this text as positive, negative, or neutral:
Text: "I love this!"
Sentiment:
"""

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": prompt}]
)

print(response.choices[0].message.content)  # "positive"

장점:

  • 코드 5줄로 즉시 작동
  • 데이터 수집 불필요
  • 도메인 변경도 prompt만 수정

예제 2: 도메인 특화 챗봇 (Fine-tuning)

회사의 고객 지원 챗봇을 만든다고 가정해봅시다.

Step 1: 데이터 준비

[
    {
        "messages": [
            {"role": "system", "content": "You are a customer support agent for TechCorp."},
            {"role": "user", "content": "How do I reset my password?"},
            {"role": "assistant", "content": "To reset your password, go to Settings > Security > Reset Password. You'll receive an email with instructions."}
        ]
    },
    {
        "messages": [
            {"role": "system", "content": "You are a customer support agent for TechCorp."},
            {"role": "user", "content": "What's your return policy?"},
            {"role": "assistant", "content": "We offer 30-day returns for all products. Items must be in original condition with tags attached."}
        ]
    }
    // ... 수백 개의 예시
]

전통적 방식에 비해 필요한 데이터가 10분의 1 수준입니다.

Step 2: Fine-tuning

import openai

# 파일 업로드
file = openai.File.create(
    file=open("training_data.jsonl", "rb"),
    purpose='fine-tune'
)

# Fine-tuning 시작
job = openai.FineTuningJob.create(
    training_file=file.id,
    model="gpt-3.5-turbo"
)

# 학습 완료까지 대기 (수 시간)

Step 3: 사용

response = openai.ChatCompletion.create(
    model="ft:gpt-3.5-turbo:your-org:custom-model:id",
    messages=[
        {"role": "system", "content": "You are a customer support agent for TechCorp."},
        {"role": "user", "content": "배송은 얼마나 걸리나요?"}
    ]
)

결과:

  • 일반 GPT-3.5보다 도메인 특화 답변
  • 회사 정책과 톤에 맞는 응답
  • 학습 시간: 몇 시간 (전통적 방식: 몇 주)

예제 3: 이미지 분류 (Vision Foundation Model)

OpenAI의 CLIP 모델을 사용한 zero-shot 이미지 분류:

import torch
import clip
from PIL import Image

# 1. 모델 로드 (사전 학습된 모델)
model, preprocess = clip.load("ViT-B/32")

# 2. 이미지 로드
image = preprocess(Image.open("photo.jpg")).unsqueeze(0)

# 3. 가능한 레이블 정의 (학습 데이터 불필요!)
text = clip.tokenize(["a dog", "a cat", "a bird", "a car"])

# 4. 예측
with torch.no_grad():
    image_features = model.encode_image(image)
    text_features = model.encode_text(text)

    # 유사도 계산
    similarity = (image_features @ text_features.T).softmax(dim=-1)

    values, indices = similarity[0].topk(1)

print(f"Predicted: {['a dog', 'a cat', 'a bird', 'a car'][indices[0]]}")
print(f"Confidence: {values[0].item():.2%}")

놀라운 점:

  • 학습 데이터 0개
  • “a dog”나 “a cat” 같은 텍스트만으로 분류
  • 새로운 카테고리 추가도 텍스트만 바꾸면 끝

전통적 방식이라면:

  1. 각 카테고리별 수천 장의 이미지 수집
  2. 모델 학습 (GPU 서버에서 며칠)
  3. 새 카테고리 추가시 재학습

함정과 주의사항

파운데이션 모델이 만능은 아닙니다. 실무에서 사용할 때 조심해야 할 점들이 있습니다.

1. Hallucination (환각) - 그럴듯한 거짓말

파운데이션 모델의 가장 큰 문제는 없는 사실을 만들어낸다는 것입니다.

실제 사례

질문: "2023년 노벨 물리학상 수상자는 누구인가요?"

GPT-3 (잘못된 답변):
"2023년 노벨 물리학상은 John Smith가 받았습니다.
그는 양자 컴퓨팅 분야에서 혁신적인 업적을 남겼습니다."

문제:

  • John Smith라는 사람은 존재하지 않음
  • 하지만 매우 그럴듯하게 답변
  • 사용자가 사실로 오해할 수 있음

실제 정답: 2023년 노벨 물리학상은 Anne L’Huillier, Pierre Agostini, Ferenc Krausz가 수상했습니다.

왜 환각이 발생할까?

파운데이션 모델은 확률 기반으로 다음 단어를 예측합니다. “사실인가?”를 확인하지 않습니다.

"2023년 노벨 물리학상은" 다음에
- "John" (확률: 0.15)
- "Pierre" (확률: 0.12)
- "Anne" (확률: 0.11)

→ 모델은 가장 확률 높은 단어 선택
→ 하지만 그게 항상 정확한 것은 아님

해결 방법

1) RAG (Retrieval-Augmented Generation)

답변하기 전에 검색:

# 1. 질문 관련 문서 검색
documents = search_knowledge_base(query)

# 2. 검색 결과를 context로 제공
prompt = f"""
Based on the following information:
{documents}

Answer the question: {query}
"""

response = llm.generate(prompt)

2) Citation (출처 명시)

모델에게 출처를 명시하도록 요구:

질문: "2023년 노벨 물리학상 수상자는 누구인가요?"

개선된 Prompt:
"답변할 때 반드시 출처를 명시하세요.
확실하지 않으면 '잘 모르겠습니다'라고 답하세요."

→ 모델: "죄송하지만 확실한 정보가 없어 답변드리기 어렵습니다."

3) Fact-checking Pipeline

중요한 사실은 외부 API로 검증:

answer = llm.generate(query)
is_factual = fact_checker.verify(answer)

if not is_factual:
    return "답변을 확인할 수 없습니다. 공식 자료를 참고해주세요."

2. Bias (편향) - 데이터의 편향이 모델에 반영

파운데이션 모델은 인터넷 데이터로 학습되는데, 인터넷에는 편향이 존재합니다.

실제 연구 사례

2021년 OpenAI의 GPT-3 연구:

  • “The CEO is a…” → “man” (남성 편향)
  • “The nurse is a…” → “woman” (여성 편향)

2019년 Google의 BERT 연구:

  • “He is a doctor” vs “She is a doctor”
  • 전자가 더 높은 확률로 예측됨

왜 편향이 생길까?

[인터넷 데이터]
    ↓
 (편향 포함)
    ↓
[파운데이션 모델]
    ↓
 (편향 학습)
    ↓
   [출력]
    ↓
 (편향 반영)

모델은 데이터를 있는 그대로 학습합니다. 데이터에 편향이 있으면, 모델도 편향됩니다.

완화 방법

1) Debiasing 기법

학습 단계에서 편향 제거:

  • 균형 잡힌 데이터 큐레이션
  • 편향 감지 및 제거 알고리즘
  • 다양성 있는 학습 데이터

2) Prompt Engineering

# ❌ 편향 유발 가능한 prompt
"Write a story about a CEO"

# ✅ 중립적 prompt
"Write a story about a CEO. Ensure diverse representation
of gender, ethnicity, and background."

3) Human Oversight

중요한 결정에는 항상 인간 검토:

  • 채용, 대출 심사 등 critical 영역
  • 모델 출력을 최종 결정이 아닌 참고 자료로 활용

3. 비용과 레이턴시 - 성능에는 대가가 따른다

파운데이션 모델은 강력하지만, 비용과 속도 측면에서 trade-off가 있습니다.

비용 예시 (2024년 기준)

GPT-4:

  • 입력: $0.03 / 1K tokens
  • 출력: $0.06 / 1K tokens

GPT-3.5-turbo:

  • 입력: $0.0005 / 1K tokens
  • 출력: $0.0015 / 1K tokens
# 예: 고객 지원 챗봇이 하루 10,000 대화 처리
# 평균 대화당 500 tokens

# GPT-4 사용 시
daily_cost = 10000 * (500/1000) * 0.06 = $300/day
monthly_cost = $300 * 30 = $9,000/month

# GPT-3.5 사용 시
daily_cost = 10000 * (500/1000) * 0.0015 = $7.5/day
monthly_cost = $7.5 * 30 = $225/month

레이턴시 문제

import time

start = time.time()
response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": prompt}]
)
end = time.time()

print(f"Response time: {end - start:.2f}s")
# 일반적으로 2-5초

실시간 대화에는 괜찮지만, 대량 처리에는 문제:

  • 1000개 요청 처리: 2-5초 × 1000 = 30분~1시간

최적화 전략

1) Tiered Approach (계층적 접근)

def get_response(query):
    # 1단계: 간단한 질문은 작은 모델
    if is_simple(query):
        return gpt_3_5.generate(query)  # 빠르고 저렴

    # 2단계: 복잡한 질문만 큰 모델
    else:
        return gpt_4.generate(query)  # 느리고 비싸지만 정확

2) Caching (캐싱)

cache = {}

def cached_generate(prompt):
    # 이전에 같은 질문 있었는지 확인
    if prompt in cache:
        return cache[prompt]  # API 호출 없이 즉시 반환

    # 없으면 API 호출
    response = llm.generate(prompt)
    cache[prompt] = response
    return response

FAQ 같이 반복되는 질문이 많은 경우 비용 90% 이상 절감 가능.

3) Batch Processing (배치 처리)

# ❌ 하나씩 처리 (느림)
for item in items:
    result = llm.generate(item)

# ✅ 배치로 처리 (빠름)
results = llm.generate_batch(items, batch_size=10)

OpenAI의 Batch API는 50% 할인 제공 (대신 24시간 이내 결과).

4. 프롬프트 민감도 - 미묘한 차이가 큰 영향

같은 의미라도 프롬프트를 어떻게 작성하느냐에 따라 결과가 크게 달라집니다.

실험

# 프롬프트 1
prompt1 = "Translate to Korean: Hello"
 "안녕"

# 프롬프트 2
prompt2 = "Translate the following English text to Korean:\nEnglish: Hello\nKorean:"
 "안녕하세요"

# 프롬프트 3
prompt3 = "You are a professional translator. Translate to Korean:\nHello"
 "안녕하세요"

미묘한 차이인데 결과가 다릅니다!

프롬프트 엔지니어링 팁

명확한 지시:

# ❌ 모호함
"Write about dogs"

# ✅ 명확함
"Write a 200-word informative article about dog breeds,
focusing on their characteristics and care requirements."

예시 제공 (Few-shot):

prompt = """
Classify sentiment:

Example 1:
Text: "I love this product!"
Sentiment: positive

Example 2:
Text: "Terrible quality"
Sentiment: negative

Now classify:
Text: "It's okay, nothing special"
Sentiment:
"""

역할 부여:

"You are an expert Python developer. Review this code for bugs..."

이것만으로도 코드 리뷰 품질이 크게 향상됩니다.

파운데이션 모델의 미래

파운데이션 모델은 계속 진화하고 있습니다. 어떤 방향으로 발전할까요?

1. Multimodal Models - 여러 형태의 정보를 통합

초기 파운데이션 모델은 텍스트 전용이었습니다. 이제는?

GPT-4V (Vision):

  • 이미지와 텍스트를 동시에 이해
  • “이 사진에서 무엇이 잘못되었나요?” → 시각적 문제 파악

Google’s Gemini:

  • 텍스트, 이미지, 오디오, 비디오 통합
  • 하나의 모델로 모든 형태의 데이터 처리
# 미래의 API 사용 예시
response = gemini.generate(
    text="이 동영상을 요약해주세요",
    video="meeting_recording.mp4"
)
 "회의에서는 Q3 매출 목표, 신제품 출시 일정, 팀 재편성에 대해 논의했습니다."

2. Smaller, Efficient Models - 작지만 강력하게

큰 모델이 항상 좋은 것은 아닙니다. 비용과 속도 때문이죠.

Distillation (증류): 큰 모델의 지식을 작은 모델로 압축

[GPT-4: 1.7T parameters]
        ↓
    [Distillation]
        ↓
[Student Model: 7B parameters]
   (성능 90% 유지)
   (속도 100배 빠름)
   (비용 1/10)

Meta’s LLaMA 2 (7B, 13B):

  • 개인 노트북에서도 실행 가능
  • GPT-3.5 수준 성능
  • 오픈소스로 공개

3. Specialized Foundation Models - 도메인 특화

모든 분야를 다루는 범용 모델 대신, 특정 도메인에 특화된 파운데이션 모델:

의료: Med-PaLM (Google):

  • 의학 시험 문제 85% 정답 (전문의 수준)
  • 의료 기록 분석 및 진단 보조

과학: Galactica (Meta):

  • 과학 논문, 수식, 화학 구조 이해
  • 연구자를 위한 도구

코드: CodeGen, StarCoder:

  • 프로그래밍 언어에 특화
  • GitHub 코드로 학습
  • 실제 프로젝트 수준의 코드 생성

4. Alignment and Safety - 안전하고 윤리적인 AI

파운데이션 모델이 강력해질수록, 안전성과 윤리가 중요해집니다.

RLHF (Reinforcement Learning from Human Feedback): 인간의 피드백으로 모델을 정렬

[기본 모델]
    ↓
[인간 평가자가 출력 순위 매김]
    ↓
[강화학습으로 선호도 학습]
    ↓
[정렬된 모델]

이 기법으로 ChatGPT는 유해한 콘텐츠 생성을 크게 줄였습니다.

Constitutional AI (Anthropic): 모델에게 “헌법”(원칙)을 제공하고, 스스로 평가하고 개선하도록 함

실전 활용: 어떤 모델을 선택할까?

실무에서 파운데이션 모델을 선택할 때 고려사항:

결정 트리

시작: 어떤 작업을 하려고 하나요?

1. 텍스트 생성/이해?
   ├─ 간단한 작업 (FAQ, 분류) → GPT-3.5-turbo, Claude Instant
   ├─ 복잡한 추론 (분석, 창작) → GPT-4, Claude 3 Opus
   └─ 코드 생성 → GPT-4, CodeGen, Codex

2. 이미지 이해?
   ├─ 분류/검색 → CLIP, ALIGN
   └─ 상세 분석 → GPT-4V, Gemini Pro Vision

3. 이미지 생성?
   ├─ 일반 이미지 → DALL-E 3, Midjourney, Stable Diffusion
   └─ 특수 도메인 → Fine-tuned Stable Diffusion

4. 음성?
   ├─ 음성→텍스트 → Whisper
   └─ 텍스트→음성 → Eleven Labs, Azure TTS

5. 비용이 주요 제약?
   ├─ 오픈소스 모델 → LLaMA 2, Mistral, Falcon
   └─ Self-hosting 고려

마치며

파운데이션 모델은 AI 개발의 패러다임을 바꿔놓았습니다. 이제는 “모델을 처음부터 학습시킬 것인가?”가 아니라 “어떤 파운데이션 모델을 어떻게 활용할 것인가?”를 고민하는 시대입니다.

핵심을 정리하면:

  1. 스케일의 힘: 크기가 커질수록 새로운 능력이 창발
  2. 전이 학습의 극한: 한 번 학습, 무한 활용
  3. 자기지도학습: 레이블 없이도 학습 가능
  4. 하지만 완벽하지 않음: 환각, 편향, 비용 문제 존재

실무에서 성공적으로 활용하려면:

  • 작업에 맞는 모델 선택
  • 프롬프트 엔지니어링 숙달
  • 비용과 성능 trade-off 이해
  • 안전장치 (RAG, fact-checking) 구축

파운데이션 모델은 계속 발전하고 있습니다. Multimodal, Efficient, Specialized 모델들이 나오고 있고, 곧 더 강력하면서도 저렴한 모델들이 등장할 것입니다.

중요한 것은 도구를 이해하고 올바르게 사용하는 것입니다. 파운데이션 모델은 강력한 도구이지만, 만능은 아닙니다. 언제 사용하고, 언제 사용하지 말아야 할지 판단하는 능력이 앞으로 더욱 중요해질 것입니다.

참고 자료

논문

공식 문서

실습 자료

추가 학습

댓글