อุณหภูมิใน LLM คืออะไร
อุณหภูมิเป็นตัวควบคุมความสร้างสรรค์: 0 = กำหนดแน่นอน, 2 = โกลาหล และค่าทั้งหมดระหว่างนั้น
อุณหภูมิใน LLM คืออะไร เป็นบทเรียน AI Prompt Engineering ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Prompt Engineering และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน
LLM เลือกโทเค็นถัดไปอย่างไร
ในแต่ละขั้น LLM จะแสดงการแจกแจงความน่าจะเป็นเหนือโทเค็นทั้งหมดในคำศัพท์ของตน (~50,000 โทเค็นสำหรับ GPT) โมเดลกำหนดคะแนนให้แต่ละโทเค็น ซึ่งเรียกว่า ลอจิต — ตัวเลขดิบที่ยังไม่ปรับเป็นมาตรฐาน ลอจิตที่สูงกว่า = โทเค็นที่มีโอกาสมากกว่า
อุณหภูมิคือพารามิเตอร์ที่ควบคุมวิธีแปลงลอจิตดิบเหล่านี้เป็นความน่าจะเป็นก่อนการสุ่มตัวอย่าง
ฟังก์ชัน softmax
ลอจิตจะถูกแปลงเป็นความน่าจะเป็นโดยใช้ฟังก์ชัน softmax ฟังก์ชัน softmax รับเวกเตอร์ของลอจิตและส่งออกการแจกแจงความน่าจะเป็นที่รวมกันได้ 1
ตัวอย่างคำศัพท์ขนาดเล็กที่มีโทเค็น 4 รายการ:
import numpy as np
# Raw logits from the model
logits = np.array([2.0, 1.0, 0.5, -1.0]) # scores for 4 tokens
# Standard softmax (temperature = 1)
def softmax(logits, temperature=1.0):
scaled = logits / temperature
exp_scaled = np.exp(scaled - np.max(scaled)) # subtract max for numerical stability
return exp_scaled / exp_scaled.sum()
probs = softmax(logits, temperature=1.0)
print('Probabilities:', np.round(probs, 3))
# [0.567, 0.208, 0.129, 0.095]
# Token 0 is most likely at 56.7%อุณหภูมิ = 0: การถอดรหัสแบบเลือกค่าที่น่าจะเป็นสูงสุด
เมื่ออุณหภูมิเข้าใกล้ 0 การแจกแจง softmax จะยุบตัว: โทเค็นที่มีลอจิตสูงสุดจะได้ความน่าจะเป็นประมาณ 1.0 และโทเค็นอื่นทั้งหมดจะเข้าใกล้ 0 โมเดลเลือกโทเค็นที่มีความน่าจะเป็นสูงสุดเพียงรายการเดียวเสมอ
เรียกวิธีนี้ว่า การถอดรหัสแบบเลือกค่าที่น่าจะเป็นสูงสุด เป็นวิธีที่กำหนดผลลัพธ์แน่นอน — พรอมต์เดียวกันจะให้ผลลัพธ์เดิมเสมอ ไม่มีการสุ่ม ไม่มีความสร้างสรรค์
# Temperature = 0 (greedy)
probs_temp0 = softmax(logits, temperature=0.01) # near-zero
print('Probs at T=0.01:', np.round(probs_temp0, 4))
# [~1.0, ~0.0, ~0.0, ~0.0]
# In practice, temperature=0 is implemented as argmax:
def greedy_sample(logits):
return np.argmax(logits) # always returns the index of the highest logit
token_idx = greedy_sample(logits)
print(f'Selected token index: {token_idx}') # always 0อุณหภูมิ = 1: การสุ่มตัวอย่างมาตรฐาน
อุณหภูมิ = 1 จะใช้ softmax โดยไม่ปรับขนาด — การแจกแจงความน่าจะเป็นสะท้อนระดับความมั่นใจตามธรรมชาติของโมเดล โมเดลจะสุ่มตัวอย่างตามความน่าจะเป็นเหล่านี้: โทเค็นที่มีโอกาสสูงจะปรากฏบ่อย ส่วนโทเค็นที่มีโอกาสต่ำจะปรากฏไม่บ่อยแต่ยังมีโอกาสปรากฏ
นี่คือค่าเริ่มต้นสำหรับกรณีใช้งานด้านการสนทนาส่วนใหญ่ ให้ผลลัพธ์ที่หลากหลายและเป็นธรรมชาติ ขณะเดียวกันยังคงมีความสอดคล้อง
# Temperature = 1 (standard)
probs_temp1 = softmax(logits, temperature=1.0)
print('Probs at T=1.0:', np.round(probs_temp1, 3))
# [0.567, 0.208, 0.129, 0.095]
# Sampling from this distribution:
def sample_token(probs):
vocab = ['the', 'a', 'an', 'is']
return np.random.choice(vocab, p=probs)
# Run 10 times to see variation
for _ in range(10):
print(sample_token(probs_temp1), end=' ')
# Output varies each time, but 'the' appears most oftenอุณหภูมิ = 2: การสุ่มตัวอย่างแบบไร้ระเบียบ
อุณหภูมิสูง (> 1) ทำให้การแจกแจงความน่าจะเป็นแบนลง — โทเค็นทั้งหมดมีโอกาสใกล้เคียงกันมากขึ้น โมเดลคาดเดาได้ยากและมักไม่สอดคล้อง
ในทางปฏิบัติแทบไม่ใช้อุณหภูมิ > 1.5 อาจให้ผลลัพธ์สร้างสรรค์ที่คาดไม่ถึง แต่โดยมากจะให้ผลลัพธ์ไร้ความหมาย
# Temperature = 2 (chaotic)
probs_temp2 = softmax(logits, temperature=2.0)
print('Probs at T=2.0:', np.round(probs_temp2, 3))
# [0.385, 0.261, 0.211, 0.143]
# Much flatter — the 4th token (logit=-1.0) now has 14.3% chance
# (vs 9.5% at T=1.0)
# Visualization: compare distributions
for temp in [0.1, 0.5, 1.0, 1.5, 2.0]:
probs = softmax(logits, temperature=temp)
print(f'T={temp}: {np.round(probs, 3)}')อุณหภูมิเป็นตัวควบคุมความคมชัด
ในเชิงแนวคิด อุณหภูมิควบคุม ความคมชัดของการแจกแจง:
- อุณหภูมิต่ำ (0.1–0.4): จุดสูงสุดแหลมคม — โมเดลมีความมั่นใจ เลือกโทเค็นที่ปลอดภัยหรือพบบ่อย
- อุณหภูมิปานกลาง (0.6–1.0): รูปทรงเป็นธรรมชาติ — สมดุลระหว่างความสร้างสรรค์และความสอดคล้อง
- อุณหภูมิสูง (1.2–2.0): การแจกแจงแบน — โมเดลสำรวจโทเค็นที่ไม่น่าจะเป็นไปได้อย่างอิสระ
ลองนึกว่านี่เป็นปุ่มหมุนควบคุมความสร้างสรรค์: ต่ำ = แม่นยำ สูง = กล้าทดลอง
import matplotlib
# Conceptual: what distribution shape looks like at different temps
temps = {'T=0.2 (sharp)': 0.2, 'T=1.0 (normal)': 1.0, 'T=2.0 (flat)': 2.0}
for label, temp in temps.items():
probs = softmax(logits, temp)
bar = '#' * int(probs[0] * 40)
print(f'{label}: top token = {probs[0]:.1%} |{bar}|')
# T=0.2: top token = 97.2% |########################################|
# T=1.0: top token = 56.7% |######################|
# T=2.0: top token = 38.5% |###############|อุณหภูมิและการกำหนดผลลัพธ์แน่นอน
ข้อควรทราบที่สำคัญ: temperature = 0 ทำให้การสุ่มตัวอย่างให้ผลลัพธ์ที่กำหนดแน่นอน สำหรับ temperature > 0 การทำงานแต่ละครั้งจะให้ผลลัพธ์แตกต่างกัน เนื่องจากการสุ่มตัวอย่างเป็นกระบวนการสุ่ม การแจกแจง จะคงที่ แต่ตัวอย่างที่ได้จะแตกต่างกัน
เพื่อให้ได้ผลลัพธ์ที่ทำซ้ำได้ในการทดสอบ ให้กำหนด temperature = 0 เสมอ สำหรับการใช้งานจริงที่ต้องการความหลากหลาย ให้ใช้ค่าเริ่มต้น หากส่วนต่อประสานโปรแกรมประยุกต์รองรับ
import openai
client = openai.OpenAI(api_key='sk-...')
# Deterministic: temperature=0
resp1 = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': 'What is the capital of France?'}],
temperature=0
)
resp2 = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': 'What is the capital of France?'}],
temperature=0
)
print(resp1.choices[0].message.content == resp2.choices[0].message.content) # True (usually)อุณหภูมิมีปฏิสัมพันธ์กับการสุ่มแบบ top-p อย่างไร
อุณหภูมิและ top-p (การสุ่มจากกลุ่มแกนกลาง) ต่างก็ปรับรูปแบบการแจกแจงสำหรับการสุ่มตัวอย่าง แต่ทำงานคนละขั้นตอน:
- อุณหภูมิ: ปรับสเกลค่าลอจิตก่อน softmax — เปลี่ยนรูปร่างของการแจกแจงทั้งหมด
- Top-p: ตัดการแจกแจงให้เหลือมวลความน่าจะเป็นตามค่า top-p หลัง softmax — สุ่มตัวอย่างจากชุดโทเค็นที่มีแนวโน้มมากที่สุดเท่านั้น
การใช้ทั้งสองร่วมกันช่วยให้ควบคุมได้ละเอียด คำแนะนำทั่วไปคือให้ปรับทีละค่า การเปลี่ยนทั้งสองพร้อมกันทำให้คาดเดาผลกระทบได้ยาก
# Using temperature with top_p in OpenAI API
resp = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': 'Write a one-line haiku about code.'}],
temperature=0.9, # moderately diverse distribution
top_p=0.95 # sample from top 95% of probability mass
)ค่าอุณหภูมิที่ใช้จริงตามประเภทงาน
ข้อมูลอ้างอิงอย่างรวดเร็วสำหรับประเภทงานที่พบบ่อย:
- ถาม–ตอบข้อเท็จจริง: 0 — ต้องแม่นยำ ไม่จำเป็นต้องมีความหลากหลาย
- การสร้างโค้ด: 0–0.2 — ไวยากรณ์ต้องถูกต้อง
- การสรุปความ: 0.3–0.5 — ยอมรับความหลากหลายได้บ้าง
- การสนทนา: 0.7–0.9 — คำตอบเป็นธรรมชาติและหลากหลาย
- การเขียนเชิงสร้างสรรค์: 0.9–1.2 — ต้องการความหลากหลาย
- การระดมความคิด / การสร้างแนวคิด: 1.0–1.5 — สำรวจตัวเลือกที่คาดไม่ถึง
TEMPERATURE_PRESETS = {
'factual_qa': 0.0,
'code_generation': 0.1,
'summarization': 0.4,
'chat': 0.8,
'creative_writing': 1.1,
'brainstorming': 1.3
}
def call_with_preset(task_type, prompt):
temp = TEMPERATURE_PRESETS.get(task_type, 0.7)
return client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': prompt}],
temperature=temp
)อุณหภูมิในส่วนต่อประสานโปรแกรมประยุกต์
อุณหภูมิรองรับโดยส่วนต่อประสานโปรแกรมประยุกต์ของ LLM รายใหญ่ทั้งหมด ช่วงค่าที่ใช้ได้คือ 0–2 สำหรับ OpenAI และ 0–1 สำหรับ Anthropic Claude การเกินค่าสูงสุดจะทำให้เกิดข้อผิดพลาด
# OpenAI: temperature 0 to 2
client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': prompt}],
temperature=1.2 # Valid for OpenAI
)
# Anthropic Claude: temperature 0 to 1
import anthropic
claude = anthropic.Anthropic(api_key='sk-ant-...')
claude.messages.create(
model='claude-opus-4-5',
max_tokens=1024,
temperature=0.8, # Max is 1.0 for Claude
messages=[{'role': 'user', 'content': prompt}]
)เมื่ออุณหภูมิไม่เพียงพอ
อุณหภูมิเพียงอย่างเดียวไม่ได้ให้ความหลากหลายหรือความแม่นยำตามที่ต้องการเสมอไป เมื่อ temperature=0 ยังคงให้ผลลัพธ์ที่แตกต่างกัน (อาจเกิดขึ้นกับบางโมเดลเนื่องจากความไม่กำหนดแน่นอนจากเลขทศนิยม) ให้ใช้ seed เพื่อให้ทำซ้ำได้อย่างแท้จริง เมื่ออุณหภูมิสูงทำให้เกิดข้อความไร้สาระ ให้จำกัดชุดคำศัพท์ด้วย top-p หรือ top-k แทนการเพิ่มอุณหภูมิให้สูงขึ้น
# Seed for reproducibility (OpenAI API)
resp = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': prompt}],
temperature=0,
seed=42 # Guarantees same output across calls on same model version
)
# Note: same output only guaranteed with same model version
# A model update can change outputs even with the same seedตรวจสอบความรู้
เมื่อกำหนดอุณหภูมิให้สูงมาก (เช่น 2.0) จะเกิดอะไรขึ้นกับการแจกแจงความน่าจะเป็นของโทเค็น
สรุป: อุณหภูมิใน LLM
อุณหภูมิควบคุมความสุ่มของการสุ่มโทเค็น โดยปรับสเกลลอจิตก่อน softmax:
- T=0: เลือกค่าที่มีความน่าจะเป็นสูงสุด — เลือกโทเค็นที่มีความน่าจะเป็นสูงสุดเสมอ กำหนดผลลัพธ์แน่นอน
- T=1: มาตรฐาน — สุ่มตามการแจกแจงความน่าจะเป็นตามธรรมชาติ
- T>1: อลหม่าน — ทำให้การแจกแจงแบนลง สุ่มมากขึ้น และมีความสอดคล้องน้อยลง
ใช้อุณหภูมิต่ำสำหรับงานข้อเท็จจริงและงานโค้ด ใช้ระดับกลางสำหรับการสนทนา และใช้ระดับสูงสำหรับงานสร้างสรรค์ ปรับเฉพาะอุณหภูมิหรือ top-p ทีละค่า ไม่ใช่ทั้งสองค่าพร้อมกัน บทเรียนถัดไป: การสุ่มแบบ top-p จากกลุ่มแกนกลาง
เรียนรู้ AI Prompt Engineering ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 53
- บทเรียน
- 199
คำถามที่พบบ่อย
บทเรียน “อุณหภูมิใน LLM คืออะไร” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “อุณหภูมิใน LLM คืออะไร” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Prompt Engineering ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “อุณหภูมิใน LLM คืออะไร”
อุณหภูมิเป็นตัวควบคุมความสร้างสรรค์: 0 = กำหนดแน่นอน, 2 = โกลาหล และค่าทั้งหมดระหว่างนั้น คุณปฏิบัติ AI Prompt Engineering ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Prompt Engineering หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Prompt Engineering บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “อุณหภูมิใน LLM คืออะไร” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Prompt Engineering นี้ได้ไหม
ได้ บทเรียน AI Prompt Engineering ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- อุณหภูมิใน LLM คืออะไร
- การสุ่มตัวอย่างนิวเคลียสแบบ top-p
- การสุ่มตัวอย่างแบบ top-k
- การเลือกพารามิเตอร์ให้เหมาะกับกรณีใช้งาน