Top-p sampling (TH)

From Systems analysis Wiki
Jump to navigation Jump to search

การสุ่มตัวอย่างแบบ Top‑p หรือที่รู้จักในชื่อ การสุ่มตัวอย่างแบบนิวเคลียส (Nucleus Sampling) คือวิธีการถอดรหัสแบบสุ่มสำหรับโมเดลภาษาแบบ autoregressive ซึ่งถูกนำไปใช้อย่างแพร่หลายรวมถึงใน LLM ขนาดใหญ่ วิธีนี้ถูกเสนอในปี 2019 โดย Ari Holtzman และคณะ (preprint arXiv — เมษายน 2019; ตีพิมพ์ใน ICLR 2020) ในฐานะทางเลือกที่ปรับปรุงแล้วสำหรับการสุ่มตัวอย่างแบบ Top‑k แบบคงที่ แนวคิดของวิธีนี้คือการเลือกกลุ่มผู้สมัครแบบไดนามิกในแต่ละขั้นตอนของการสร้างข้อความตามเกณฑ์ความน่าจะเป็นสะสม p[1]

พื้นหลังทางประวัติศาสตร์: ปัญหาการเสื่อมถอยของข้อความจาก Neural Network

ก่อนการปรากฏตัวของ Top‑p กลยุทธ์การถอดรหัสที่ครองตลาดคือ การค้นหาแบบโลภ (greedy search) และ การค้นหาแบบลำแสง (beam search) ซึ่งอิงบนกระบวนทัศน์การเพิ่มความน่าจะเป็นสูงสุด — การเลือกลำดับ token ที่มีความน่าจะเป็นรวมสูงที่สุด การค้นหาแบบโลภจะเลือก token ที่มีความน่าจะเป็นสูงสุดในแต่ละขั้นตอนแบบโลคัล ในขณะที่การค้นหาแบบลำแสงจะติดตามสมมติฐานการสร้างข้อความหลายรายการพร้อมกัน[1]

แม้ว่าวิธีเหล่านี้จะมีประสิทธิภาพในงานแบบปิด (การแปลภาษา การดึงข้อมูล) แต่เมื่อเปลี่ยนไปใช้กับงานการสร้างข้อความแบบเปิด (การเขียนเรื่องราว ระบบสนทนา) มักนำไปสู่ การเสื่อมถอยของข้อความจาก Neural Network ซึ่งเป็นภาวะที่ผลลัพธ์เสื่อมถอย ข้อความกลายเป็นแม่แบบ สูญเสียความเชื่อมโยง หรือวนซ้ำ ปรากฏการณ์นี้ถูกอธิบายอย่างละเอียดโดย Holtzman และคณะในงานวิจัย The Curious Case of Neural Text Degeneration[1]

Meister และคณะเชื่อมโยงปัญหาการเสื่อมถอยกับข้อเท็จจริงที่ว่าข้อความของมนุษย์มีแนวโน้มที่จะรักษาเนื้อหาเชิงข้อมูลใกล้เคียงกับ entropy เงื่อนไขที่คาดหวัง แทนที่จะเพิ่มความน่าจะเป็นโลคัลของ token ถัดไปให้สูงสุดเท่านั้น[2]

ทางเลือกหนึ่งคือ การสุ่มตัวอย่างแบบสุ่มล้วน (sampling without truncation) ซึ่ง token ถูกเลือกแบบสุ่มตามความน่าจะเป็น อย่างไรก็ตาม วิธีนี้ก่อให้เกิดปัญหาตรงกันข้าม: ฟังก์ชัน Softmax ไม่เคยกำหนดความน่าจะเป็นเป็นศูนย์อย่างเคร่งครัดให้กับ token ใด ดังนั้นในคำศัพท์หลายหมื่นคำจึงมีโซนของ token ที่เป็นสัญญาณรบกวนอยู่เสมอ การสุ่มตัวอย่างแบบล้วนเพิ่มความเสี่ยงของการตกเข้าไปในส่วนหางที่ไม่น่าเชื่อถือของการแจกแจง ซึ่งอาจทำให้ความเชื่อมโยงของข้อความที่สร้างขึ้นเสื่อมลง[1][3] ความจำเป็นในการผสมผสานความหลากหลายของการเลือกแบบสุ่มกับความน่าเชื่อถือของข้อจำกัดแบบกำหนดได้นำไปสู่การพัฒนาวิธีการตัดการแจกแจง โดยมีการสุ่มตัวอย่างแบบนิวเคลียส (Top‑p) เป็นวิธีชั้นนำ[1][4]

คำอธิบายแบบง่าย

การสุ่มตัวอย่างแบบ Top-p คือวิธีจำกัดการเลือก token ถัดไปเฉพาะตัวเลือกที่ น่าจะเป็นมากที่สุด โดยไม่กำหนดจำนวนไว้ล่วงหน้า

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

การสุ่มตัวอย่างแบบ Top-p ตัดส่วนหางที่มีความน่าจะเป็นต่ำนี้ออก ไม่ใช่โดยจำนวน token ที่กำหนด แต่โดย ความน่าจะเป็นรวม ก่อนอื่นผู้สมัครทั้งหมดจะถูกเรียงลำดับจากมากที่สุดไปน้อยที่สุด จากนั้นจะเลือกกลุ่มขั้นต่ำของ token ด้านบนที่มีความน่าจะเป็นรวมถึงเกณฑ์ที่กำหนด p เช่น 0.9 หรือ 0.95 หลังจากนั้น token ถัดไปจะถูกเลือกแบบสุ่มจากกลุ่มนี้เท่านั้น โดยตัวเลือกอื่นทั้งหมดจะถูกยกเว้น

