Top-k sampling (TH)

From Systems analysis Wiki
Jump to navigation Jump to search

การสุ่มตัวอย่าง Top-k คือวิธีการ decoding แบบ stochastic ที่ใช้ในโมเดลภาษาแบบ autoregressive รวมถึงโมเดลภาษาขนาดใหญ่ (LLM) สำหรับการสร้างข้อความ เป้าหมายหลักคือการจำกัดการเลือก token ถัดไปให้อยู่ในกลุ่มผู้สมัครที่มีความน่าจะเป็นสูงสุดจำนวนคงที่ (k) เพื่อหลีกเลี่ยงการสร้างคำที่มีความน่าจะเป็นต่ำและมักไม่เหมาะสม วิธีนี้เป็นหนึ่งในการปรับปรุงแรกๆ จากการสุ่มตัวอย่างแบบง่าย และเป็นที่นิยมอย่างยาวนานในฐานะวิธีปรับปรุง coherence ของข้อความที่สร้างขึ้น

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

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

ตัวอย่างเช่น โมเดลกำลังเติมประโยค «วันนี้ข้างนอกมี…». ในพจนานุกรมของโมเดลมีตัวต่อนับพัน: «ฝน», «ลม», «หิมะ», «พายุ» — และที่ไกลออกไปคือ «ควอนตัม» หรืออักขระสุ่ม หากไม่มีข้อจำกัด การสร้างข้อความจะเกิดการเสื่อมคุณภาพ (text degeneration) หลายรูปแบบ วิธีการแบบ maximization (greedy decoding, beam search) จะสร้างข้อความที่น่าเบื่อและซ้ำซาก ในขณะที่การสุ่มตัวอย่างแบบบริสุทธิ์โดยไม่ตัดทอนอาจทำให้ข้อความไม่ปะติดปะต่อ เนื่องจากการเลือก token ที่มีความน่าจะเป็นต่ำจาก «หางการแจกแจงที่ไม่น่าเชื่อถือ» Top-k มุ่งแก้ปัญหาที่สองเป็นหลัก — โดยการตัดหางออก จะลดความเสี่ยงของการต่อข้อความที่ไม่มีความหมาย แม้ว่าตัวมันเองจะไม่ขจัดปัญหาความซ้ำซากก็ตาม Top-k บอกว่า: «นำเฉพาะ k คำที่มีความน่าจะเป็นสูงสุด ลืมส่วนที่เหลือ คำนวณความน่าจะเป็นใหม่ในกลุ่มนั้น แล้วเลือกหนึ่งคำแบบสุ่ม»

พูดง่ายๆ คือ:

  • โมเดลสร้างรายการตัวต่อที่มีความน่าจะเป็นสูงสุด;
  • นำเฉพาะ k ตัวเลือกแรก;
  • เลือกหนึ่งตัวเลือกจากรายการนั้นแบบสุ่ม

ยิ่ง k น้อย ผลลัพธ์ยิ่งระมัดระวังและคาดเดาได้มากขึ้น ยิ่ง k มาก การสร้างข้อความยิ่งอิสระและหลากหลายมากขึ้น

การเปรียบเทียบ:

  • เมนูร้านอาหาร: แทนที่จะเลือกแบบสุ่มจากรายการ 5,000 รายการ (เสี่ยงได้ของที่กินไม่ได้) หรือสั่งแต่เมนูยอดนิยมเสมอ (น่าเบื่อ) บริกรจะนำเสนอเฉพาะ 40 รายการที่แนะนำสูงสุด — เลือกจากรายการที่สมเหตุสมผล อย่างไรก็ตาม บางครั้งในส่วนที่ถูกตัดออกอาจมีเมนูพิเศษที่คุณชอบพอดี — นั่นคือราคาของความสามารถในการคาดเดา
  • รายชื่อผู้เข้ารอบสุดท้าย: จากผู้สมัครงาน 1,000 คน คัดเหลือเพียง 40 ประวัติที่ดีที่สุด แล้วจึงสัมภาษณ์

