Dictionary · กลไกโมเดล · 64 / 291

Temperature

ค่าที่คุมความสุ่มตอน AI เลือกคำถัดไป ยิ่งต่ำคำตอบยิ่งนิ่งซ้ำเดิม ยิ่งสูงยิ่งหลากหลายแต่เสี่ยงหลุดประเด็น ตั้งเป็น 0 ก็ไม่การันตีว่าจะได้คำตอบเดิมทุกครั้ง

Temperature คือค่าพารามิเตอร์ตัวหนึ่งที่ส่งแนบไปพร้อมกับคำสั่งเรียกใช้ llm เพื่อคุมระดับความสุ่มตอนโมเดลเลือกคำถัดไปจากกลไก next-token-prediction เอกสาร API ของ OpenAI นิยามไว้ว่าเป็น "sampling temperature" ปรับได้ในช่วง 0 ถึง 2 โดยค่าสูงอย่าง 0.8 จะทำให้ผลลัพธ์สุ่มมากขึ้น ส่วนค่าต่ำอย่าง 0.2 จะทำให้ผลลัพธ์โฟกัสและนิ่งกว่า ค่านี้ไม่ได้ผูกกับผู้ให้บริการเจ้าเดียว เครื่องมือที่นักพัฒนาใช้รันโมเดลเปิด (open-weight) เองอย่าง Hugging Face Transformers ก็มีช่องตั้งค่านี้เช่นกัน โดยตั้งผ่าน generation config ซึ่งถ้าไม่ระบุจะมีค่าเท่ากับ 1.0 เพราะเป็นกลไกมาตรฐานของการสร้างข้อความแบบสุ่มตัวอย่าง (sampling) ที่โมเดลภาษาแทบทุกตัวใช้ร่วมกันตอน inference

กลไกเบื้องหลังคือ หลังโมเดลให้คะแนนคำถัดไปทุกตัวในคลังคำแล้ว temperature จะเข้าไปปรับความชันของการกระจายตอนแปลงคะแนนเหล่านั้นเป็นความน่าจะเป็น (ขั้น softmax) ก่อนจะสุ่มหยิบคำออกมา บทความอธิบายวิธี decode ข้อความของ Hugging Face ระบุว่าการลด temperature ลงทำให้การกระจายความน่าจะเป็น "sharper" คือคำที่มีโอกาสสูงอยู่แล้วยิ่งมีโอกาสถูกเลือกมากขึ้นไปอีก ส่วนคำที่โอกาสต่ำแทบไม่เหลือสิทธิ์ถูกเลือกเลย และย้ำว่าที่ขีดจำกัดเมื่อ temperature เข้าใกล้ 0 การสุ่มแบบนี้จะเทียบเท่ากับการเลือกคำที่น่าจะเป็นที่สุดทุกครั้งแบบไม่สุ่มเลยที่เรียกว่า greedy decoding ตรงข้ามกัน ถ้าตั้งค่าสูงขึ้น การกระจายจะแบนลง คำที่โอกาสต่ำก็มีสิทธิ์โผล่มากขึ้น คำตอบจึงดูหลากหลายขึ้นแต่ก็เสี่ยงหลุดประเด็นหรือคุมทิศทางยากขึ้นตามไปด้วย พารามิเตอร์อีกตัวที่ทำหน้าที่คล้ายกันคือ top-p หรือ nucleus sampling ซึ่งเอกสารของ OpenAI อธิบายว่าแทนที่จะปรับความชันของทั้งการกระจายเหมือน temperature top-p จะตัดเอาเฉพาะกลุ่มคำที่ความน่าจะเป็นสะสมรวมกันถึงสัดส่วนที่ตั้งไว้มาให้สุ่มเลือก เช่นตั้งไว้ที่ 0.1 หมายถึงพิจารณาเฉพาะกลุ่มคำที่รวมกันคิดเป็น 10% บนสุดของความน่าจะเป็นทั้งหมด และเอกสารเดียวกันแนะนำว่าให้ปรับ temperature หรือ top-p อย่างใดอย่างหนึ่ง ไม่ควรปรับพร้อมกันทั้งคู่เพราะสองค่านี้ทำหน้าที่ทับซ้อนกัน