ตัวอย่างเช่น หากโมเดลกำลังต่อประโยค "วันนี้บนถนนมีฝน..." ในบรรดาตัวเลือกที่น่าจะเป็นมากที่สุดอาจมี "ตก" (0.45), "ไหลบ่า" (0.25), "หิมะ" (0.15) และ "ลม" (0.10) ที่เกณฑ์ p=0.90 อัลกอริทึมจะรวม token ตามลำดับความน่าจะเป็นที่ลดลง: 0.45 + 0.25 = 0.70 (น้อยกว่า 0.90) เพิ่ม "หิมะ": 0.70 + 0.15 = 0.85 (ยังน้อยกว่า 0.90) เพิ่ม "ลม": 0.85 + 0.10 = 0.95 (เกินเกณฑ์) นิวเคลียสถูกสร้างจาก token สี่ตัว ตัวเลือกที่หายากกว่าทั้งหมดจะถูกทิ้ง และความน่าจะเป็นของตัวที่เหลือจะถูก normalize: ดังนั้นความน่าจะเป็นของ token "ตก" หลัง normalize จะเป็น 0.45/0.9547.4% และตัวสร้างจะเลือก token ถัดไปจากการแจกแจงที่อัปเดตนี้

ความแตกต่างหลักจาก Top‑k คือ Top‑k จะใช้ จำนวนคงที่ ของคำที่ดีที่สุดเสมอ (เช่น 50) ในขณะที่ Top‑p ไม่กำหนดจำนวนตัวเลือกไว้ล่วงหน้า: บางครั้งอาจเป็น 3 คำ บางครั้ง 20 คำ — ขึ้นอยู่กับว่าความน่าจะเป็นกระจายอยู่อย่างไรในขั้นตอนนั้น ด้วยเหตุนี้วิธีนี้จึงปรับตัวตามบริบทและช่วยตัดส่วนหางของ token ที่มีความน่าจะเป็นต่ำ ทำให้ข้อความเป็นธรรมชาติมากขึ้น

อีกตัวอย่างหนึ่ง ตัวอย่างเช่น โมเดลกำลังต่อประโยค "เขาดื่มของร้อน...เป็นอาหารเช้า" ในบรรดาตัวเลือกที่น่าจะเป็นมากที่สุดอาจมี: "ชา" (0.50), "กาแฟ" (0.30), "ช็อกโกแลต" (0.08), "น้ำซุป" (0.04), "นมเปรี้ยว" (0.03) หากกำหนดเกณฑ์ p=0.80 อัลกอริทึมจะเริ่มรวมความน่าจะเป็นจากบนลงล่าง: 0.50 สำหรับ "ชา" จากนั้น 0.50 + 0.30 = 0.80 ถึงเกณฑ์แล้ว ดังนั้นนิวเคลียสประกอบด้วย token สองตัวเท่านั้น: "ชา" และ "กาแฟ" ตัวเลือกอื่นทั้งหมดจะถูกทิ้ง หลัง normalize ความน่าจะเป็นของ "ชา" ภายในนิวเคลียสกลายเป็น 0.50/0.80=62.5% และความน่าจะเป็นของ "กาแฟ" กลายเป็น 0.30/0.80=37.5% token ถัดไปจะถูกเลือกระหว่างสองตัวเลือกนี้เท่านั้น

กล่าวอีกนัยหนึ่ง โมเดลจะลบตัวต่อที่มีความน่าจะเป็นต่ำและไม่เหมาะสมออกก่อน แล้วจึงเลือกจากตัวที่เหลือ วิธีนี้ช่วยให้โมเดลเขียนได้ชัดเจน เป็นธรรมชาติ และไม่มี "สัญญาณรบกวน" โดยไม่จำเป็น

แนวคิด

แนวคิดหลักของ Top‑p คือในแต่ละขั้นตอนจะเลือก กลุ่มที่เล็กที่สุด ของ token ที่น่าจะเป็นมากที่สุด โดยที่ความน่าจะเป็นรวมไม่น้อยกว่าเกณฑ์ที่กำหนด p (นิวเคลียส หรือ nucleus)

ในเชิงรูปแบบ สมมติให้ x(1),x(2), คือ token ในคำศัพท์ V เรียงลำดับตามความน่าจะเป็นเงื่อนไขที่ลดลง P(xx1:i1) จากนั้นนิวเคลียส V(p) จะถูกกำหนดเป็น prefix ที่สั้นที่สุดของลำดับที่เรียงแล้วนี้ ซึ่ง mass สะสมถึงเกณฑ์:

m=min{n:j=1nP(x(j)x1:i1)p},V(p)={x(1),,x(m)}.

กล่าวอีกนัยหนึ่ง นี่คือ กลุ่มที่เล็กที่สุดในเชิงการรวมของ token ที่น่าจะเป็นมากที่สุด ที่มีความน่าจะเป็นรวมไม่น้อยกว่า p[1]

หลังจากกำหนดนิวเคลียสแล้ว ความน่าจะเป็นของ token นอก V(p) จะถูกตั้งเป็นศูนย์ และภายในนิวเคลียสจะถูก normalize (หารด้วย mass สะสมจริง p=xV(p)P(xx1:i1) เพื่อให้ผลรวมเท่ากับ 1) จากนั้น token ถัดไปจะถูกสุ่มจากการแจกแจงที่ตัดและ normalize แล้วนี้

การปรับตัวแบบไดนามิก

  • เมื่อการแจกแจง "แหลมคม" (โมเดลมั่นใจ) นิวเคลียสจะมีขนาดเล็ก: token เพียงไม่กี่ตัวก็ให้ mass ≥ p แล้ว ซึ่งเพิ่มความเชื่อมโยง ในกรณีขีดสุด หากความน่าจะเป็นของ token ที่น่าจะเป็นมากที่สุดเกิน p อยู่แล้ว (เช่น P(x(1))=0.96 เมื่อ p=0.95) นิวเคลียสจะแคบลงเหลือ token เดียวและ Top‑p จะกลายเป็นการถอดรหัสแบบโลภ (greedy search) โดยพฤตินัย
  • เมื่อการแจกแจง "แบน" (มีตัวต่อที่สมเหตุสมผลมาก) นิวเคลียสจะมีขนาดใหญ่: การเลือกจะขยายกว้างขึ้น ความหลากหลายเพิ่มขึ้น[1]