แนวคิดและคณิตศาสตร์

ในแต่ละขั้นตอนของการสร้างข้อความ โมเดลภาษามาตรฐานจะให้การแจกแจงความน่าจะเป็น P(x|x1:i1) ทั่วทั้งพจนานุกรม V การสุ่มตัวอย่าง Top-k ดัดแปลงกระบวนการนี้ดังนี้:

  • การคัดเลือกผู้สมัคร: จากพจนานุกรมทั้งหมด จะเลือกชุดย่อย V(k) ที่ประกอบด้วย k token ที่มีความน่าจะเป็นสูงสุด
  • การตัดออก: Logit (การทำนายดิบของโมเดลก่อนการใช้ Softmax) ของ token ทั้งหมดที่ไม่ได้อยู่ใน V(k) จะถูกกำหนดค่าเป็น ซึ่งหลังจาก normalization จะให้ความน่าจะเป็นเท่ากับ 0 อย่างเคร่งครัด
  • การกระจายใหม่ (normalization): ความน่าจะเป็นของ k token ที่เหลืออยู่จะถูก scale ให้ผลรวมใหม่เท่ากับ 1
  • การสุ่มตัวอย่าง: token ถัดไปจะถูกเลือกแบบสุ่มจากการแจกแจงที่ถูกตัดทอนใหม่นี้

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

ผลกระทบของพารามิเตอร์ k

  • k ขนาดเล็ก (เช่น k=510): ทำให้การสร้างข้อความมีความอนุรักษ์นิยมและคาดเดาได้มากขึ้น โมเดลเลือกจากชุดคำที่มีความน่าจะเป็นสูงสุดที่จำกัดมาก ซึ่งเพิ่ม coherence แต่อาจทำให้ข้อความซ้ำซากและน่าเบื่อ
  • k ขนาดใหญ่ (เช่น k=50100): เพิ่มความหลากหลายและความคิดสร้างสรรค์ของข้อความ เนื่องจากมีตัวเลือกมากขึ้นในการสุ่มตัวอย่าง อย่างไรก็ตาม สิ่งนี้ยังเพิ่มความเสี่ยงของการรวม token ที่มีความเกี่ยวข้องน้อยหรือไม่เหมาะสม
  • กรณีขอบเขต:
    • k=1: เทียบเท่ากับการ decoding แบบ greedy (greedy decoding) โมเดลจะเลือก token ที่มีความน่าจะเป็นสูงสุดเสมอ
    • k = ขนาดพจนานุกรม: เทียบเท่ากับการสุ่มตัวอย่างมาตรฐานจากการแจกแจงทั้งหมด โดยไม่มีการตัดทอน

ความสำคัญทางประวัติศาสตร์

การสุ่มตัวอย่าง Top-k ในฐานะวิธีการ decoding เป็นหนึ่งในการประยุกต์ใช้ที่ประสบความสำเร็จในช่วงแรกในงานของ Angela Fan และเพื่อนร่วมงาน (2018) ชื่อ «Hierarchical Neural Story Generation» ซึ่งผู้เขียนใช้ top-k random sampling (ด้วย k=10) ในระบบการสร้างเรื่องราวแบบลำดับชั้น และแสดงให้เห็นว่ากลยุทธ์ดังกล่าวมีประสิทธิภาพมากกว่า beam search และการสุ่มตัวอย่างแบบสมบูรณ์อย่างมีนัยสำคัญ ซึ่งเสี่ยงต่อการนำคำที่มีความน่าจะเป็นต่ำเข้ามา

อย่างไรก็ตาม งานสำคัญที่วิเคราะห์ปัญหาการเสื่อมคุณภาพของข้อความอย่างเป็นระบบ และแสดงให้เห็นว่าวิธีการ truncation รวมถึง top-k ปรับปรุงคุณภาพการสร้างข้อความได้อย่างมีนัยสำคัญ คือบทความของ Holtzman et al. (2019) ชื่อ «The Curious Case of Neural Text Degeneration» โดยผู้เขียนเสนอtop-p (nucleus sampling)เป็นทางเลือกที่ปรับตัวได้มากกว่า top-k โดยแสดงให้เห็นตาม HUSE metric ของตนว่า nucleus sampling ให้ผลลัพธ์ที่ดีกว่าในบรรดากลยุทธ์ที่เปรียบเทียบ

