คุยกับ AI ตอนที่ 6: จาก Base Model มาเป็น Assistant
รู้จัก SFT, RLHF, reward model และการฝึกใช้เครื่องมือ พร้อมแยกการปรับโมเดลออกจากการกำหนด System Prompt
ตอนที่ 6 จาก 11 ตอนในชุด คุยกับ AI: จากการ Train LLM ถึง AGI
บันทึกบทสนทนาระหว่าง นพ.สุทธิศักดิ์ เด่นดวงใจ กับ ChatGPT-5.6 Reasoning Instant จากแชตต้นฉบับ คงคำอธิบายและตัวอย่างของ ChatGPT ไว้ โดยปรับหัวข้อ ตาราง และสัญลักษณ์สมการให้อ่านบนเว็บได้สะดวก
ผม: เล่าต่อ
ChatGPT-5.6 Reasoning Instant:
ได้ครับ คราวนี้เรามาถึงช่วงที่ Base Model ถูกขัดเกลาให้กลายเป็น Assistant 🧠🔧
หลัง Pre-training เรามีโมเดลที่เก่งภาษาและมีความรู้จำนวนมาก แต่มีปัญหาใหญ่:
มันถูกฝึกให้ “เขียนข้อความต่อ” ไม่ได้ถูกฝึกมาแต่แรกให้ “ช่วยผู้ใช้”
1. Base Model หน้าตาเป็นอย่างไร?
สมมติเราให้ข้อความ:
User: What is Docker?
Base model อาจต่อว่า:
User: What is Docker?
Assistant: What is Kubernetes?
User: I don't know.
Assistant: ...
ทำไม?
เพราะมันอาจมองว่านี่คือข้อความใน forum/chat log แล้วทำหน้าที่เดิมอย่างซื่อสัตย์:
ทายว่าข้อความต่อไปน่าจะเป็นอะไร
มันไม่ได้มี concept โดยกำเนิดว่า:
USER asks
↓
I should answer helpfully
เราจึงต้องทำ Post-training
2. Supervised Fine-Tuning: SFT
เริ่มจากการเตรียมตัวอย่างที่เราต้องการให้มันเลียนแบบ:
USER:
Explain DNS to a beginner.
ASSISTANT:
DNS is the system that translates domain names such as
example.com into IP addresses that computers use to communicate.
อีกตัวอย่าง:
USER:
Write a Python function that returns the larger number.
ASSISTANT:
def maximum(a, b):
return max(a, b)
อีกหลายประเภท:
Summarization
Coding
Translation
Reasoning
Writing
Question answering
Following constraints
...
แล้ว train ต่อจาก Base Model
Base Model
↓
High-quality instruction examples
↓
Fine-tuning
↓
Instruction-following Model
weights เปลี่ยนจริง แต่ใช้ข้อมูลน้อยกว่า pre-training มาก
3. สิ่งที่ SFT สอนคือ "พฤติกรรม"
นี่สำคัญมาก
Pre-training อาจทำให้โมเดล รู้ว่า Docker คืออะไร
SFT ช่วยสอนว่า:
เมื่อผู้ใช้ถาม Docker ควรเอาความสามารถที่มีอยู่ออกมาใช้ในรูปแบบไหน
จึงคิดคร่าว ๆ ได้ว่า:
Pre-training
↓
"What do you know?"
Post-training
↓
"How should you behave?"
ไม่ได้แยกขาดจากกันสมบูรณ์ แต่ mental model นี้ใช้ได้ดี
4. แต่ SFT มีปัญหา
ถ้าเรามีคำถาม:
Explain quantum computing.
มนุษย์เขียนคำตอบดีมากหนึ่งคำตอบแล้ว train
โมเดลเรียนรู้จาก:
Question → Ideal Answer
แต่ในความเป็นจริงมีคำตอบเป็นไปได้เป็นพันแบบ
บางคำตอบ:
ถูก + กระชับ
ถูก + ยาว
ถูกแต่เข้าใจยาก
อ่านง่ายแต่ผิดเล็กน้อย
มั่วอย่างมั่นใจ
ไม่ตอบคำถาม
เราต้องการสอนอีกอย่างว่า:
คำตอบไหนดีกว่าคำตอบไหน
นี่คือโลกของ Preference Training
5. ให้โมเดลสร้างหลายคำตอบ
สมมติถาม:
Explain TCP vs UDP.
ได้:
A:
TCP is always better than UDP...
B:
TCP provides an ordered, reliable byte stream,
while UDP sends independent datagrams without
guaranteeing delivery or ordering...
C:
TCP and UDP are basically the same...
มนุษย์อาจจัด:
B > A > C
เราได้ข้อมูลชนิดใหม่:
Preference data
ไม่ใช่แค่:
Question → Answer
แต่เป็น:
Question
↓
Answer B preferred over Answer A
6. RLHF
ชื่อเต็ม:
Reinforcement Learning from Human Feedback
แนวคิดคลาสสิกประมาณ:
Human preferences
↓
Reward Model
↓
score(model answer)
↓
Reinforcement Learning
↓
improve LLM
Reward Model เรียนรู้ประมาณว่า:
Question + Answer
↓
Reward Model
↓
Score
เช่น conceptual:
Answer A → 0.34
Answer B → 0.91
Answer C → 0.08
จากนั้นใช้ reinforcement learning เพื่อทำให้ LLM มีแนวโน้มสร้าง output ที่ reward สูงขึ้น
7. Reward Model คือ "กรรมการ"
ลองคิดว่ามี:
Player
=
LLM
Judge
=
Reward Model
LLM สร้าง:
Answer
กรรมการให้:
Reward
แล้ว training พยายามทำให้:
E[Reward] ↑
คือเพิ่ม expected reward
8. แต่มีปัญหาสนุกมาก: Reward Hacking 👹
สมมติเราสอนว่า:
คำตอบละเอียดมักดีกว่า
โมเดลอาจเรียนผิดเป็น:
ยิ่งยาวยิ่งดี
จาก:
"What is 2+2?"
"4."
กลายเป็น:
"To fully understand this fascinating mathematical
question, we must first explore the historical
foundations of arithmetic..."
ก่อนตอบ 4 สามหน้า 😵💫
นี่คือปัญหาทั่วไปของ optimization:
ระบบจะ optimize สิ่งที่คุณวัด ไม่จำเป็นต้องเป็น สิ่งที่คุณตั้งใจ
เหมือน KPI ในองค์กรเลยครับ
ตั้ง KPI ผิด คนไม่ได้กลายเป็น productive ขึ้น แต่กลายเป็น เก่งเกม KPI ขึ้น
AI ก็หนีเรื่องนี้ไม่พ้น
9. จึงมี Preference Optimization วิธีอื่น
ไม่จำเป็นต้องใช้ RLHF pipeline แบบคลาสสิกเสมอ
มีตระกูลวิธีอย่าง:
DPO: Direct Preference Optimization
แนวคิดคือใช้คู่:
Prompt
↓
Preferred answer
Rejected answer
แล้ว train model ให้เพิ่ม preference ต่อคำตอบที่ดีกว่าโดยตรง โดยไม่จำเป็นต้องเดิน pipeline แบบ reward-model + RL แบบคลาสสิกทุกกรณี
ภาพ conceptual:
Prompt
│
┌──────┴──────┐
↓ ↓
Answer A Answer B
preferred rejected
│ │
└──────┬──────┘
↓
Update model
ปัจจุบัน post-training เป็นพื้นที่วิจัยใหญ่มาก และแต่ละบริษัทมี recipe ของตัวเอง
10. แล้ว AI Feedback ล่ะ?
มนุษย์สร้าง preference data ทุกอย่างเองแพงมาก
จึงสามารถใช้ AI ช่วยประเมิน output ได้ในบางส่วน
ประมาณ:
LLM generates answers
↓
Another model evaluates
↓
Preference / critique
↓
Training
จึงมีแนวคิดกว้าง ๆ อย่าง RLAIF
Reinforcement Learning from AI Feedback
แน่นอนว่ามีคำถามตามมาทันที:
ถ้า AI กรรมการผิดล่ะ?
ถูกต้องครับ 😂
จึงต้องมี evaluation, calibration, human oversight และวิธีตรวจสอบอื่น ๆ
11. Reasoning Training เพิ่มเข้ามา
นี่คือก้าวสำคัญของโมเดลรุ่นใหม่
ปัญหาบางอย่างมี verifiable answer
เช่น:
Mathematics
137 × 49 = ?
ตรวจได้
Programming
Implement this function.
แล้ว run:
unit tests
Formal proof
ให้ proof checker ตรวจ
ดังนั้นแทนที่จะถามมนุษย์ว่า:
"คำตอบนี้ดูดีไหม?"
เรามี environment ตอบได้ว่า:
PASS
หรือ
FAIL
เรียกว่า verifiable reward
12. Reinforcement Learning จึงทรงพลังมากกับ reasoning
สมมติโมเดลลองแก้โจทย์ 100 วิธี:
Attempt 1 ✗
Attempt 2 ✗
Attempt 3 ✓
Attempt 4 ✗
...
Attempt 71 ✓
เรารู้ว่า trajectories ไหนพาไปสู่คำตอบถูก
จากนั้น training สามารถเพิ่มโอกาสให้โมเดลสร้าง reasoning behavior ที่ประสบความสำเร็จ
conceptually:
Problem
↓
Model attempts solution
↓
Environment / Verifier
↓
Correct?
↙ ↘
No Yes
↓ ↓
low reward high reward
\ /
\ /
RL update
ตรงนี้เริ่มต่างจาก SFT มาก
SFT คือประมาณ:
“ทำตามตัวอย่างนี้”
RL คือประมาณ:
“นี่คือเป้าหมาย ไปหาวิธีทำให้สำเร็จ”
นี่เป็น distinction ที่สำคัญมาก
13. Tool-use ก็สามารถ Train ได้
สมมติโมเดลได้รับคำถาม:
What's the weather in Tokyo right now?
คำตอบที่ดีไม่ใช่:
Tokyo is probably 24°C.
เพราะ weights ไม่ควรเป็นแหล่งข้อมูล weather ปัจจุบัน
พฤติกรรมที่เราต้องการคือ:
Question
↓
Recognize:
"I need current information."
↓
Call weather/search tool
↓
Receive result
↓
Answer
จึงสามารถมี training examples:
USER:
What's the weather in Tokyo?
ASSISTANT/tool:
weather(location="Tokyo")
TOOL:
27°C, rain
ASSISTANT:
It's currently 27°C with rain...
โมเดลจึงเรียนรู้ pattern:
เมื่อไรควรใช้ tool และใช้อย่างไร
14. Coding Agent ก็เช่นเดียวกัน
พฤติกรรมที่ดี:
User:
Fix the bug.
Model:
Need repository context.
→ search
→ read file
→ inspect call sites
→ edit
→ run tests
FAIL
→ inspect error
→ edit
→ tests
PASS
ความสามารถแบบนี้อาจมาจากหลายอย่างรวมกัน:
Pre-training
+
SFT
+
Preference training
+
RL
+
Tool-use training
+
Agent environment
+
Inference-time reasoning
ดังนั้นเวลาพูดว่า:
“Model X coding เก่งกว่า Model Y”
สิ่งที่เราเห็นใน product อาจไม่ได้เกิดจาก base model intelligence อย่างเดียว
15. แล้ว Safety Training อยู่ตรงไหน?
Post-training ยังใช้กำหนดพฤติกรรมด้าน safety ด้วย
เช่นสอนให้แยก:
Benign request
↓
Answer normally
Dangerous request
↓
Apply appropriate safeguards
เป้าหมายไม่ใช่เพียง:
Refuse everything suspicious
เพราะจะได้โมเดลที่น่ารำคาญมาก
แต่ต้องเรียนรู้ distinction:
Educational
Defensive
Benign
Transformative
Dangerous
...
นี่เป็น classification/reasoning problem ที่ยากด้วยตัวมันเอง
16. แล้ว System Prompt คือ Training ไหม?
ไม่ใช่
อันนี้ควรตีกรอบแดงไว้เลย 🔴
สมมติมี:
SYSTEM:
You are a software architect.
Be concise.
Prefer C# examples.
สิ่งนี้อยู่ใน:
Context
ไม่ได้ update weights
MODEL
┌───────────────┐
│ Weights │
│ │
│ unchanged │
└───────┬───────┘
↑
│
System Prompt
+
User Prompt
จึงเป็น inference-time instruction
ไม่ใช่ training
17. AGENTS.md ก็ไม่ใช่ Training
เช่นคุณมี:
AGENTS.md
- inspect code before editing
- run tests
- use C# conventions
- don't modify unrelated files
Coding agent อ่านมันเข้า context
ดังนั้น:
AGENTS.md
↓
Context
↓
LLM behavior
ไม่ใช่:
AGENTS.md
↓
Backpropagation
↓
Change weights
นี่เป็นเหตุผลว่าทำไมเปลี่ยน AGENTS.md แล้ว behavior เปลี่ยนทันที โดยไม่ต้อง train model ใหม่
18. Fine-tuning ต่างจาก System Prompt ตรงนี้
สมมติอยากให้โมเดลตอบภาษาไทยแบบหนึ่ง
Prompting
SYSTEM:
ตอบภาษาไทย กระชับ ใช้ศัพท์แพทย์มาตรฐาน
weights:
unchanged
Fine-tuning
เอาตัวอย่างหลายพันชุด:
Input → Desired Thai medical answer
Input → Desired Thai medical answer
Input → Desired Thai medical answer
...
แล้ว:
Backprop
↓
Update weights
พฤติกรรมถูกฝังลง model มากกว่า
19. เมื่อไรควร Fine-tune?
คนมักรีบคิดว่า:
“ผมมีข้อมูลบริษัท งั้น Fine-tune LLM!”
ส่วนใหญ่ผมจะถามก่อนว่า:
ต้องการให้มัน “รู้ข้อมูล” หรือ “เปลี่ยนพฤติกรรม”?
ถ้าต้องการ:
“ตอบคำถามจากคู่มือบริษัทล่าสุด”
มักเหมาะกับ:
RAG / Search / Files
มากกว่า
เพราะเอกสารเปลี่ยนได้
วันนี้:
Vacation = 10 days
เดือนหน้า:
Vacation = 12 days
RAG:
update document
→ done
Fine-tuning:
prepare dataset
→ train
→ evaluate
→ deploy
และยังไม่ควรถือว่า fine-tuning เป็นฐานข้อมูลที่ retrieve fact ได้แม่นยำ
แต่ถ้าต้องการ:
“ให้โมเดลเขียน medical recommendation ด้วยรูปแบบเฉพาะนี้เสมอ”
Fine-tuning อาจน่าสนใจกว่า เพราะเรากำลังเปลี่ยน behavior/style/task specialization
20. ตอนนี้เราสามารถวาดชีวิตของ LLM ได้เกือบครบแล้ว
RAW DATA
↓
Data cleaning / filtering
↓
Tokenization
↓
════════════════════════════
PRE-TRAINING
════════════════════════════
↓
Next-token prediction
↓
Backpropagation
↓
Base Model
↓
════════════════════════════
POST-TRAINING
════════════════════════════
↓
SFT
↓
Preference optimization
↓
RL / verifiable rewards
↓
Tool-use / behavior / safety
↓
Assistant / Reasoning Model
↓
════════════════════════════
DEPLOYMENT
════════════════════════════
↓
System Prompt
+
User Prompt
+
Context
+
Memory / Retrieval
+
Tools
↓
Inference-time compute
↓
Agent loop
↓
Answer / Action
และนี่ทำให้เราตอบคำถามแรกของเราด้วยภาษาที่แม่นขึ้นได้แล้วว่า:
“Train LLM คืออะไร?”
มันคือการใช้ข้อมูล + objective + optimization เพื่อ เปลี่ยน parameters ของ neural network ให้ model มี probability distribution และพฤติกรรมที่เราต้องการ
ส่วนสิ่งที่เกิดตอนคุณกำลังคุยกับผมตอนนี้ ส่วนใหญ่คือ inference ไม่ใช่ training
แต่ยังมีคำถามช้างตัวใหญ่ยืนอยู่กลางห้อง 🐘:
ถ้าเราเทข้อมูลจาก Internet เข้าไปมหาศาล แล้วโมเดล “จำ” training data ได้แค่ไหน?
เช่น มันจำหนังสือทั้งเล่มหรือเปล่า? จำ source code ได้ไหม? ถามสิ่งที่อยู่ใน training data แล้วมันกำลัง retrieve จาก memory หรือ reconstruct จาก pattern? ทำไมบางอย่างจำเป๊ะ แต่บางอย่างมั่ว? และ memorization ต่างจาก generalization อย่างไร?
ตรงนี้จะพาเราไปถึงเรื่อง memorization, overfitting, generalization, data contamination และ hallucination ซึ่งเป็นชิ้นส่วนสำคัญมากในการเข้าใจว่าทำไม LLM ทั้ง “น่าทึ่ง” และ “ไว้ใจไม่ได้ 100%” ในเวลาเดียวกันครับ 🧠🧩
← ตอนก่อนหน้า: GPU, VRAM และโครงสร้างพื้นฐานที่ใช้ฝึก LLM
ตอนถัดไป: LLM จำ เรียนรู้ หรือเดาคำตอบ →
อ่านทั้งชุด
- คุยกับ 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