การเปรียบเทียบกับวิธีการถอดรหัสอื่น

Top‑p เทียบกับ Top‑k

  • Top‑k จะเลือกจาก token ที่น่าจะเป็นมากที่สุดจำนวนคงที่ k เสมอ ในการแจกแจง "แหลมคม" สิ่งนี้อาจเพิ่มตัวเลือกที่มีความน่าจะเป็นต่ำโดยไม่จำเป็น "เพื่อให้ครบจำนวน" ในขณะที่ในการแจกแจง "แบน" กลับตัดตัวต่อที่สมเหตุสมผลซึ่งไม่อยู่ใน top‑k ออกไป
  • Top‑p ปรับขนาดกลุ่มผู้สมัครตามข้อมูลของขั้นตอนนั้น ทำให้พฤติกรรมมีความยืดหยุ่นและเสถียรมากขึ้นในการแจกแจงประเภทต่างๆ[1]
  • ในทางปฏิบัติ Top‑k และ Top‑p สามารถใช้ พร้อมกัน ได้ ในกรณีนี้จะเลือก top‑k token ก่อน จากนั้นภายในกลุ่มที่จำกัดนี้จะค้นหานิวเคลียสที่มีเกณฑ์ p ลำดับที่แน่นอนและเหตุผลขึ้นอยู่กับการนำไปใช้ แต่การผสมผสานดังกล่าวได้รับการบันทึกว่าเป็นเทคนิคทั่วไป[5]

พูดให้ง่ายขึ้น Top-k ตัดสินใจล่วงหน้าว่าจะเก็บตัวเลือกกี่ตัว ส่วน Top-p ดูตามสถานการณ์และเก็บตัวเลือกเท่าที่จำเป็นในบริบทนั้น ดังนั้น Top-p จึงมักยืดหยุ่นกว่า ในขณะที่ Top-k ง่ายกว่าและคาดเดาได้มากกว่า

Top‑p เทียบกับอุณหภูมิ

  • อุณหภูมิ (temperature) จะเปลี่ยนรูปร่างทั้งหมดของการแจกแจง (ทำให้แหลมคมหรือเรียบขึ้น) แต่ ไม่ตัด token ออก: แม้แต่ตัวเลือกที่มีความน่าจะเป็นต่ำก็ยังมีโอกาสที่ไม่เป็นศูนย์[5]
  • Top‑p นำเสนอ การตัดส่วนหางอย่างเข้มงวด ของการแจกแจง — token ที่มีความน่าจะเป็นต่ำจะถูกยกเว้นจากการสุ่มตัวอย่างโดยสมบูรณ์ ซึ่งช่วยป้องกันตัวต่อที่ไม่เหมาะสมอย่างชัดเจน[1]
  • ลำดับการใช้งาน ในไปป์ไลน์มาตรฐาน (เช่น Hugging Face Transformers) อุณหภูมิจะถูกใช้กับ logit ก่อน (เปลี่ยนรูปร่างของการแจกแจง) จากนั้นอาจใช้ Top‑k และต่อมา Top‑p (การตัดส่วนหาง) นี่อธิบายว่าทำไม "ผลกระทบสองทาง" จึงควบคุมได้ยาก: การเปลี่ยนอุณหภูมิจะเปลี่ยน mass สะสมที่ Top‑p ทำงานด้วยในภายหลัง[5]

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

ลำดับการดำเนินการในการนำ Hugging Face Transformers ไปใช้

ลำดับการใช้ sampling processor ขึ้นอยู่กับไลบรารีที่เฉพาะเจาะจง ใน Hugging Face Transformers (ตั้งแต่ v4.x) สำหรับชุดพารามิเตอร์สามตัวที่กล่าวถึง logit processor จะถูกเพิ่มตามลำดับเริ่มต้นดังต่อไปนี้:[5][6]

  1. การปรับขนาด logit ด้วยอุณหภูมิ logit ของแต่ละ token จะถูกหารด้วยค่าอุณหภูมิก่อนการยกกำลังด้วยฟังก์ชัน Softmax อุณหภูมิจะปรับเปลี่ยนรูปร่างของการแจกแจง เพื่อเตรียมไว้สำหรับการกรองในภายหลัง
  2. ตัวกรอง Top‑k (หากกำหนดค่าไว้): ตัดคำศัพท์ให้เหลือจำนวนผู้สมัครคงที่
  3. ตัวกรอง Top‑p: การตัดแบบสะสมจะถูกใช้กับกลุ่ม token ที่ลดขนาดลงแล้ว
  4. การ normalize ความน่าจะเป็นที่เหลือและการสุ่มตัวอย่างแบบสุ่ม

ในทางปฏิบัติ การผสมผสานอุณหภูมิปานกลาง (0.7) กับนิวเคลียส Top‑p กว้าง (0.95) และขีดจำกัด Top‑k (50) เป็นที่นิยม: อุณหภูมิให้ความหลากหลายพื้นฐาน Top‑k ทำหน้าที่เป็นตัวป้องกันแบบหยาบ และ Top‑p ดำเนินการปรับแต่งตามบริบท[5]

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

คำแนะนำ: ปรับพารามิเตอร์ทีละตัว

ผู้ให้บริการโมเดลแนะนำให้เมื่อปรับสไตล์การสร้างข้อความ ให้เปลี่ยน อย่างใดอย่างหนึ่ง ระหว่าง temperature หรือ top_p แต่ไม่ใช่ทั้งคู่พร้อมกัน คำแนะนำนี้ปรากฏในเอกสารอย่างเป็นทางการของ OpenAI, Azure OpenAI และ Anthropic[7][8][9]

