Foundation Model νŒ¨λŸ¬λ‹€μž„

Foundation Model νŒ¨λŸ¬λ‹€μž„

ν•™μŠ΅ λͺ©ν‘œ

  • Foundation Model의 μ •μ˜μ™€ νŠΉμ§• 이해
  • 전톡적 MLμ—μ„œ Foundation Model둜의 νŒ¨λŸ¬λ‹€μž„ μ „ν™˜ νŒŒμ•…
  • In-context Learningκ³Ό Emergent Capabilities κ°œλ… μŠ΅λ“
  • μ£Όμš” Foundation Model 계보 νŒŒμ•…

1. Foundation Modelμ΄λž€?

1.1 μ •μ˜

Foundation Model(기반 λͺ¨λΈ)은 2021λ…„ Stanford HAIμ—μ„œ μ œμ•ˆν•œ μš©μ–΄λ‘œ, λ‹€μŒ νŠΉμ§•μ„ κ°€μ§„ λͺ¨λΈμ„ μ˜λ―Έν•©λ‹ˆλ‹€:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Foundation Model μ •μ˜                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  1. λŒ€κ·œλͺ¨ λ°μ΄ν„°λ‘œ 사전 ν•™μŠ΅ (Pre-trained on broad data)         β”‚
β”‚     - μˆ˜μ‹­μ–΅~수쑰 ν† ν°μ˜ ν…μŠ€νŠΈ                                   β”‚
β”‚     - μˆ˜μ–΅~μˆ˜μ‹­μ–΅ μž₯의 이미지                                     β”‚
β”‚                                                                 β”‚
β”‚  2. λ‹€μ–‘ν•œ ν•˜μœ„ μž‘μ—…μ— 적응 κ°€λŠ₯ (Adaptable to many tasks)        β”‚
β”‚     - ν•˜λ‚˜μ˜ λͺ¨λΈλ‘œ λΆ„λ₯˜, 생성, QA, λ²ˆμ—­ λ“± μˆ˜ν–‰                   β”‚
β”‚     - Fine-tuning λ˜λŠ” Prompting으둜 적응                        β”‚
β”‚                                                                 β”‚
β”‚  3. λ²”μš©μ  ν‘œν˜„ ν•™μŠ΅ (General-purpose representations)           β”‚
β”‚     - Task-agnosticν•œ 지식 인코딩                                β”‚
β”‚     - Transfer learning의 κ·ΉλŒ€ν™”                                 β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

1.2 전톡적 ML vs Foundation Model

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            전톡적 Machine Learning νŒŒμ΄ν”„λΌμΈ                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  Task A ───► Data A ───► Model A ───► Deploy A                  β”‚
β”‚  Task B ───► Data B ───► Model B ───► Deploy B                  β”‚
β”‚  Task C ───► Data C ───► Model C ───► Deploy C                  β”‚
β”‚                                                                 β”‚
β”‚  β€’ 각 νƒœμŠ€ν¬λ§ˆλ‹€ 별도 데이터 μˆ˜μ§‘                                  β”‚
β”‚  β€’ 각 νƒœμŠ€ν¬λ§ˆλ‹€ 별도 λͺ¨λΈ ν•™μŠ΅                                    β”‚
β”‚  β€’ νƒœμŠ€ν¬ κ°„ 지식 곡유 μ œν•œμ                                       β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Foundation Model νŒŒμ΄ν”„λΌμΈ                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                          β”‚
β”‚  Massive Data ───► β”‚ Foundation Model β”‚                         β”‚
β”‚  (Web-scale)       β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜                          β”‚
β”‚                             β”‚                                   β”‚
β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                    β”‚
β”‚              β–Ό              β–Ό              β–Ό                    β”‚
β”‚         Adapt A        Adapt B        Adapt C                   β”‚
β”‚         (Fine-tune)    (Prompt)       (LoRA)                    β”‚
β”‚              β”‚              β”‚              β”‚                    β”‚
β”‚              β–Ό              β–Ό              β–Ό                    β”‚
β”‚         Task A         Task B         Task C                    β”‚
β”‚                                                                 β”‚
β”‚  β€’ ν•˜λ‚˜μ˜ λŒ€κ·œλͺ¨ 사전 ν•™μŠ΅                                         β”‚
β”‚  β€’ κ²½λŸ‰ μ μ‘μœΌλ‘œ λ‹€μ–‘ν•œ νƒœμŠ€ν¬ μˆ˜ν–‰                                 β”‚
β”‚  β€’ νƒœμŠ€ν¬ κ°„ 지식 전이 κ·ΉλŒ€ν™”                                      β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

