กลยุทธ์การสุ่มตัวอย่าง: อุณหภูมิ, top-k, top-p และการค้นหาลำแสง

เมื่อแบบจำลองคำนวณการแจกแจงความน่าจะเป็นเหนือคำศัพท์แล้ว บางสิ่งจะต้อง เลือกโทเค็นถัดไป ตัวเลือกดังกล่าวจะกำหนดว่าผลลัพธ์จะเป็นแบบสร้างสรรค์หรือแบบอนุรักษ์นิยม มีความหลากหลายหรือซ้ำซาก บทเรียนนี้ครอบคลุมถึงห้ากลยุทธ์ที่พบบ่อยที่สุด และเวลาที่ควรใช้แต่ละกลยุทธ์

กลยุทธ์ที่ 1 — การถอดรหัสอย่างละโมบ
การถอดรหัสแบบโลภ จะเลือกโทเค็นที่มี ความน่าจะเป็นสูงสุด: `next = argmax P(t | context)` เสมอ มันเป็นสิ่งที่กำหนดไว้ — พรอมต์เดียวกันจะสร้างเอาต์พุตเดียวกันเสมอ ปัญหา: คนโลภมีแนวโน้มที่จะวนซ้ำและ "ปลอดภัย" แต่ทำสำเร็จที่น่าเบื่อ การเลือกโทเค็นที่ดีที่สุดในแต่ละขั้นตอนอาจทำให้พลาดลำดับที่ดีกว่าทั่วโลกได้
ยุทธศาสตร์ที่ 2 — อุณหภูมิ
อุณหภูมิ T หารบันทึกทั้งหมด ก่อน softmax: `probs = softmax(logits / T)` ที่ T < 1 การกระจายจะคมชัดขึ้น — โมเดลจะมีความมั่นใจมากขึ้นในโทเค็นระดับบน ที่ T > 1 มันราบเรียบ — โทเค็นที่มีโอกาสต่ำกว่าจะได้รับส่วนแบ่งที่มากขึ้น เมื่อ T → 0 พฤติกรรมจะเข้าใกล้ความโลภ ค่าทั่วไป: 0.6–0.8 สำหรับงานเฉพาะเจาะจง (รหัส ข้อเท็จจริง) 1.0–1.2 สำหรับการเขียนเชิงสร้างสรรค์
ลองทำดู: เลื่อนแถบเลื่อนและดูการเปลี่ยนแปลงการกระจาย

แถบด้านล่างแสดงความน่าจะเป็นของโทเค็นหลังจากใช้ตัวกรองทั้งสามตัวตามลำดับ: อุณหภูมิมาก่อน จากนั้น top-k จากนั้น top-p โทเค็นที่เป็นสีเทาจะไม่รวมอยู่ในการสุ่มตัวอย่าง