เหตุผลในทางปฏิบัติ: ทั้งสองพารามิเตอร์ส่งผลต่อรูปร่างของการแจกแจงความน่าจะเป็น (อุณหภูมิเปลี่ยนความชันของเส้นโค้ง ส่วน Top‑p กำหนดจุดตัด) ดังนั้นการเปลี่ยนทั้งสองพร้อมกันจึงทำให้การวินิจฉัยยากขึ้น — ไม่สามารถระบุได้ว่าพารามิเตอร์ใดนำไปสู่ผลลัพธ์ที่ดีขึ้นหรือแย่ลง นอกจากนี้เมื่อค่าทั้งสองพารามิเตอร์ต่ำมาก (เช่น Temperature ≈ 0 และ Top‑p ≈ 0.01) นิวเคลียสในทางปฏิบัติจะแคบลงเหลือ token เดียว ทำให้การสุ่มตัวอย่างกลายเป็นการค้นหาแบบโลภโดยพฤตินัย[7]

โมเดล reasoning บางรุ่นจำกัดการปรับพารามิเตอร์เหล่านี้เพิ่มเติมที่ระดับ API ทำให้คำถามเกี่ยวกับการเปลี่ยนร่วมกันนั้นไม่เกี่ยวข้องสำหรับโมเดลดังกล่าว (ดูส่วน "ความเข้ากันได้กับไลบรารีและ API")[7]

หลักทั่วไปทางวิศวกรรมที่แพร่หลาย: สำหรับงานที่ต้องการความสามารถในการทำซ้ำสูง — ใช้อุณหภูมิต่ำ (จนถึงศูนย์) สำหรับงานสร้างสรรค์ — ปล่อยอุณหภูมิที่ระดับพื้นฐาน (1.0) และควบคุมความหลากหลายด้วยพารามิเตอร์ Top‑p หรือกำหนด Top‑p เป็น 1.0 และเปลี่ยนอุณหภูมิ คำแนะนำเฉพาะอาจแตกต่างกันในแต่ละผู้ให้บริการ[7][9]

ผลกระทบต่อความถูกต้องเชิงข้อเท็จจริงและภาพหลอน

การเลือกกลยุทธ์การถอดรหัสสามารถส่งผลกระทบไม่เพียงต่อสไตล์ของข้อความที่สร้างขึ้น แต่ยังต่อความถี่และประเภทของข้อผิดพลาดเชิงข้อเท็จจริงด้วย ปรากฏการณ์ ภาพหลอน — การสร้างข้อมูลเท็จหรือขัดแย้งกับบริบทอย่างมั่นใจ — เป็นหนึ่งในปัญหาหลักของ AI เชิงสร้างสรรค์ การวิจัยเชิงประจักษ์แสดงให้เห็นว่าผลกระทบของกลยุทธ์การสุ่มตัวอย่างต่อภาพหลอนขึ้นอยู่กับงาน โมเดล และการตั้งค่าพารามิเตอร์เฉพาะ[3][10]

กลไกการเกิดข้อผิดพลาดในการสุ่มตัวอย่างแบบสุ่ม

เมื่อค่า Top‑p สูง (เช่น 0.95) โมเดลจะสร้างนิวเคลียสที่ครอบคลุม 95% ของ mass ความน่าจะเป็น ในสถานะ entropy สูง (เช่น เมื่อพยายามตอบข้อเท็จจริงที่ไม่ค่อยรู้จัก) นิวเคลียสนี้อาจรวม token ที่มีความน่าจะเป็นต่ำหลายร้อยตัว การสุ่มตัวอย่างแบบสุ่มในสภาวะดังกล่าวอาจดึง token ที่ถูกต้องทางไวยากรณ์แต่ไม่เกี่ยวข้องทางความหมายกับความจริงเชิงข้อเท็จจริง เมื่ออยู่ในบริบทแล้ว token ดังกล่าวอาจส่งผลต่อขั้นตอนการสร้างข้อความที่ตามมา เนื่องจากโมเดลสร้างข้อความต่อโดยคำนึงถึง token ก่อนหน้าทั้งหมด รวมถึงตัวที่ผิดพลาดด้วย[3][1]

การแบ่งแยกระหว่างงานแบบเปิดและแบบปิด

การทดลองขนาดใหญ่เผยให้เห็นการพึ่งพาคุณภาพการสร้างข้อความกับประเภทของงาน ในงานเขียนเรียงความหรือระบบสนทนา วิธีการสุ่ม (Top‑p, Temperature) ยังคงเป็นผู้นำ ในขณะที่ในโดเมนที่กำหนดได้อย่างเคร่งครัด วิธีเหล่านี้อาจด้อยกว่าแนวทางแบบกำหนดได้อย่างมาก[10]

ใน benchmark การสังเคราะห์โค้ดโปรแกรม (HumanEval, MBPP) และการแก้ปัญหาคณิตศาสตร์ (GSM8K) วิธีการแบบกำหนดได้ (Beam Search, Greedy Decoding) แสดงผลลัพธ์ที่ดีกว่าเมื่อเทียบกับแนวทางที่ใช้ Top‑p dataset GSM8K ซึ่งประกอบด้วยปัญหาคณิตศาสตร์ 8,500 ข้อที่ต้องใช้การคำนวณ 2 ถึง 8 ขั้นตอน แสดงให้เห็นถึงช่องโหว่ของการเลือกแบบสุ่มในงานดังกล่าว: การแทรกความสุ่มผ่านการแจกแจงที่ตัดแล้วของ Top‑p อาจทำลายห่วงโซ่การอนุมานของโมเดล (Chain‑of‑Thought) ในขั้นตอนกลางใดๆ Tan และคณะเน้นย้ำว่าประสิทธิภาพของวิธีการถอดรหัสขึ้นอยู่กับงานเฉพาะมาก (task‑dependent)[10]