1.3 Foundation Model의 μ’…λ₯˜

λΆ„λ₯˜ λŒ€ν‘œ λͺ¨λΈ μž…λ ₯/좜λ ₯
Language Models GPT-4, LLaMA, Claude ν…μŠ€νŠΈ β†’ ν…μŠ€νŠΈ
Vision Models ViT, DINOv2, SAM 이미지 β†’ νŠΉμ§•/μ„Έκ·Έλ©˜ν…Œμ΄μ…˜
Multimodal CLIP, LLaVA, GPT-4V ν…μŠ€νŠΈ+이미지 β†’ ν…μŠ€νŠΈ
Generative Stable Diffusion, DALL-E ν…μŠ€νŠΈ β†’ 이미지
Audio Whisper, AudioLM μ˜€λ””μ˜€ ↔ ν…μŠ€νŠΈ
Code Codex, CodeLlama ν…μŠ€νŠΈ β†’ μ½”λ“œ

2. νŒ¨λŸ¬λ‹€μž„ μ „ν™˜μ˜ 역사

2.1 νƒ€μž„λΌμΈ

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Foundation Model 역사                             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 2017 β”‚ Transformer (Vaswani et al.) - Self-attention λ„μž…            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 2018 β”‚ BERT (Google) - Masked LM으둜 μ–‘λ°©ν–₯ λ¬Έλ§₯ ν•™μŠ΅                 β”‚
β”‚      β”‚ GPT-1 (OpenAI) - 첫 λŒ€κ·œλͺ¨ autoregressive LM                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 2019 β”‚ GPT-2 (1.5B params) - "Too dangerous to release"              β”‚
β”‚      β”‚ T5 - Text-to-Text Transfer Transformer                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 2020 β”‚ GPT-3 (175B) - In-context Learning 발견                       β”‚
β”‚      β”‚ Scaling Laws λ…Όλ¬Έ (Kaplan et al.)                             β”‚
β”‚      β”‚ ViT - Vision에 Transformer 적용                               β”‚
β”œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 2021 β”‚ CLIP - Vision-Language μ—°κ²°                                   β”‚
β”‚      β”‚ DALL-E - ν…μŠ€νŠΈβ†’μ΄λ―Έμ§€ 생성                                    β”‚
β”‚      β”‚ "Foundation Models" μš©μ–΄ 탄생 (Stanford HAI)                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 2022 β”‚ ChatGPT - LLM의 λŒ€μ€‘ν™”                                        β”‚
β”‚      β”‚ Chinchilla - Compute-optimal Scaling                         β”‚
β”‚      β”‚ Stable Diffusion - μ˜€ν”ˆμ†ŒμŠ€ 이미지 생성                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 2023 β”‚ GPT-4 - Multimodal Foundation Model                          β”‚
β”‚      β”‚ LLaMA - μ˜€ν”ˆμ†ŒμŠ€ LLM 혁λͺ…                                      β”‚
β”‚      β”‚ SAM - Promptable Vision Foundation Model                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 2024 β”‚ GPT-4o, Claude 3, Gemini 1.5 - μ„±λŠ₯ 경쟁                      β”‚
β”‚      β”‚ LLaMA 3, Mistral - μ˜€ν”ˆμ†ŒμŠ€ λ°œμ „                               β”‚
β”‚      β”‚ Sora - Video Foundation Model                                β”‚
β””β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2.2 μ£Όμš” μ „ν™˜μ 

