คุยกับ AI ตอนที่ 7: LLM จำ เรียนรู้ หรือเดาคำตอบ
สำรวจ Memorization, Generalization, Overfitting, Data Contamination และ Hallucination เพื่อเข้าใจทั้งความสามารถและข้อจำกัดของ LLM
ตอนที่ 7 จาก 11 ตอนในชุด คุยกับ AI: จากการ Train LLM ถึง AGI
บันทึกบทสนทนาระหว่าง นพ.สุทธิศักดิ์ เด่นดวงใจ กับ ChatGPT-5.6 Reasoning Instant จากแชตต้นฉบับ คงคำอธิบายและตัวอย่างของ ChatGPT ไว้ โดยปรับหัวข้อ ตาราง และสัญลักษณ์สมการให้อ่านบนเว็บได้สะดวก
ผม: เล่าต่อ
ChatGPT-5.6 Reasoning Instant:
ได้ครับ 🧠 คราวนี้เข้าเรื่องที่ทำให้หลายคนเข้าใจ LLM ผิดมากที่สุด:
LLM “จำ” สิ่งที่อ่านตอน Train หรือมัน “เรียนรู้” กันแน่?
คำตอบคือ ทั้งสองอย่าง แต่เป็นคนละปรากฏการณ์ และเส้นแบ่งไม่ได้คมกริบ
1. เริ่มจาก Memorization
สมมติ training data มีประโยคนี้ซ้ำเป็นจำนวนมาก:
The capital of France is Paris.
หลัง training ถ้าถาม:
What is the capital of France?
โมเดลตอบ:
Paris
แต่จาก output อย่างเดียว เราไม่สามารถสรุปง่าย ๆ ว่าข้างในมี record:
France → Paris
มันอาจเรียนรู้ representations จากข้อความจำนวนมหาศาลที่สัมพันธ์กัน:
France
├─ Paris
├─ Europe
├─ French
├─ Eiffel Tower
└─ ...
แต่ในบางกรณี neural network สามารถ memorize sequence เฉพาะเจาะจง จาก training data ได้จริง โดยเฉพาะข้อมูลที่ซ้ำมากหรือมีลักษณะโดดเด่น
2. Memorization กับ Generalization ต่างกันอย่างไร?
สมมติ training data มี:
2 + 2 = 4
3 + 5 = 8
7 + 6 = 13
แล้วถาม:
438 + 217 = ?
ถ้าโมเดลตอบ 655 เพราะเคยเห็นข้อความนี้ตรง ๆ:
Memorization
แต่ถ้ามันไม่เคยเห็น 438 + 217 และยังหาคำตอบได้:
Generalization
นี่คือสิ่งที่เราต้องการมากกว่า
Training examples
↓
learn underlying pattern
↓
New unseen problem
↓
Correct answer
3. Overfitting คืออีกด้านของเรื่อง
สมมติผมมี training set:
Question 1 → A
Question 2 → C
Question 3 → B
...
โมเดลจำมันหมดจน training accuracy:
100%
ดูเทพมาก 🧙
แต่เอาข้อสอบใหม่มา:
40%
นี่คือ overfitting
มันเก่ง training set แต่ generalize ไม่ดี
เราจึงแบ่งข้อมูล เช่น:
Dataset
│
├── Training set
│
├── Validation set
│
└── Test set
หลักการสำคัญคือ test data ไม่ควรถูกใช้ในการ train
4. แล้ว LLM ใหญ่ ๆ ทำไมไม่ Overfit Internet ทั้งก้อน?
จริง ๆ เรื่องซับซ้อนกว่านั้น แต่เหตุผลหนึ่งคือข้อมูลมหาศาลและหลากหลายมาก
สมมติมีข้อความเกี่ยวกับแรงโน้มถ่วง:
Newton described gravity...
F = Gm₁m₂/r²
Planets orbit...
The Moon...
Falling objects...
Orbital mechanics...
วิธีที่มีประโยชน์ต่อ loss ไม่ใช่จำทุกหน้าอย่างเดียว แต่คือสร้าง representations ที่ capture regularities ระหว่างข้อมูลเหล่านั้นด้วย
เกิดสิ่งประมาณ:
gravity
│
┌────────┼────────┐
↓ ↓ ↓
mass distance force
│ │ │
└────────┼────────┘
↓
relationships
นี่คือเหตุผลที่ LLM สามารถตอบคำถามในรูปแบบที่ไม่เคยปรากฏตรง ๆ ใน training data ได้
5. แต่ LLM ก็จำได้จริง
ตรงนี้ไม่ควรโรยน้ำตาลให้หวานเกินไป
โมเดลสามารถ memorize ข้อมูลบางอย่างจาก training set ได้ โดยเฉพาะ sequence ที่:
- ปรากฏซ้ำมาก
- มีความโดดเด่น
- predictable สูง (มีคำชี้แจงเพิ่มเติมเกี่ยวกับเกณฑ์นี้)
- หรือมีเงื่อนไขอื่นที่ทำให้ถูกเรียนรู้อย่างแข็งแรง
ดังนั้นผู้พัฒนาโมเดลต้องสนใจเรื่อง:
Deduplication
Privacy filtering
Copyright
Data governance
Memorization evaluation
เพราะการพูดว่า:
“LLM ไม่จำอะไรเลย มันเรียนแต่ patterns”
ก็ไม่ถูก
6. Data Deduplication สำคัญมาก
สมมติ Internet dataset มีบทความเดียวกันถูก copy ไป 10,000 เว็บ
Article X
Article X
Article X
Article X
...
× 10,000
ถ้าไม่ deduplicate ข้อมูลนี้จะมีน้ำหนักผิดธรรมชาติ
โมเดลได้รับ signal ซ้ำ ๆ ว่า:
ข้อความนี้สำคัญสุด ๆ
จึงมี preprocessing pipeline เช่น:
Raw Web
↓
Parsing
↓
Language detection
↓
Quality filtering
↓
Safety / policy filtering
↓
Deduplication
↓
Dataset mixture
↓
Training
การสร้าง dataset จึงเป็น engineering/research problem ใหญ่มาก ไม่ใช่แค่ wget Internet แล้วโยนเข้า GPU 😆
7. Data Mixture ก็สำคัญ
สมมติ dataset เป็น:
99.9% Reddit comments
0.1% ทุกอย่างที่เหลือ
คุณก็พอจินตนาการบุคลิกของโมเดลได้ 😅
ผู้สร้างต้องตัดสินใจว่าจะผสม:
Web
Books
Code
Math
Science
Reference
Multilingual
High-quality curated data
Synthetic data
...
ในสัดส่วนอย่างไร
ดังนั้น:
Data quality สามารถสำคัญพอ ๆ กับ Data quantity
ข้อมูล 1 ล้านล้าน token ไม่ได้ดีโดยอัตโนมัติกว่าข้อมูล 500 พันล้าน token ที่คัดอย่างดี
8. Synthetic Data คืออะไร?
น่าสนใจมากสำหรับ LLM รุ่นใหม่
แทนที่จะใช้แต่ข้อความมนุษย์:
Human data
↓
Training
สามารถใช้โมเดลสร้าง training examples:
Strong model
↓
Generate problems
Generate solutions
Generate explanations
Generate code
↓
Verify / filter
↓
Training data
เช่นสร้างโจทย์ programming:
Problem
↓
Candidate solution
↓
Compile
↓
Unit tests
↓
PASS
↓
Keep
ถ้า fail:
🗑️
ตรงนี้ดีมาก เพราะมี verifier
9. แต่ Synthetic Data มีพิษได้เหมือนกัน ☣️
สมมติ AI สร้างข้อมูลผิด:
Model
↓
Wrong answer
↓
Train next model
↓
Wrong pattern reinforced
หรือข้อมูล synthetic มี diversity ต่ำ
สุดท้ายโมเดลอาจเรียนรู้โลกที่ถูกกรองผ่านโมเดลรุ่นก่อนมากเกินไป
ดังนั้นไม่ใช่:
Synthetic = cheap unlimited intelligence
แต่ต้องมี:
Generation
+
Filtering
+
Verification
+
Diversity
+
Human / real-world grounding
10. แล้ว Benchmark Contamination คืออะไร?
สมมติมี benchmark:
Question:
If Alice has...
เราเอาไว้ทดสอบว่าโมเดล reasoning เก่งแค่ไหน
แต่บังเอิญคำถามและเฉลยนี้อยู่ใน training data
แล้วโมเดลตอบถูก
เราอาจประกาศ:
🎉 Reasoning score 98%!
แต่จริง ๆ บางส่วนอาจเป็น:
Question
↓
seen during training
↓
memorized/reconstructed answer
ไม่ได้แสดง generalization เท่าที่คิด
นี่เรียกว่า data contamination
11. Benchmark จึงมีวัน "หมดฤทธิ์"
Benchmark ที่ดังมากถูกโพสต์บน:
GitHub
Papers
Blogs
Reddit
Tutorials
Stack Overflow
ไม่กี่ปีต่อมา ข้อมูลเกี่ยวกับ benchmark นั้นเต็ม Internet
การสร้าง training dataset รุ่นใหม่จึงต้องระวังมากขึ้น
นี่เป็นเหตุผลหนึ่งที่ evaluation สมัยใหม่ต้องใช้:
Private tests
New problems
Dynamic evaluations
Real-world tasks
Agent environments
แทนที่จะเชื่อ leaderboard ตัวเดียว
12. แล้ว Hallucination เกิดจากอะไร?
ตอนนี้ทุกอย่างที่เราเรียนมาประกอบกันได้พอดี
LLM ถูก train เพื่อ:
P(next token | context)
มันไม่ได้ถูกสร้างมาโดยพื้นฐานให้ทำ:
LookupTruth(question)
นี่ต่างกันมหาศาล
สมมติถาม:
ใครเขียนหนังสือ The Quantum Duck of Bangkok?
ถ้าหนังสือนี้ไม่มีจริง โมเดลยังต้องสร้าง token ต่อไป
มันอาจสร้าง:
“The book was written by Dr. ...”
เพราะ pattern:
"Who wrote X?"
↓
"X was written by Y."
มีความน่าจะเป็นทางภาษา
ความลื่นไหลของภาษาไม่ได้รับประกันความจริง
นี่คือหัวใจของ hallucination
13. ทำไมมันไม่ตอบ "ไม่รู้" เสมอ?
เพราะ next-token objective ไม่ได้มีตัวแปรภายในแบบ:
knowledge_confidence = 0.00
therefore say "I don't know"
ง่าย ๆ แบบนั้น
Post-training สามารถสอนให้โมเดลแสดง uncertainty ดีขึ้น แต่ปัญหาพื้นฐานยังยาก:
โมเดลต้องรู้ว่า ตัวเองไม่รู้อะไร
ซึ่งยากกว่าการตอบคำถามมาก
14. RAG และ Tools จึงสำคัญอีกครั้ง
แทนที่จะถาม weights:
CEO ของบริษัท X ตอนนี้คือใคร?
เราทำ:
Question
↓
Web/Search
↓
Current authoritative source
↓
Context
↓
LLM
↓
Answer + citation
นี่เปลี่ยนระบบจาก:
"จำได้ไหม?"
เป็น:
"ไปตรวจมา"
สำหรับข้อมูลที่เปลี่ยนแปลงตลอดเวลา แบบหลังเหนือกว่ามาก
15. Code ก็เหมือนกัน
ถาม LLM:
function นี้ถูกไหม?
LLM:
“ดูถูกครับ”
ไม่ดีพอ
ควร:
Code
↓
Compiler
↓
Tests
↓
Static analysis
↓
Runtime
↓
Result
จากนั้นให้ LLM วิเคราะห์ evidence
หลักใหญ่คือ:
ถ้าความจริงตรวจสอบกับโลกภายนอกได้ ก็อย่าพึ่งความจำของ LLM อย่างเดียว
นี่เป็นหลักออกแบบ AI system ที่ดีมาก
16. แล้ว "Knowledge" อยู่ตรงไหนใน weights?
ตรงนี้เราเข้าสู่ Mechanistic Interpretability
นักวิจัยอยากรู้ว่า:
neuron ไหนทำอะไร?
ตอนแรกเราอาจหวังว่าจะพบ:
Neuron 19384
=
"Paris is capital of France"
ของจริงไม่ง่ายแบบนั้น
representation มัก distributed
ข้อมูลหนึ่ง concept อาจเกี่ยวข้องกับ activations จำนวนมาก:
Neuron A
↙ ↘
Neuron B Neuron C
↓ ↓
Neuron D
และ neuron เดียวก็อาจตอบสนองต่อหลาย concept
เรียกปรากฏการณ์บางส่วนว่า superposition
เหมือนเอาความหมายจำนวนมหาศาลมาบีบลงพื้นที่ representation ที่จำกัด
17. แต่เราพบโครงสร้างภายในบางอย่างได้
งาน interpretability พบว่าภายใน neural networks สามารถมี features/circuits ที่สัมพันธ์กับแนวคิดหรือพฤติกรรมบางประเภทได้
เช่นในเชิงแนวคิด:
quotation
code syntax
geographic concepts
sentiment
entities
grammatical relationships
...
แต่ไม่ควรคิดว่าเรามีแผนที่สมอง LLM สมบูรณ์แล้ว
เรายังห่างจาก:
เปิด model
↓
ชี้ทุก parameter
↓
อธิบายได้หมดว่าทำอะไร
มาก
โมเดลขนาดใหญ่ยังเป็นระบบที่เรา สร้างได้เก่งกว่าที่เราอธิบายกลไกภายในได้ครบ
ซึ่งเป็นข้อเท็จจริงที่ทั้งน่าทึ่งและน่าระแวงนิด ๆ 👀
18. ตอนนี้เรามีภาพครบตั้งแต่ข้อมูลจนถึงคำตอบแล้ว
Internet / Books / Code / Data
↓
Clean + Deduplicate
↓
Tokenize
↓
══════════════════════════════
PRE-TRAINING
══════════════════════════════
↓
Learn patterns
↓
Memorization +
Generalization
↓
Base Model
↓
══════════════════════════════
POST-TRAINING
══════════════════════════════
↓
Instruction following
Preference learning
Reasoning / RL
Tool use
Safety
↓
Assistant Model
↓
══════════════════════════════
INFERENCE
══════════════════════════════
↓
Prompt + Context + Memory
↓
Reasoning compute
↓
Retrieval / Tools
↓
Verification
↓
Answer
และตรงนี้มีคำถามต่อที่ลึกขึ้นอีกระดับหนึ่ง:
ถ้า LLM คือ Transformer แล้ว “โมเดล” ที่เราเรียกว่า GPT-5.6, Claude, Gemini ฯลฯ จริง ๆ ประกอบด้วยอะไรบ้าง?
เพราะในระบบ AI สมัยใหม่ สิ่งที่เราเรียกชื่อว่า “model” ในหน้า product อาจไม่ควรถูกจินตนาการว่าเป็น neural network ก้อนเดียวรับ prompt แล้วพ่นคำตอบ เสมอไป
ขั้นต่อไปเราสามารถแกะตั้งแต่ Tokenizer → Embedding → Transformer Block → Attention → MLP → Residual Stream → Logits → Softmax → Sampling แล้วตาม token หนึ่งตัวตั้งแต่มันเข้าประตูจนกลายเป็นคำตอบบนหน้าจอได้เลย 🔬🧠
หมายเหตุประกอบการอ่าน
คำชี้แจงเพิ่มเติมจากบทสนทนา: ข้อความ “predictable สูง” ในหัวข้อ “แต่ LLM ก็จำได้จริง” ไม่ควรใช้เป็นเกณฑ์พิสูจน์การจำข้อมูลจากชุดฝึกโดยลำพัง ข้อความที่เดาง่ายอาจมี probability สูงได้จากรูปแบบทั่วไปที่โมเดลเรียนรู้ ปัจจัยอย่างความถี่ของตัวอย่าง ความหายากหรือรูปแบบเฉพาะเจาะจง ขนาดโมเดล และบริบทที่ใช้กระตุ้น ล้วนเกี่ยวข้องกับการดึงข้อความที่โมเดลจำจากชุดฝึกกลับมาได้
อ่านงานวิจัยต้นฉบับ: Extracting Training Data from Large Language Models และ The Secret Sharer
← ตอนก่อนหน้า: จาก Base Model มาเป็น Assistant
ตอนถัดไป: ตาม token ผ่าน Transformer ทีละขั้น →
อ่านทั้งชุด
- คุยกับ AI ตอนที่ 1: การ Train LLM คืออะไร
- คุยกับ AI ตอนที่ 2: ทาย token ถัดไป แล้วเขียนโปรแกรมได้อย่างไร
- คุยกับ AI ตอนที่ 3: Context, Attention และความจำระหว่างคุย
- คุยกับ AI ตอนที่ 4: ทำไมคิดนานขึ้นจึงอาจตอบได้ดีขึ้น
- คุยกับ AI ตอนที่ 5: GPU, VRAM และโครงสร้างพื้นฐานที่ใช้ฝึก LLM
- คุยกับ AI ตอนที่ 6: จาก Base Model มาเป็น Assistant
- คุยกับ AI ตอนที่ 7: LLM จำ เรียนรู้ หรือเดาคำตอบ (ตอนนี้)
- คุยกับ AI ตอนที่ 8: ตาม token ผ่าน Transformer ทีละขั้น
- คุยกับ AI ตอนที่ 9: จาก LLM สู่ระบบ AI และ Agent
- คุยกับ AI ตอนที่ 10: เพิ่ม compute ให้ตอนฝึกหรือตอนตอบ
- คุยกับ AI ตอนที่ 11: จาก LLM ที่เก่งขึ้นไปสู่คำถามเรื่อง AGI