วิธีการต่อต้านภาพหลอนในระดับการถอดรหัส

เพื่อต่อสู้กับผลกระทบของภาพหลอนที่เกิดจากการสุ่มตัวอย่างแบบสุ่ม ได้มีการพัฒนาวิธีการเสริมการถอดรหัสขั้นสูง:

  • การถอดรหัสแบบตัดกัน (Contrastive Decoding, DoLa) — เพิ่มประสิทธิภาพช่องว่างในความน่าจะเป็นลอการิทึมระหว่างโมเดลหลักและโมเดลช่วยเหลือขนาดเล็กกว่า โดยทำหน้าที่เป็นตัวกรองความน่าเชื่อถือ[10]
  • SH2 (Self‑Highlighted Hesitation) — ทำให้ decoder "ลังเล" โดยเจตนาเมื่อทำงานกับ token ที่มีความมั่นใจต่ำ[11]
  • การฉายภาพแบบกำกับ (SEA) — ระงับสัญญาณภาพหลอนที่ระดับการแทน vector[11]

ในขณะเดียวกัน โมเดลสมัยใหม่ที่มีการปรับแนวทาง (alignment) ที่ดีมีความเข้าใจเชิงข้อเท็จจริงที่ลึกกว่า ซึ่งลด entropy ของการแจกแจงภายในและทำให้ไม่ค่อยเสี่ยงต่อการเสื่อมของข้อเท็จจริง แม้จะมีค่า Top‑p สูง[10][12]

การใช้งานจริงและคำแนะนำ

Top‑p ถูกใช้อย่างแพร่หลายใน LLM สมัยใหม่เนื่องจากผสมผสานความยืดหยุ่นและการควบคุมได้

  • ช่วงค่าทั่วไป ในทางปฏิบัติมักใช้ p0.900.95 ค่าเริ่มต้นแตกต่างกันในแต่ละผู้ให้บริการ: ที่ OpenAI `top_p` = 1.0 (การตัดถูกปิดใช้งานโดยพฤตินัย) ที่ Anthropic — 0.99 ที่โมเดล Google Gemini หลายรุ่น — 0.95[13] ในไลบรารี Hugging Face Transformers ค่าเริ่มต้นของ framework ก็เท่ากับ 1.0 เช่นกัน แม้ว่าโมเดลแต่ละรุ่นอาจกำหนดค่าใหม่ใน `generation_config.json`[14] ดังนั้น 0.9–0.95 คือ ช่วงที่แนะนำในทางปฏิบัติทั่วไป แต่ไม่ใช่มาตรฐานสากลตามค่าเริ่มต้น[5][15]
    • ค่าที่ใกล้เคียง 1.0 (เช่น 0.98–0.99) เพิ่มความหลากหลาย: token จำนวนมากขึ้นเข้าสู่นิวเคลียส
    • ค่าต่ำ (เช่น 0.80–0.90) เพิ่มความเป็นกำหนดได้และความ "ยับยั้งชั่งใจ" ของผลลัพธ์
    • เมื่อ p=1 การตัดด้วย Top‑p จะหายไป: การเลือกจะดำเนินการทั่วทั้งคำศัพท์ (โดยคำนึงถึงอุณหภูมิและตัวกรองการถอดรหัสอื่นๆ หากเปิดใช้งาน)[5]
  • ความเข้ากันได้กับไลบรารีและ API
    • ใน Hugging Face Transformers มีการนำ TopPLogitsWarper ไปใช้ โดยใช้เกณฑ์ `min_tokens_to_keep` เพิ่มเติม (ค่าเริ่มต้น 1) นี่คือรายละเอียดการป้องกันในการนำไปใช้: ที่ค่ามาตรฐาน p(0,1] นิวเคลียสว่างไม่เกิดขึ้นตามคำจำกัดความอยู่แล้ว แต่พารามิเตอร์นี้รับประกันการทำงานที่ถูกต้องในกรณีขอบ[16]
    • ใน API บางตัว พารามิเตอร์ `top_p` ใช้ได้ ในขณะที่ `top_k` อาจไม่มี การสนับสนุนพารามิเตอร์และความหมายของพารามิเตอร์ ขึ้นอยู่กับโมเดลและโหมดการทำงานเฉพาะ โมเดล reasoning โดยทั่วไปจำกัดการปรับ stochastic ที่ระดับ API ตัวอย่างเช่น ในเอกสารปัจจุบันของ OpenAI พารามิเตอร์ `temperature` และ `top_p` รองรับอย่างชัดแจ้งเฉพาะใน GPT‑5.2 ที่ `reasoning.effort = none` เท่านั้น คำขอไปยัง GPT‑5.2 หรือ GPT‑5.1 ที่มีค่า `reasoning` อื่น รวมถึงโมเดล GPT‑5 รุ่นก่อนหน้า (`gpt‑5`, `gpt‑5‑mini`, `gpt‑5‑nano`) เมื่อส่ง field เหล่านี้จะเกิดข้อผิดพลาด โมเดล reasoning รุ่นก่อนหน้า (o1, o3) ก็จำกัดหรือกำหนดค่าคงที่ให้กับพารามิเตอร์เหล่านี้เช่นกัน[7][17][18] ที่ Anthropic ใน Claude API เมื่อเปิดใช้งานการคิดเชิงขยาย (extended thinking) การเปลี่ยน `temperature` และ `top_k` เป็นสิ่งต้องห้าม แต่ `top_p` อนุญาตในช่วง 0.95–1.0 บนแพลตฟอร์มบุคคลที่สาม (เช่น Amazon Bedrock) ข้อจำกัดอาจแตกต่างกัน[19] ข้อจำกัดของผู้ให้บริการมักเปลี่ยนแปลงจากเวอร์ชันสู่เวอร์ชัน แนะนำให้ตรวจสอบเอกสารปัจจุบัน[8][20]
  • ข้อความยาวและความสามารถในการทำซ้ำ ในชุดการทดลองแสดงให้เห็นว่า nucleus sampling ลดความเสี่ยงต่อการเสื่อม (การซ้ำซาก วลีซ้ำ) เมื่อเทียบกับ greedy/beam และ Top‑k แบบคงที่ โดยเฉพาะในลำดับยาว[1][10]