(1) GPT-3의 In-context Learning (2020)

GPT-3λŠ” Few-shot learning의 κ°€λŠ₯성을 보여주며 νŒ¨λŸ¬λ‹€μž„ μ „ν™˜μ˜ 계기가 λ˜μ—ˆμŠ΅λ‹ˆλ‹€:

# Traditional Approach: 각 νƒœμŠ€ν¬λ§ˆλ‹€ Fine-tuning ν•„μš”
model = load_pretrained("bert-base")
model = fine_tune(model, sentiment_dataset, epochs=3)
result = model.predict("This movie was great!")

# GPT-3 In-context Learning: ν”„λ‘¬ν”„νŠΈλ§ŒμœΌλ‘œ ν•™μŠ΅
prompt = """
Classify the sentiment:
Text: "I love this product!" β†’ Positive
Text: "Terrible experience." β†’ Negative
Text: "This movie was great!" β†’
"""
result = gpt3.generate(prompt)  # "Positive"

(2) CLIP의 Vision-Language μ—°κ²° (2021)

CLIP은 이미지와 ν…μŠ€νŠΈλ₯Ό 같은 곡간에 λ§€ν•‘ν•˜μ—¬ zero-shot λΆ„λ₯˜λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν–ˆμŠ΅λ‹ˆλ‹€:

# Zero-shot Image Classification with CLIP
import clip

model, preprocess = clip.load("ViT-B/32")

# 이미지와 ν…μŠ€νŠΈλ₯Ό 같은 곡간에 μž„λ² λ”©
image_features = model.encode_image(preprocess(image))
text_features = model.encode_text(clip.tokenize(["a dog", "a cat", "a bird"]))

# μœ μ‚¬λ„λ‘œ λΆ„λ₯˜ (ν•™μŠ΅ 없이!)
similarity = (image_features @ text_features.T).softmax(dim=-1)
# [0.95, 0.03, 0.02] β†’ "a dog"

(3) ChatGPT의 RLHF (2022)

ChatGPTλŠ” RLHF(Reinforcement Learning from Human Feedback)둜 μ‚¬λžŒκ³Ό μ •λ ¬λœ 응닡을 생성:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    ChatGPT ν•™μŠ΅ κ³Όμ •                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  Step 1: Pre-training (GPT-3.5 base)                            β”‚
β”‚          μ›Ή ν…μŠ€νŠΈλ‘œ λ‹€μŒ 토큰 예츑 ν•™μŠ΅                           β”‚
β”‚                         β”‚                                       β”‚
β”‚                         β–Ό                                       β”‚
β”‚  Step 2: Supervised Fine-tuning (SFT)                           β”‚
β”‚          μ‚¬λžŒμ΄ μž‘μ„±ν•œ 쒋은 μ‘λ‹΅μœΌλ‘œ ν•™μŠ΅                           β”‚
β”‚                         β”‚                                       β”‚
β”‚                         β–Ό                                       β”‚
β”‚  Step 3: Reward Model Training                                  β”‚
β”‚          응닡 쌍의 μ„ ν˜Έλ„λ₯Ό μ˜ˆμΈ‘ν•˜λŠ” λͺ¨λΈ ν•™μŠ΅                      β”‚
β”‚                         β”‚                                       β”‚
β”‚                         β–Ό                                       β”‚
β”‚  Step 4: RLHF with PPO                                          β”‚
β”‚          Reward Model을 λ³΄μƒμœΌλ‘œ μ •μ±… μ΅œμ ν™”                       β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

3. In-context Learning (ICL)

3.1 κ°œλ…