เลื่อนแถบเลื่อน — ดูว่าการกระจายเปลี่ยนแปลงอย่างไร ▶
SAMPLING STRATEGIES
Temperature
T = 1.0
Top-k (0 = off)
k = off
Top-p (1.0 = off)
p = off
Active tokens8
Entropy2.09 bits
Top tokenหลังคา (47%)
หลังคา
47%
โซฟา
26%
พื้น
12%
หน้าต่าง
6%
โต๊ะ
4%
เตียง
3%
น้ำ
1%
ลาน
1%
กลยุทธ์ที่ 3 — การสุ่มตัวอย่าง Top-k
การสุ่มตัวอย่าง Top-k จะเก็บเฉพาะโทเค็น k ที่มีความน่าจะเป็นสูงสุด ลบส่วนที่เหลือเป็นศูนย์ และปรับให้เป็นมาตรฐานใหม่ วิธีนี้จะตัดส่วนท้ายของการแจกแจงออกไป เพื่อป้องกันไม่ให้โมเดลเลือกโทเค็นที่ไม่น่าจะเป็นไปได้ (และมักจะไม่ต่อเนื่องกัน) ค่าทั่วไป: k = 20–100 ข้อจำกัด: k ได้รับการแก้ไขแล้วและไม่ปรับตามความมั่นใจของโมเดลในแต่ละตำแหน่ง
กลยุทธ์ที่ 4 — การสุ่มตัวอย่าง Top-p (นิวเคลียส)
การสุ่มตัวอย่าง Top-p (นิวเคลียส) เลือก ชุดโทเค็นที่เล็กที่สุดซึ่งความน่าจะเป็นสะสม ≥ p (โดยทั่วไปคือ 0.9–0.95) ทำให้ส่วนที่เหลือเป็นศูนย์ และปรับให้เป็นปกติ ต่างจาก top-k ตรงที่ขนาดนิวเคลียส ปรับได้: เมื่อแบบจำลองมีความมั่นใจ (หนึ่งโทเค็นที่ p = 0.95) นิวเคลียสจะมี 1 โทเค็น เมื่อไม่แน่นอนก็อาจมี 50 ซึ่งทำให้ top-p มีความแข็งแกร่งในระดับความเชื่อมั่นที่แตกต่างกัน
กลยุทธ์ที่ 5 — การค้นหาบีม
การค้นหาลำแสง รักษา k ลำดับบางส่วนที่ดีที่สุด (ความกว้างของลำแสง) ในแต่ละขั้นตอน แต่ละอันถูกขยายไปยังโทเค็นถัดไปที่เป็นไปได้ทั้งหมด ลำดับคะแนนสูงสุด k รอด ผู้ชนะคือลำดับที่มีความน่าจะเป็นของบันทึกรวมสูงสุด การค้นหาบีมเป็นสิ่งที่กำหนดไว้และได้รับความนิยมในการแปลด้วยเครื่อง (ความกว้าง 4–8) มันสร้าง ผลลัพธ์ที่ไม่ดีสำหรับรุ่นปลายเปิด — ผลลัพธ์จะแบนราบ ซ้ำๆ และไม่มีความหลากหลาย
เทียบเคียงกัน
ห้ากลยุทธ์ — เลือกตามประเภทงาน
กลยุทธ์กำหนดไว้พารามิเตอร์ดีที่สุดสำหรับจุดอ่อน
โลภใช่การสร้างต้นแบบที่รวดเร็ว งานที่แม่นยำซ้ำๆ เหมาะสมที่สุดในท้องถิ่น
อุณหภูมิเลขที่ที (0.1–2.0)การเขียนเชิงสร้างสรรค์ความหลากหลายT สูง → ความไม่สอดคล้องกัน
ท็อปเคเลขที่เค (20–100)ควบคุมการตัดหางk ไม่ปรับให้เข้ากับความมั่นใจ
ท็อป-พีเลขที่หน้า (0.9–0.95)นิวเคลียสแบบปรับตัว โมเดลการแชทโต้ตอบได้ไม่ดีกับค่า T สูง
ค้นหาบีมใช่ความกว้าง (4–8)การแปล เอาต์พุตที่มีโครงสร้างข้อความปลายเปิดที่น่าเบื่อ
สูตรปฏิบัติสำหรับรุ่นแชท: อุณหภูมิ = 0.7–0.8 รวมกับ top-p = 0.9–0.95 OpenAI ไม่แนะนำให้ใช้อุณหภูมิและ top-p พร้อมกัน (เปลี่ยนอันหนึ่ง ปล่อยให้อันอื่นเป็นค่าเริ่มต้น) แต่การรวมกันในระดับปานกลางมักจะทำงานได้ดีกว่าในทางปฏิบัติ สำหรับการสร้างโค้ด: อุณหภูมิ = 0.2, top-p = 0.95 หรือแค่โลภ

ประเด็นสำคัญ

กลยุทธ์การสุ่มตัวอย่างเป็นจุดหมุนระหว่างระดับที่กำหนดและความหลากหลาย ไม่มีกลยุทธ์ใดดีที่สุดสำหรับทุกงาน ตัวเลือกที่เหมาะสมขึ้นอยู่กับว่าคุณต้องการผลลัพธ์ที่ชัดเจน สร้างสรรค์ หรือมีโครงสร้าง
Greedy = argmax ในแต่ละขั้นตอน กำหนดได้รวดเร็วซ้ำซาก
อุณหภูมิ T แบ่งบันทึกก่อนซอฟต์แม็กซ์: T < 1 ปรับให้คมชัด T > 1 ปรับให้เรียบ
Top-k ตัดส่วนท้ายของโทเค็น k ที่น่าจะเป็นไปได้มากที่สุด — ดีแต่ไม่สามารถปรับตัวได้
Top-p (นิวเคลียส) เก็บผลรวมเซตที่เล็กที่สุดเข้ากับ p — ปรับให้เข้ากับความเชื่อมั่นของโมเดล
Beam search = k ลำดับที่ดีที่สุดในการขนาน — ยอดเยี่ยมสำหรับการแปล แต่ไม่ดีสำหรับการแชท
ค่าเริ่มต้นในทางปฏิบัติ: อุณหภูมิ 0.7–0.8 + top-p 0.9–0.95