ทางเลือกสมัยใหม่

หลังจากการตีพิมพ์ nucleus sampling ในปี 2019 ได้มีการเสนอวิธีการสุ่มตัวอย่างแบบสุ่มทางเลือกหลายวิธีที่พัฒนาหรือเสริมแนวคิด Top‑p:

Min‑p Sampling - การสุ่มตัวอย่างแบบ Min‑p

การสุ่มตัวอย่างแบบ Min‑p (Nguyen et al., 2024) จะเก็บ token ที่มีความน่าจะเป็นไม่น้อยกว่า pmin×P(x(1)) นั่นคือกำหนดเกณฑ์สัมพัทธ์กับ token ที่น่าจะเป็นมากที่สุด ได้รับการยอมรับสำหรับการนำเสนอด้วยวาจาที่ ICLR 2025 และนำไปใช้ในหลาย framework ยอดนิยม รวมถึง Hugging Face Transformers[21] และ vLLM[22][23]

ความแตกต่างสำคัญจาก Top‑p อยู่ที่ประเภทของเกณฑ์: Top‑p ใช้เกณฑ์ สัมบูรณ์ ตามผลรวมสะสมของความน่าจะเป็น ในขณะที่ Min‑p กำหนดเกณฑ์ สัมพัทธ์ ที่ปรับขนาดตามความน่าจะเป็นของ token ที่น่าจะเป็นมากที่สุด[23]

ในเชิงคณิตศาสตร์ อัลกอริทึมทำงานดังนี้: ในแต่ละขั้นตอนจะกำหนดความน่าจะเป็นสูงสุด Pmax=P(x(1)x1:i1) จากนั้นคำนวณเกณฑ์ที่ปรับขนาด Pthreshold=pmin×Pmax ในกลุ่มสุดท้ายจะมีเฉพาะ token ที่มีความน่าจะเป็นเฉพาะตัวเกินเกณฑ์นี้เท่านั้น[24]

สิ่งนี้ให้ความสามารถในการปรับตัว: หากโมเดลมั่นใจในคำถัดไป (Pmax=0.9) ที่ค่าพื้นฐาน pmin=0.1 เกณฑ์จะเป็น 0.09 ตัดส่วน token ที่เป็นสัญญาณรบกวนอย่างเข้มงวด หากโมเดลไม่มั่นใจ (Pmax=0.1) เกณฑ์จะลดลงเป็น 0.01 เปิดรับความหลากหลายของผู้สมัครอย่างกว้างขวางในนิวเคลียส[23]

จุดอ่อนที่รู้จักของ Top‑p ปรากฏขึ้นเมื่อสุ่มตัวอย่างด้วยอุณหภูมิสูง (T>1.0): เมื่อการแจกแจงถูกทำให้เรียบโดยเทียม Top‑p จำเป็นต้องรวม token ที่มีความน่าจะเป็นต่ำจำนวนมากในนิวเคลียสเพื่อให้ได้ผลรวมสะสมตามเป้า ซึ่งอาจนำไปสู่การเสื่อมของความเชื่อมโยง[23] Min‑p รับมือกับสภาวะดังกล่าวได้ดีกว่า ในการทดลองของผู้เขียนใน benchmark ความรู้ทางวิทยาศาสตร์และตรรกะ (GPQA) โดยใช้โมเดล Mistral Large ที่อุณหภูมิสุดขีด T=3.0 อัลกอริทึม Min‑p แสดงความแม่นยำ 13.84% ในขณะที่ Top‑p มาตรฐาน 0.9 ให้ผล 0.89% — ในระดับสัญญาณรบกวนแบบสุ่ม[24]

ในขณะเดียวกัน ในแวดวงวิชาการมีการถกเถียงกัน: งานวิจัยวิจารณ์บางชิ้น (เช่น arXiv:2506.13681) ตั้งคำถามเกี่ยวกับความเป็นสากลของข้อดีของ Min‑p ในทุก metric ของ NLP โดยชี้ให้เห็นถึงความจำเป็นในการศึกษาเพิ่มเติม[25]

พูดให้ง่ายขึ้น Min-p จะเปรียบเทียบตัวเลือกทั้งหมดไม่กับผลรวมความน่าจะเป็นทั้งหมด แต่กับตัวเลือกที่แข็งแกร่งที่สุดในขั้นตอนปัจจุบัน ดังนั้นหากโมเดลมั่นใจ มันจะตัดตัวต่อที่อ่อนแอออกอย่างเข้มงวดกว่า และหากไม่มั่นใจ ก็จะเก็บตัวเลือกที่ยอมรับได้มากขึ้น ด้วยเหตุนี้ Min-p จึงอาจรักษาสมดุลระหว่างความเชื่อมโยงและความหลากหลายได้ดีกว่า โดยเฉพาะในที่ที่ Top-p เริ่มปล่อยคำที่อ่อนแอผ่านมากเกินไป

Locally Typical Sampling - การสุ่มตัวอย่างแบบทั่วไปเฉพาะที่

การสุ่มตัวอย่างแบบทั่วไปเฉพาะที่ (Meister et al., 2023) เลือก token ที่มีภาระข้อมูล (logP) ใกล้เคียงกับ entropy เงื่อนไข โดยอาศัยแนวคิดความทั่วไปทางทฤษฎีข้อมูล[2]