In-context Learning은 λͺ¨λΈ κ°€μ€‘μΉ˜λ₯Ό μ—…λ°μ΄νŠΈν•˜μ§€ μ•Šκ³  ν”„λ‘¬ν”„νŠΈ λ‚΄ μ˜ˆμ‹œλ§ŒμœΌλ‘œ νƒœμŠ€ν¬λ₯Ό μˆ˜ν–‰ν•˜λŠ” λŠ₯λ ₯μž…λ‹ˆλ‹€.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    In-context Learning μ’…λ₯˜                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  Zero-shot:  "Translate to French: Hello"                       β”‚
β”‚              β†’ "Bonjour"                                        β”‚
β”‚                                                                 β”‚
β”‚  One-shot:   "English: Hello β†’ French: Bonjour                  β”‚
β”‚               English: Goodbye β†’"                               β”‚
β”‚              β†’ "Au revoir"                                      β”‚
β”‚                                                                 β”‚
β”‚  Few-shot:   "English: Hello β†’ French: Bonjour                  β”‚
β”‚               English: Goodbye β†’ French: Au revoir              β”‚
β”‚               English: Thank you β†’ French: Merci                β”‚
β”‚               English: Good morning β†’"                          β”‚
β”‚              β†’ "Bonjour" (λ˜λŠ” "Bon matin")                      β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

3.2 ICL이 μž‘λ™ν•˜λŠ” 이유 (κ°€μ„€λ“€)

"""
κ°€μ„€ 1: Bayesian Inference
- ν”„λ‘¬ν”„νŠΈ μ˜ˆμ‹œλ‘œλΆ€ν„° νƒœμŠ€ν¬ 뢄포λ₯Ό μΆ”λ‘ 
- P(output | input, examples) ∝ P(examples | task) Γ— P(task)

κ°€μ„€ 2: Implicit Gradient Descent
- Transformer의 attention이 μ•”λ¬΅μ μœΌλ‘œ gradient step을 μˆ˜ν–‰
- 메타 ν•™μŠ΅κ³Ό μœ μ‚¬ν•œ λ©”μ»€λ‹ˆμ¦˜

κ°€μ„€ 3: Task Vector Retrieval
- 사전 ν•™μŠ΅ 쀑 ν•™μŠ΅ν•œ νƒœμŠ€ν¬ 벑터λ₯Ό 검색
- ν”„λ‘¬ν”„νŠΈκ°€ μ μ ˆν•œ νƒœμŠ€ν¬ 벑터λ₯Ό ν™œμ„±ν™”
"""

3.3 Few-shot ν”„λ‘¬ν”„νŠΈ μ˜ˆμ‹œ

# 감정 뢄석 Few-shot
sentiment_prompt = """
Analyze the sentiment of the following reviews:

Review: "The food was delicious and the service was excellent!"
Sentiment: Positive

Review: "I waited for an hour and the waiter was rude."
Sentiment: Negative

Review: "It was okay, nothing special but not bad either."
Sentiment: Neutral

Review: "Best experience ever! Will definitely come back!"
Sentiment:"""

# API 호좜
response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": sentiment_prompt}]
)
print(response.choices[0].message.content)  # "Positive"

4. Emergent Capabilities (창발적 λŠ₯λ ₯)

4.1 μ •μ˜

Emergent CapabilitiesλŠ” μž‘μ€ λͺ¨λΈμ—μ„œλŠ” μ—†λ‹€κ°€ νŠΉμ • 규λͺ¨ μ΄μƒμ—μ„œ κ°‘μžκΈ° λ‚˜νƒ€λ‚˜λŠ” λŠ₯λ ₯μž…λ‹ˆλ‹€.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    창발적 λŠ₯λ ₯의 νŠΉμ§•                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  Performance                                                    β”‚
β”‚       β”‚                                                         β”‚
β”‚   100%β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β—‹β”€β”€β”€β”€β”€ λŒ€ν˜• λͺ¨λΈ  β”‚
β”‚       β”‚                                      β•±                  β”‚
β”‚       β”‚                                    β•±                    β”‚
β”‚       β”‚                              β•±                          β”‚
β”‚    50%β”œβ”€ Β· Β· Β· Β· Β· Β· Β· Β· Β· Β· Β· Β·β•±Β· Β· Β· Β· Β· Β· Β· Β· Β· Β· Β· Β· Β· Β· Β·  β”‚
β”‚       β”‚                      β•±    ↑ Phase Transition            β”‚
β”‚       β”‚                    β•±      (κ°‘μž‘μŠ€λŸ¬μš΄ μ„±λŠ₯ ν–₯상)           β”‚
β”‚       │──────────────────○─────────────────────────── μ†Œν˜• λͺ¨λΈ  β”‚
β”‚     0%β”œβ”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β–Ά         β”‚
β”‚       β”‚      10B    50B    100B   200B   500B     Parameters   β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