ตัวอย่างเช่น ในการสาธิตและคำแนะนำช่วงแรกสำหรับ GPT-2 มีการใช้ค่า `top_k=40` อย่างแพร่หลาย (ซึ่งกล่าวถึงในโค้ดของ OpenAI ว่าเป็น «generally a good value») ซึ่งช่วยสร้างข้อความที่ยาวและมี coherence

การเปรียบเทียบกับวิธีการ decoding อื่นๆ

Top-k vs. Top-p

Top-k ได้รับการเสริมในหลายด้าน และในงานบางประเภทถูกแทนที่ด้วยวิธีการที่พัฒนาขึ้นกว่า ได้แก่ การสุ่มตัวอย่าง Top-p (nucleus)

  • จุดอ่อนหลักของ Top-k คือการขาดความสามารถในการปรับตัว ค่าคงที่ k ไม่ได้คำนึงถึงรูปร่างของการแจกแจงความน่าจะเป็น:
    • เมื่อการแจกแจงแหลมคม (โมเดลมั่นใจใน token เพียงไม่กี่ตัว) Top-k อาจขยายการสุ่มตัวอย่างอย่างไม่เป็นธรรมชาติ โดยรวม token ที่มีความน่าจะเป็นต่ำเข้าไปด้วย
    • เมื่อการแจกแจงแบน (โมเดลไม่แน่ใจและ token จำนวนมากมีความน่าจะเป็นใกล้เคียงกัน) Top-k อาจตัดทอนตัวเลือกที่เหมาะสมจำนวนมากออกก่อนเวลาอันควร
    • นอกจากนี้ Top-k ยังตัด «หาง» ของการแจกแจงอย่างเด็ดขาด (tail truncation) ทำให้ token ที่เหมาะสมกับบริบทแต่หายากอาจสูญหายไป — วิธีนี้สละความคิดสร้างสรรค์ที่อาจเกิดขึ้นเพื่อแลกกับ coherence
  • Top-p ในทางตรงกันข้าม ปรับขนาดการสุ่มตัวอย่างแบบไดนามิก โดยคัดเลือก token ตามความน่าจะเป็นสะสม ทำให้มีความยืดหยุ่นและเชื่อถือได้มากกว่า
  • ในทางปฏิบัติ ทั้งสองวิธีมักใช้ร่วมกันเป็น filter ต่อเนื่อง: วิธีหนึ่งจำกัดจำนวนผู้สมัครอย่างหยาบ อีกวิธีหนึ่งแคบการสุ่มตัวอย่างแบบไดนามิกตามความมั่นใจของโมเดล ลำดับการนำไปใช้ขึ้นอยู่กับการ implement ของ framework เฉพาะ

Top-k vs. อุณหภูมิ (Temperature)

  • อุณหภูมิ (Temperature) เปลี่ยนรูปร่างของการแจกแจงความน่าจะเป็นทั้งหมด แต่ไม่ได้ตัด token ออก โดยส่งผลต่อความน่าจะเป็นสัมพัทธ์ของผู้สมัครทั้งหมด
  • Top-k กำหนดการตัดอย่างเด็ดขาด โดยตัด token ที่อยู่นอกกลุ่ม top-k ออกทั้งหมด

ในทางปฏิบัติ Top-k อาจใช้ร่วมกับอุณหภูมิและ Top-p ลำดับการนำ filter ไปใช้ขึ้นอยู่กับ framework: ตัวอย่างเช่น ใน Hugging Face Transformers ขั้นตอนคือ อุณหภูมิ → Top-k → Top-p กล่าวคือ อุณหภูมิจะ scale logit (l=l/τ) ก่อน จากนั้น Top-k จะตัด «หาง» ยาวของ token ที่ไม่มีคุณภาพออก และหลังจากนั้น Top-p จะแคบการสุ่มตัวอย่างแบบไดนามิกตามความมั่นใจของโมเดล โดยแต่ละขั้นตอนอาจถูกข้ามขึ้นอยู่กับการตั้งค่า: หาก top_k=0 ขั้นตอน Top-k จะไม่ถูกนำไปใช้; หาก top_p=1.0 ขั้นตอน Top-p จะไม่ถูกนำไปใช้