ต่างจาก Top‑p ที่พยายามลดขนาดนิวเคลียสให้เล็กที่สุดโดยเลือก token ที่มีความน่าจะเป็นสูงสุด Locally Typical Sampling แก้ปัญหาการเพิ่มประสิทธิภาพตาม metric ระยะทางข้อมูล อัลกอริทึมคำนวณเนื้อหาข้อมูลของแต่ละ token (logP(x)) และวัดระยะสัมบูรณ์ถึง entropy เงื่อนไข H ของโมเดล Token จะถูกจัดอันดับไม่ใช่ตามความน่าจะเป็นดิบ แต่ตามระดับ "ความทั่วไปเชิงข้อมูล" — ความใกล้ชิดกับเนื้อหาข้อมูลที่คาดหวังของบริบท Token จะถูกเพิ่มในนิวเคลียส (ตามลำดับระยะทางที่เพิ่มขึ้นถึง entropy) จนถึงเกณฑ์ความน่าจะเป็นสะสม[2][26]

ผลลัพธ์ของแนวทางนี้: ในสถานะ entropy สูง อัลกอริทึมจะกำจัดออกอย่างมีจุดมุ่งหมายไม่เพียงแต่ส่วนหางที่เป็นสัญญาณรบกวนที่มีความน่าจะเป็นต่ำ แต่ยังรวมถึงคำที่มีความน่าจะเป็นสูงเกินไปซึ่งมีข้อมูลน้อยเกินไปและทำให้ข้อความซ้ำซาก วิธีนี้ลดความเสี่ยงของการวนซ้ำแบบเสื่อมถอยและทำให้ metric การซ้ำของข้อความใกล้เคียงกับค่าที่มีลักษณะเฉพาะสำหรับข้อความที่เขียนโดยมนุษย์[26]

Tail Free Sampling (TFS) - การสุ่มตัวอย่างแบบหางปลอดภัย

Tail Free Sampling (TFS) คือแนวทางที่ไม่ค่อยเป็นทางการแต่น่าสนใจในทางปฏิบัติสำหรับการระบุส่วนหางที่เป็นสัญญาณรบกวน โดยอาศัยการวิเคราะห์เชิงอนุพันธ์ของพื้นที่ความน่าจะเป็น หาก Top‑p และ Min‑p ดำเนินการกับความน่าจะเป็นอันดับแรก (ผลรวมสะสมและเศษส่วนพื้นฐาน) TFS จะวิเคราะห์ อนุพันธ์อันดับหนึ่งและสอง ของเส้นโค้งความน่าจะเป็นที่เรียงแล้ว วิธีนี้ถูกอธิบายในบล็อกของ Trenton Bricken และนำไปใช้ในบาง inference engine แม้ว่าจะไม่ได้รับการตีพิมพ์ในรูปแบบบทความที่ผ่านการตรวจสอบโดยเพื่อน[27]

สมมติฐานหลักของ TFS: แม้แต่การรวม token ที่เป็นสัญญาณรบกวนเพียงตัวเดียวในตัวอย่างก็นำภัยคุกคามแบบเอ็กซ์โพเนนเชียลต่อการสร้างข้อความแบบ autoregressive ทั้งหมด โดยการคำนวณอนุพันธ์อันดับสองจากค่าความน่าจะเป็น อัลกอริทึมจะระบุ "ที่ราบ" — ส่วนของเส้นโค้งที่การลดลงของความน่าจะเป็นช้าลงและเปลี่ยนเป็นส่วนหางที่ยาวและราบเรียบ จุดการเบี่ยงเบนนี้กลายเป็นขอบเขตการตัดแบบไดนามิก: token ก่อนหน้ามันถือว่าปลอดภัยทางความหมาย และส่วนหางทั้งหมดจะถูกลบออก[27]

แม้จะมีความสง่างามทางคณิตศาสตร์ TFS ต้องการต้นทุนการคำนวณที่เข้มข้นกว่าสำหรับการคำนวณอนุพันธ์แบบเรียลไทม์ ทำให้ในผลิตภัณฑ์เชิงพาณิชย์ขนาดใหญ่มันด้อยกว่าอัลกอริทึมที่เบากว่า[27]

p‑less Sampling - การสุ่มตัวอย่างแบบ p‑less

p‑less sampling คือวิธีที่ช่วยให้วิศวกรไม่ต้องปรับ hyperparameter การตัดโดยสมบูรณ์[28] ปัญหาพื้นฐานของทุกวิธีก่อนหน้า — ตั้งแต่ Top‑k และ Top‑p ไปจนถึง Min‑p — คือการพึ่งพา hyperparameter แบบคงที่ ซึ่งค่าต้องการการปรับแต่งจากผู้เชี่ยวชาญและอาจเหมาะสมสำหรับงานหนึ่ง (การเขียนเชิงสร้างสรรค์) แต่ไม่ดีสำหรับงานอื่น (การเขียนโปรแกรม)[29]

อัลกอริทึม p‑less ซึ่งหยั่งรากในทฤษฎีข้อมูล จะสร้างเกณฑ์การตัดเฉพาะในแต่ละขั้นตอนการถอดรหัสแบบไดนามิก โดยวิเคราะห์โทโพโลยีภายในของการแจกแจงความน่าจะเป็นทั้งหมดแบบเรียลไทม์ ผู้เขียนรายงานความเสถียรของวิธีต่อความผันผวนของอุณหภูมิ (temperature robustness): เมื่ออุณหภูมิเพิ่มขึ้น วิธีการดั้งเดิมอาจเสื่อมอย่างมาก ในขณะที่ p‑less รักษาความเสถียรของคุณภาพ นอกจากนี้เนื่องจากการละทิ้งตรรกะการสแกนสะสมและการ normalize นิวเคลียสขนาดใหญ่ ตามข้อมูลของผู้เขียน วิธีนี้ให้ประสิทธิภาพการคำนวณที่สูงกว่าในขั้นตอน inference และสร้างคำตอบที่กะทัดรัดกว่าโดยไม่สูญเสียความแม่นยำใน dataset คณิตศาสตร์ ตรรกะ และการเขียนเชิงสร้างสรรค์[29][28]