4.2 λŒ€ν‘œμ μΈ 창발적 λŠ₯λ ₯

λŠ₯λ ₯ μ„€λͺ… μΆœν˜„ 규λͺ¨ (λŒ€λž΅)
Arithmetic λ‹€μžλ¦¬ λ§μ…ˆ/κ³±μ…ˆ ~10B params
Chain-of-Thought 단계적 μΆ”λ‘  ~60B params
Word Unscrambling μ„žμΈ 단어 볡원 ~60B params
Multi-step Math λ³΅μž‘ν•œ μˆ˜ν•™ 문제 ~100B params
Code Generation λ³΅μž‘ν•œ μ½”λ“œ μž‘μ„± ~100B params

4.3 Chain-of-Thought (CoT) Prompting

# Without CoT - μ’…μ’… μ‹€νŒ¨
prompt_direct = """
Q: 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?
A:"""
# GPT-3 (small): "8" (ν‹€λ¦Ό)

# With CoT - 단계적 μΆ”λ‘ μœΌλ‘œ 정확도 ν–₯상
prompt_cot = """
Q: 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?
A: Let's think step by step.
   Roger started with 5 tennis balls.
   He bought 2 cans, each with 3 balls, so 2 Γ— 3 = 6 balls.
   Total: 5 + 6 = 11 tennis balls.
   The answer is 11.

Q: The cafeteria had 23 apples. If they used 20 to make lunch and
   bought 6 more, how many apples do they have?
A: Let's think step by step."""
# GPT-3: "They started with 23, used 20, so 23-20=3.
#         Then bought 6 more: 3+6=9. The answer is 9." (μ •λ‹΅)

5. Foundation Model의 핡심 ꡬ성 μš”μ†Œ