คนทำงานจะเจอ temperature เป็นช่องตั้งค่าใน playground หรือ API ของเครื่องมือ AI หลายเจ้า แต่ไม่ใช่ทุกโมเดลจะเปิดให้ปรับค่านี้ โมเดลสายให้เหตุผล (reasoning model) รุ่นใหม่หลายตัวเลือกคุมความสุ่มด้วยกลไกภายในของตัวเองแทน นักพัฒนาที่ส่งค่า temperature ไปยังโมเดลตระกูล GPT-5 ของ OpenAI รายงานตรงกันว่า API ตีกลับเป็น error ว่ารองรับเฉพาะค่าเริ่มต้นเท่านั้น (เธรดนักพัฒนาของ OpenAI) ก่อนวางแผนพึ่งค่านี้จึงควรเช็คก่อนว่าโมเดลที่ใช้อยู่รับค่านี้จริงไหม งานที่ต้องการคำตอบสั้นตรงประเด็นซ้ำรูปแบบเดิม เช่น สรุปเอกสาร ดึงตัวเลขจากรายงาน มักตั้งค่าต่ำเข้าไว้ ส่วนงานที่ต้องการไอเดียหลากหลาย เช่น ระดมชื่อแคมเปญหรือร่างพาดหัวหลายแบบ มักตั้งค่าสูงขึ้น จุดที่คนเข้าใจผิดบ่อยที่สุดคือคิดว่าตั้ง temperature เป็น 0 แล้วจะได้คำตอบเดิมเป๊ะทุกครั้งที่ป้อน prompt เดิม ซึ่งไม่จริง ทีมวิจัย Thinking Machines Lab สาธิตให้เห็นว่าการยิง prompt เดียวกันเข้าโมเดลเปิดตัวหนึ่ง (Qwen3-235B-A22B-Instruct-2507) ที่ temperature 0 ซ้ำ 1,000 ครั้ง ยังได้คำตอบไม่ซ้ำกันถึง 80 แบบ สาเหตุไม่ได้อยู่ที่ temperature เอง แต่อยู่ที่ระบบฝั่ง server ซึ่งรวมคำขอของผู้ใช้หลายคนมาประมวลผลเป็น batch เดียวกัน ขนาด batch เปลี่ยนไปตามโหลดที่เข้ามาแต่ละช่วง ทำให้ลำดับการคำนวณและค่าตัวเลขคลาดเคลื่อนไปเล็กน้อยจนคำตอบเลี้ยวคนละทางได้ (รายละเอียดเต็มอยู่ที่ non-determinism) ทีมเดียวกันแสดงให้เห็นด้วยว่าปัญหานี้แก้ได้ ถ้าเขียน kernel ให้ผลลัพธ์ไม่ขึ้นกับขนาด batch พวกเขายิงซ้ำ 1,000 ครั้งแล้วได้คำตอบเหมือนกันทั้งหมด แลกกับความเร็วที่ช้าลงราวเท่าตัวในการทดลองเบื้องต้นนั้น แต่นั่นเป็นงานของคนดูแลระบบ inference ไม่ใช่สิ่งที่ผู้ใช้ปลายทางปรับเองได้ ดังนั้นงานที่ต้องการผลนิ่งจริงๆ ต้องออกแบบรั้วกันไว้ เช่นล็อกรูปแบบ output ให้ชัดใน prompt แทนการหวังว่าตั้ง temperature ต่ำแล้วผลจะซ้ำเดิมเป๊ะทุกครั้ง

ตัวอย่างจากบทสนทนาจริง

ทีมคอนเทนต์: "ตั้ง temperature เป็น 0 ไปแล้วนะคะ ทำไมให้สรุปข่าวชิ้นเดียวกันสองรอบ ได้คำตอบไม่เหมือนกันเป๊ะเลย งงมากค่ะ ตกลงตั้งค่าผิดหรือระบบมีปัญหา"

ทีม IT: "ไม่ได้ตั้งผิดครับ temperature 0 แค่ลดความสุ่มลงเกือบหมด ไม่ได้การันตีว่าจะได้คำตอบเดิมทุกตัวอักษร เพราะมีปัจจัยฝั่ง server ที่ทำให้ผลเพี้ยนเล็กน้อยได้เหมือนกัน ถ้างานต้องการโครงคำตอบที่แน่นอนจริงๆ ต้องล็อกหัวข้อและรูปแบบไว้ใน prompt เผื่อไว้ด้วยครับ"

ระวังสับสนกับ

  • non-determinism : temperature คือปุ่มปรับระดับความสุ่มตอนสุ่มเลือกคำ ส่วน non-determinism คือปรากฏการณ์ที่คำตอบไม่ซ้ำเดิมโดยรวม ซึ่งเกิดขึ้นได้แม้ตั้ง temperature เป็น 0 แล้วก็ตาม เพราะมีปัจจัยอื่นอย่างขนาด batch บนฝั่ง server เข้ามาเกี่ยวข้องด้วย
  • parameters : temperature เป็นค่า setting ที่ส่งไปพร้อมคำขอแต่ละครั้งและผู้ใช้ปรับเองได้ในโมเดลที่เปิดให้ปรับ ต่างจาก parameters ของโมเดลซึ่งเป็นค่าตัวเลขนับพันล้านค่าที่ถูกล็อกไว้ตั้งแต่ train เสร็จแล้ว ผู้ใช้ทั่วไปแก้ไม่ได้ตอนใช้งาน

ดูคำนี้ใน Knowledge Atlas →

■ ไม่อยากพลาดของใหม่

อ่านจบแล้วอยากตามเรื่อง AI แบบนี้ต่อทุกวัน เรามีสรุปข่าวภาษาไทยส่งทาง LINE ทุกเช้า กดเพิ่มเพื่อนไว้ได้เลย ไม่มีค่าใช้จ่าย

เพิ่มเพื่อนใน LINE →
QR เพิ่มเพื่อน LINE ของ TRAINIAC AIคอมพิวเตอร์สแกนด้วยมือถือได้เลย

SycophancyTest-time compute