สอนโมเดลเล็กด้วยความรู้จากโมเดลใหญ่ — ทฤษฎีถึงลงมือบน Spark
- Dark knowledge — ข้อมูลที่ซ่อนอยู่ในช่องความน่าจะเป็นเล็ก ๆ ของ teacher (เช่น “เลข 7 คล้ายเลข 1”) ซึ่ง hard label แบบ one-hot ทิ้งไปหมด เทคนิคนี้มาจาก paper Distilling the Knowledge in a Neural Network (Hinton, Vinyals, Dean — Google, 2015)
- Teacher vs Student — teacher คือโมเดลใหญ่ที่เทรนเสร็จแล้วและถูกแช่แข็ง (ไม่ update น้ำหนัก) ทำหน้าที่แค่ “ออกความเห็น”; student คือตัวเล็กที่ถูกเทรนจริง โดยเป้าหมายคือ “ตอบให้เหมือนครู” ไม่ใช่แค่ตอบให้ถูก
- Temperature (T) — ปุ่มปรับความนุ่มของ softmax: T=1 คือมาตรฐาน (แหลม/มั่นใจเกิน), T>1 ทำให้ distribution แบนลงจน dark knowledge โผล่, T สูงมากเข้าใกล้ uniform ระหว่างเทรน teacher กับ student ต้องใช้ T เดียวกัน แต่ตอนใช้งานจริงต้องกลับมา T=1
- Soft label — ผลลัพธ์ softmax ที่อุณหภูมิสูงของ teacher เป็น “แผนที่คำตอบ” ทั้งเส้นที่ student ต้องเรียนรู้
- KD loss — loss ผสมสองตัว:
α × soft loss + (1−α) × hard loss(soft loss วัดด้วย KL divergence ส่งต่อความรู้ครู; hard loss ใช้ cross-entropy ยึด student ให้ติดความจริง) - ประเภท distillation 4 แบบ — response (logit), feature (hidden), sequence, และ CoT — เลือกตามสิทธิ์การมองเห็น teacher: white-box(เห็นน้ำหนัก/logits/hidden) ทำได้ทุกแบบ; black-box (เห็นแค่ text) ทำได้แค่ sequence/CoT
- กับดักหลัก — teacher bias (อคติครูถ่ายลงมา), capacity ceiling (student เล็กเกินรับไม่หมด), forgetting (ลืมความสามารถเดิม), และ exposure bias (ฝึกกับ sequence ครูแต่สอบด้วยการสร้างเอง) — ต้องประเมินกับงานจริงเสมอ ไม่ใช่ดูแค่ training loss
- ไฮเปอร์พารามิเตอร์ตั้งต้น — T ≈ 2–4 (student เล็กยิ่งต้องการ T สูง), α ≈ 0.7–0.9 (เน้น soft loss เป็นหลัก)
- เมื่อไหร่ควร distill แทน SFT ตรง ๆ — เมื่อ “ข้อมูล label หายากแต่ teacher หาได้ง่าย”; distillation ช่วยเปลี่ยนข้อมูลหายากให้เป็นข้อมูลเยอะ แต่อย่าลืมตรวจลิขสิทธิ์/เงื่อนไขการใช้งาน output ของ teacher ก่อนลงมือ