5.1 μ•„ν‚€ν…μ²˜ 비ꡐ

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    μ£Όμš” μ•„ν‚€ν…μ²˜ νŒ¨ν„΄                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  Encoder-only (BERT, DINOv2)                                    β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                    β”‚
β”‚  β”‚ [CLS] Token1 Token2 ... TokenN [SEP]    β”‚                    β”‚
β”‚  β”‚       ↓      ↓      ↓    ↓              β”‚                    β”‚
β”‚  β”‚    β”Œβ”€β”€β”΄β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”           β”‚                    β”‚
β”‚  β”‚    β”‚   Bidirectional Attn   β”‚           β”‚                    β”‚
β”‚  β”‚    β””β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”˜           β”‚                    β”‚
β”‚  β”‚       ↓      ↓      ↓    ↓              β”‚                    β”‚
β”‚  β”‚    Pooled / Token Representations       β”‚                    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β”‚
β”‚  β€’ μ–‘λ°©ν–₯ λ¬Έλ§₯ ν™œμš©                                               β”‚
β”‚  β€’ λΆ„λ₯˜, μž„λ² λ”©μ— 적합                                            β”‚
β”‚                                                                 β”‚
β”‚  Decoder-only (GPT, LLaMA)                                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                    β”‚
β”‚  β”‚ Token1 β†’ Token2 β†’ Token3 β†’ ...          β”‚                    β”‚
β”‚  β”‚   ↓        ↓        ↓                   β”‚                    β”‚
β”‚  β”‚ β”Œβ”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”                 β”‚                    β”‚
β”‚  β”‚ β”‚  Causal (Masked) Attnβ”‚                β”‚                    β”‚
β”‚  β”‚ β””β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”˜                 β”‚                    β”‚
β”‚  β”‚   ↓        ↓        ↓                   β”‚                    β”‚
β”‚  β”‚ Next     Next     Next                  β”‚                    β”‚
β”‚  β”‚ Token    Token    Token                 β”‚                    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β”‚
β”‚  β€’ μžκΈ°νšŒκ·€μ  생성                                                β”‚
β”‚  β€’ ν…μŠ€νŠΈ 생성에 μ΅œμ ν™”                                           β”‚
β”‚                                                                 β”‚
β”‚  Encoder-Decoder (T5, BART)                                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                    β”‚
β”‚  β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”‚                    β”‚
β”‚  β”‚ β”‚ Encoder  │───▢│ Decoder  β”‚            β”‚                    β”‚
β”‚  β”‚ β”‚(Bi-dir)  β”‚    β”‚(Causal)  β”‚            β”‚                    β”‚
β”‚  β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β”‚                    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β”‚
β”‚  β€’ μž…λ ₯ 이해 + 좜λ ₯ 생성 뢄리                                      β”‚
β”‚  β€’ λ²ˆμ—­, μš”μ•½μ— 적합                                              β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

5.2 μ£Όμš” ꡬ성 μš”μ†Œ

"""
Foundation Model의 핡심 ꡬ성 μš”μ†Œ:

1. Self-Attention
   - Query, Key, Value μ—°μ‚°
   - λͺ¨λ“  μœ„μΉ˜ κ°„ 관계 ν•™μŠ΅

2. Feed-Forward Network (FFN)
   - 지식 μ €μž₯μ†Œ μ—­ν• 
   - νŒŒλΌλ―Έν„°μ˜ λŒ€λΆ€λΆ„μ„ μ°¨μ§€

3. Positional Encoding
   - μˆœμ„œ 정보 μ£Όμž…
   - Sinusoidal, Learnable, RoPE λ“±

4. Normalization
   - LayerNorm (BERT, GPT)
   - RMSNorm (LLaMA) - 더 효율적

5. Activation Function
   - GELU (BERT, GPT)
   - SwiGLU (LLaMA) - 더 λ‚˜μ€ μ„±λŠ₯
"""

6. Foundation Model μ‚¬μš©ν•˜κΈ°

6.1 HuggingFace둜 μ‹œμž‘ν•˜κΈ°

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# λͺ¨λΈ λ‘œλ“œ (예: LLaMA-2-7B)
model_name = "meta-llama/Llama-2-7b-hf"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,  # λ©”λͺ¨λ¦¬ μ ˆμ•½
    device_map="auto"           # μžλ™ GPU ν• λ‹Ή
)

# ν…μŠ€νŠΈ 생성
prompt = "The future of AI is"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

outputs = model.generate(
    **inputs,
    max_new_tokens=100,
    temperature=0.7,
    do_sample=True,
    top_p=0.9
)

response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)

6.2 Vision Foundation Model μ‚¬μš©

# DINOv2 - λ²”μš© 이미지 νŠΉμ§• μΆ”μΆœ
import torch
from PIL import Image
from transformers import AutoImageProcessor, AutoModel

processor = AutoImageProcessor.from_pretrained("facebook/dinov2-base")
model = AutoModel.from_pretrained("facebook/dinov2-base")

# 이미지 μž„λ² λ”© μΆ”μΆœ
image = Image.open("image.jpg")
inputs = processor(images=image, return_tensors="pt")

with torch.no_grad():
    outputs = model(**inputs)
    features = outputs.last_hidden_state  # (1, num_patches+1, 768)
    cls_embedding = features[:, 0]        # CLS 토큰 (전체 이미지 ν‘œν˜„)