η‑Sampling - การสุ่มตัวอย่างแบบ η

การสุ่มตัวอย่างแบบ η (Hewitt et al., 2022) ใช้เกณฑ์ความน่าจะเป็นที่ขึ้นอยู่กับ entropy ปรับตัวกับบริบท entropy ต่ำที่ Top‑p อาจตัดมากเกินไป[30]

เอกสารอ้างอิง

  • Holtzman, A., Buys, J., Du, L., Forbes, M., & Choi, Y. (2019; ตีพิมพ์ใน ICLR 2020). The Curious Case of Neural Text Degeneration. arXiv:1904.09751.
  • Fan, A., Lewis, M., & Dauphin, Y. (2018). Hierarchical Neural Story Generation. arXiv:1805.04833.
  • Meister, C., Pimentel, T., Wiher, G., & Cotterell, R. (2023). Locally Typical Sampling. arXiv:2202.00666.
  • Ravfogel, S., Goldberg, Y., & Goldberger, J. (2023). Conformal Nucleus Sampling. ACL Findings 2023.
  • Tan, Q. et al. (2024). A Thorough Examination of Decoding Methods in the Era of LLMs. arXiv:2402.06925.
  • Finlayson, M. et al. (2024). Closing the Curious Case of Neural Text Degeneration. arXiv:2310.01693.
  • Chen, S. J. et al. (2025). Decoding Game: On Minimax Optimality of Heuristic Text Generation Strategies. arXiv:2410.03968.
  • Nguyen, M. et al. (2024). Turning Up the Heat: Min-p Sampling for Creative and Coherent LLM Outputs. arXiv:2407.01082.
  • Sen, J. et al. (2025). Advancing Decoding Strategies: Enhancements in Locally Typical Sampling for LLMs. arXiv:2506.05387.
  • Bricken, T. Tail Free Sampling. [32].
  • p‑less Sampling: A Robust Hyperparameter-Free Approach for LLM Decoding. arXiv:2509.23234.

หมายเหตุ

  1. 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 Holtzman, A., Buys, J., Du, L., Forbes, M., & Choi, Y. (2019). The Curious Case of Neural Text Degeneration. arXiv:1904.09751. [1]
  2. 2.0 2.1 2.2 Meister, C., Pimentel, T., Wiher, G., & Cotterell, R. (2023). Locally Typical Sampling. TACL, Vol. 11. arXiv:2202.00666. [2]
  3. 3.0 3.1 3.2 Large Language Models Hallucination: A Comprehensive Survey. arXiv:2510.06265. [3]
  4. Finlayson, M. et al. (2024). Closing the Curious Case of Neural Text Degeneration. arXiv:2310.01693. [4]
  5. 5.0 5.1 5.2 5.3 5.4 5.5 5.6 Hugging Face Transformers. Generation strategies (top‑k, top‑p, temperature). [5]
  6. Hugging Face Transformers. generation/utils.py (исходный код). [6]
  7. 7.0 7.1 7.2 7.3 7.4 OpenAI API Reference. top_p — рекомендация «We generally recommend altering this or temperature but not both». [7]
  8. 8.0 8.1 Microsoft Learn (Azure OpenAI). Text/Chat Completions — parameters. [8]
  9. 9.0 9.1 Anthropic API Reference. Messages API — top_p. [9]
  10. 10.0 10.1 10.2 10.3 10.4 10.5 Tan, Q. et al. (2024). A Thorough Examination of Decoding Methods in the Era of LLMs. arXiv:2402.06925. [10]
  11. 11.0 11.1 From Illusion to Insight: A Taxonomic Survey of Hallucination Mitigation Techniques in LLMs. MDPI. [11]
  12. Survey and analysis of hallucinations in large language models: attribution to prompting strategies or model behavior. Frontiers in AI. [12]
  13. Anthropic. API release notes. [13]
  14. Hugging Face. GenerationConfig (top_p default). [14]
  15. Google AI / Vertex AI. Content generation parameters (topP/topK). [15] [16]
  16. Transformers API. TopPLogitsWarper (параметры и поведение, включая `min_tokens_to_keep`). [17]
  17. OpenAI API. Using reasoning models — parameter support. [18]
  18. OpenAI API. Using GPT-5.2. [19]
  19. Anthropic. Building with extended thinking. [20]
  20. Microsoft Learn (Azure AI Foundry). Reasoning models — supported parameters. [21]
  21. Hugging Face Transformers. MinPLogitsWarper. [22]
  22. vLLM. Sampling Parameters — min_p. [23]
  23. 23.0 23.1 23.2 23.3 Nguyen, M. et al. (2024). Turning Up the Heat: Min-p Sampling for Creative and Coherent LLM Outputs. arXiv:2407.01082. [24]
  24. 24.0 24.1 Nguyen, M. et al. Turning Up the Heat: Min-p Sampling for Creative and Coherent LLM Outputs. [25]
  25. Turning Down the Heat: A Critical Analysis of Min-p Sampling in Language Models. arXiv:2506.13681. [26]
  26. 26.0 26.1 Locally Typical Sampling. Transactions of the ACL, MIT Press. [27]
  27. 27.0 27.1 27.2 Bricken, T. Tail Free Sampling. [28]
  28. 28.0 28.1 p‑less Sampling: A Robust Hyperparameter-Free Approach for LLM Decoding. OpenReview. [29]
  29. 29.0 29.1 p‑less Sampling: A Robust Hyperparameter-Free Approach for LLM Decoding. arXiv:2509.23234. [30]
  30. Hewitt, J., Manning, C. D., & Liang, P. (2022). Truncation Sampling as Language Model Desmoothing. Findings of EMNLP 2022. arXiv:2210.15191. [31]

ดูเพิ่มเติม

  • อุณหภูมิ
  • โมเดลภาษาขนาดใหญ่