การประยุกต์ใช้ในทางปฏิบัติ

แม้ว่า Top-p จะเป็นวิธีการที่ปรับตัวได้มากกว่าและมักใช้เป็นค่าเริ่มต้นสำหรับการสร้างข้อความแบบเปิด แต่ไม่มีวิธีการ decoding ที่ดีที่สุดในทุกกรณี — การเลือกที่เหมาะสมขึ้นอยู่กับงาน โมเดล และลำดับความสำคัญ (คุณภาพ ความเร็ว ความเสถียร) Top-k ยังคงเป็นพารามิเตอร์ที่ได้รับการสนับสนุนอย่างกว้างขวางในทุก framework หลัก (Hugging Face Transformers, vLLM และอื่นๆ) และถูกใช้งานอย่างแข็งขันทั้งแบบเดี่ยวและร่วมกับวิธีการอื่น

  • ค่าทั่วไป: ในทางปฏิบัติมักใช้ค่า k ในระดับหลายสิบ token (เช่น 10, 40, 50) แต่ค่าที่เหมาะสมที่สุดขึ้นอยู่กับโมเดลและงาน
  • คำแนะนำ: สำหรับการสร้างข้อความแบบเปิด มักนิยม Top-p หากใช้ Top-k ควรใช้ร่วมกับอุณหภูมิที่พอเหมาะและเลือกค่า k ให้เหมาะสมกับงานเฉพาะอย่างรอบคอบ Top-k ยังสะดวกในฐานะ «ตัวป้องกัน» เพิ่มเติมเมื่ออุณหภูมิสูง
  • หมายเหตุ: ใน framework Top-k อาจใช้ร่วมกับ Repetition Penalty (การลงโทษสำหรับการซ้ำ) และพารามิเตอร์ no_repeat_ngram_size เพื่อป้องกันไม่ให้โมเดลวนซ้ำบนคำเดิมจากรายการ top-k

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

งานพื้นฐาน

  • Fan, A. et al. (2018). Hierarchical Neural Story Generation. ACL Anthology. arXiv:1805.04833.
  • Holtzman, A. et al. (2019). The Curious Case of Neural Text Degeneration. arXiv:1904.09751 (ICLR 2020).
  • Finlayson, M. et al. (2024). Closing the Curious Case of Neural Text Degeneration. OpenReview:dONpC9GL1o (ICLR 2024).

อ่านเพิ่มเติม

  • Meister, C. et al. (2022). Locally Typical Sampling. arXiv:2202.00666 (TACL 2023).
  • Su, Y.; Lan, T.; Wang, Y.; Yogatama, D.; Kong, L.; Collier, N. (2022). A Contrastive Framework for Neural Text Generation. arXiv:2202.06417 (NeurIPS 2022).
  • O'Brien, S.; Lewis, M. (2023). Contrastive Decoding Improves Reasoning in Large Language Models. arXiv:2309.09117.
  • Shi, C. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. ACL Anthology. arXiv:2402.06925.
  • Ravfogel, S.; Goldberg, Y.; Goldberger, J. (2023). Conformal Nucleus Sampling. arXiv:2305.02633.
  • Chen, S. J. et al. (2024). Decoding Game: On Minimax Optimality of Heuristic Text Generation Strategies. arXiv:2410.03968 (ICLR 2025).
  • Sen, J. et al. (2025). Advancing Decoding Strategies: Enhancements in Locally Typical Sampling for LLMs. arXiv:2506.05387.

ดูเพิ่มเติม

  • โมเดลภาษาขนาดใหญ่