# 이 μž„λ² λ”©μ„ λΆ„λ₯˜, 검색, μ„Έκ·Έλ©˜ν…Œμ΄μ…˜ 등에 ν™œμš©

6.3 API μ‚¬μš© (OpenAI)

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain foundation models in simple terms."}
    ],
    temperature=0.7,
    max_tokens=500
)

print(response.choices[0].message.content)

7. Foundation Model의 ν•œκ³„μ™€ 도전

7.1 ν˜„μž¬ ν•œκ³„

ν•œκ³„ μ„€λͺ… ν•΄κ²° μ‹œλ„
Hallucination 사싀이 μ•„λ‹Œ 정보 생성 RAG, Grounding
Outdated Knowledge ν•™μŠ΅ 이후 정보 λͺ¨λ¦„ RAG, Fine-tuning
Reasoning Limits λ³΅μž‘ν•œ 논리 μΆ”λ‘  어렀움 CoT, Self-consistency
High Compute Cost ν•™μŠ΅/μΆ”λ‘  λΉ„μš© λ§‰λŒ€ Quantization, Distillation
Safety/Alignment μœ ν•΄ μ½˜ν…μΈ  생성 κ°€λŠ₯ RLHF, Constitutional AI

7.2 연ꡬ λ°©ν–₯

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    미래 연ꡬ λ°©ν–₯                                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                 β”‚
β”‚  1. Efficient Models                                            β”‚
β”‚     └─ Mixture of Experts, Sparse Attention, Quantization       β”‚
β”‚                                                                 β”‚
β”‚  2. Multimodal Integration                                      β”‚
β”‚     └─ Vision + Language + Audio + Code 톡합                    β”‚
β”‚                                                                 β”‚
β”‚  3. Reasoning Enhancement                                       β”‚
β”‚     └─ Test-time Compute (o1), Tree of Thoughts                 β”‚
β”‚                                                                 β”‚
β”‚  4. Continual Learning                                          β”‚
β”‚     └─ 지속적 ν•™μŠ΅, Catastrophic Forgetting ν•΄κ²°                 β”‚
β”‚                                                                 β”‚
β”‚  5. Safety & Alignment                                          β”‚
β”‚     └─ Constitutional AI, Red-teaming, Interpretability         β”‚
β”‚                                                                 β”‚
β”‚  6. Agentic Systems                                             β”‚
β”‚     └─ Tool Use, Multi-Agent, Autonomous Planning               β”‚
β”‚                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

정리

핡심 κ°œλ…

  • Foundation Model: λŒ€κ·œλͺ¨ λ°μ΄ν„°λ‘œ ν•™μŠ΅ν•˜μ—¬ λ‹€μ–‘ν•œ νƒœμŠ€ν¬μ— 적용 κ°€λŠ₯ν•œ λ²”μš© λͺ¨λΈ
  • νŒ¨λŸ¬λ‹€μž„ μ „ν™˜: Task-specific β†’ Pre-train & Adapt
  • In-context Learning: κ°€μ€‘μΉ˜ μ—…λ°μ΄νŠΈ 없이 ν”„λ‘¬ν”„νŠΈλ‘œ ν•™μŠ΅
  • Emergent Capabilities: 규λͺ¨μ— 따라 κ°‘μžκΈ° λ‚˜νƒ€λ‚˜λŠ” λŠ₯λ ₯

λ‹€μŒ 단계


참고 자료

핡심 λ…Όλ¬Έ

  • Bommasani et al. (2021). "On the Opportunities and Risks of Foundation Models"
  • Brown et al. (2020). "Language Models are Few-Shot Learners" (GPT-3)
  • Radford et al. (2021). "Learning Transferable Visual Models From Natural Language Supervision" (CLIP)
  • Wei et al. (2022). "Emergent Abilities of Large Language Models"

μΆ”κ°€ 자료

to navigate between lessons