Stop sequences (language models) (TH)
Stop Sequence (ลำดับหยุดการสร้างข้อความ) ในบริบทของโมเดลภาษาขนาดใหญ่ (LLM) คือลำดับพิเศษของอักขระหรือ token ที่ส่งสัญญาณให้โมเดลหยุดการสร้างข้อความ[1] กลไกนี้เป็นองค์ประกอบสำคัญของโมเดลภาษาแบบ autoregressive ที่ช่วยให้การสิ้นสุดของคำตอบเป็นไปอย่างควบคุมได้และคาดเดาได้
เมื่อใช้ stop sequence โมเดลจะตรวจสอบในทุกขั้นตอนของการสร้างข้อความว่าข้อความที่สร้างไปแล้วนั้นลงท้ายด้วยลำดับใดลำดับหนึ่งที่กำหนดไว้หรือไม่ หากพบความตรงกัน กระบวนการจะหยุดทันที โดย stop sequence จะไม่ถูกรวม ในผลลัพธ์สุดท้าย[2] ซึ่งช่วยให้นักพัฒนาควบคุมขอบเขตของคำตอบได้อย่างแม่นยำโดยไม่ต้องแก้ไข prompt
หลักการทำงานพื้นฐาน
ในโมเดลภาษาแบบ autoregressive การสร้างข้อความจะเกิดขึ้นตามลำดับทีละ token ในแต่ละขั้นตอนโมเดลจะทำนาย token ถัดไปโดยอิงจากลำดับก่อนหน้าทั้งหมด (input prompt และข้อความที่สร้างไปแล้ว) ในเชิงคณิตศาสตร์สามารถแสดงได้เป็นความน่าจะเป็นแบบมีเงื่อนไข:
โดยที่ คือ token ที่กำลังสร้างในขณะนั้น คือลำดับของ token ที่สร้างไปก่อนหน้า และ คือลำดับอินพุต[3]
กลไก stop sequence ทำหน้าที่เป็นเกณฑ์ภายนอกสำหรับการขัดจังหวะกระบวนการวนซ้ำนี้
ประเภทของลำดับหยุด
มีประเภทหลักของกลไกหยุดอยู่หลายประเภทที่สามารถใช้งานได้ทั้งแบบแยกกันและแบบผสมผสานกัน
1. Token สิ้นสุดลำดับ (EOS)
End-of-Sequence (EOS) คือ token พิเศษ (เช่น `<|endoftext|>`) ที่ฝังอยู่ในพจนานุกรมของโมเดลและมีไว้เพื่อระบุจุดสิ้นสุดของส่วนข้อความเชิงตรรกะ โมเดลได้รับการฝึกให้สร้าง EOS token เมื่อเห็นว่าคำตอบเสร็จสมบูรณ์แล้ว เนื่องจากข้อความทั้งหมดในชุดข้อมูลฝึกอบรมจะลงท้ายด้วย token นี้[4] เมื่อตรวจพบ EOS token การสร้างข้อความจะหยุดโดยอัตโนมัติ
งานวิจัยแสดงให้เห็นว่าการมี EOS token ส่งผลต่อสถาปัตยกรรม attention: โมเดลพัฒนากลไกภายในสำหรับการนับตำแหน่ง ซึ่งอย่างไรก็ตามอาจจำกัดความสามารถในการ extrapolation บนลำดับที่ยาวกว่าตัวอย่างการฝึกอบรมอย่างมีนัยสำคัญ[5]
2. ลำดับที่กำหนดเอง
คือสตริงที่กำหนดเองซึ่งนักพัฒนากำหนดขึ้นสำหรับงานเฉพาะ ลำดับเหล่านี้ไม่ได้เป็นส่วนหนึ่งของพจนานุกรมโมเดล แต่ถูกติดตามในระดับอักขระ ตัวอย่างได้แก่:
- อักขระขึ้นบรรทัดใหม่: `\n` หรือ `\n\n` สำหรับหยุดหลังจากย่อหน้า
- เครื่องหมายบอกบริบท: `Human:`, `User:` หรือ `Q:` สำหรับแบ่งบทพูดในบทสนทนา
- เครื่องหมายพิเศษ: `###`, `</output>` หรือ `END`
3. ลำดับเชิงโครงสร้าง
คือเครื่องหมายเฉพาะทางที่ใช้สำหรับสิ้นสุดองค์ประกอบเชิงโครงสร้างบางอย่าง ซึ่งมีความสำคัญอย่างยิ่งในการสร้างเนื้อหาที่มีรูปแบบ[1]:
- โค้ด: เครื่องหมายอัญประกาศกลับสามตัว (```) สำหรับสิ้นสุดบล็อกโค้ด
- JSON/XML: วงเล็บปิด (`}`) หรือแท็ก (`</element>`)
การนำไปใช้ในทางเทคนิคและปัญหาที่พบ
การตรวจจับ stop sequence อย่างมีประสิทธิภาพเป็นงานที่ไม่ง่าย และมาพร้อมกับความซับซ้อนหลายประการ
อัลกอริทึมการตรวจจับและการปรับให้เหมาะสม
กระบวนการตรวจจับในระบบจริงประกอบด้วย:
- การตรวจสอบในทุกขั้นตอน: หลังจากสร้าง token ใหม่แต่ละตัว ระบบจะตรวจสอบว่าผลลัพธ์ปัจจุบันลงท้ายด้วย stop sequence ใดลำดับหนึ่งหรือไม่
- การจัดการกับการจับคู่บางส่วน: ระบบต้องติดตามสถานการณ์ที่สร้างลำดับไปบางส่วนแล้วแต่ยังไม่มีการจับคู่ที่สมบูรณ์
- การตรวจสอบหลายเกณฑ์: ระบบส่วนใหญ่ (เช่น OpenAI API) อนุญาตให้ติดตาม stop sequence หลายรายการ (สูงสุดสี่รายการ) พร้อมกัน[2]
ใน framework Hugging Face Transformers มีการนำคลาสนามธรรม `StoppingCriteria` มาใช้เพื่อจุดประสงค์นี้ ซึ่งช่วยให้สร้างเกณฑ์หยุดแบบกำหนดเองได้ เช่น `MaxLengthCriteria` (ตามความยาว) หรือ `EosTokenCriteria` (ตาม EOS token)[4]
ปัญหาและข้อจำกัด
- ปัญหาการ tokenize: นี่คือความยากทางเทคนิคหลัก ลำดับอักขระเดียวกัน (เช่น `\nUser:`) อาจถูกแบ่งเป็น token แตกต่างกันขึ้นอยู่กับบริบท ทำให้การตรวจจับที่เชื่อถือได้ทำได้ยากขึ้น เนื่องจาก stop sequence อาจถูกแบ่งระหว่าง token หลายตัว[5]
- ประสิทธิภาพ: การตรวจสอบ stop sequence ยาวๆ หลายรายการในทุกขั้นตอนอาจทำให้การสร้างช้าลง โดยเฉพาะเมื่อทำงานกับลำดับยาวในแบบ real-time
- การตรวจจับผิดพลาด: ลำดับที่กำหนดอาจปรากฏโดยบังเอิญในช่วงกลางของคำตอบที่ต้องการ ทำให้สิ้นสุดก่อนกำหนด ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องเลือกเครื่องหมายที่มีความเฉพาะเจาะจงและไม่ซ้ำกันเพียงพอ (เช่น `\n###\n`)[6]
การประยุกต์ใช้และสถานการณ์การใช้งาน
Stop sequence เป็นเครื่องมืออันทรงพลังสำหรับการควบคุมพฤติกรรมของ LLM
- การควบคุมความยาวและต้นทุน: ช่วยจำกัดขนาดสูงสุดของคำตอบและลดการใช้ token ซึ่งมีความสำคัญเมื่อใช้ API แบบเสียค่าบริการ
- ระบบบทสนทนา: ใช้เพื่อแบ่งบทพูดของผู้สนทนาอย่างชัดเจน เพื่อไม่ให้โมเดลผู้ช่วยสร้างคำตอบแทนผู้ใช้
- การสร้างเนื้อหาที่มีโครงสร้าง: ขาดไม่ได้สำหรับการได้ผลลัพธ์ที่ถูกต้องในรูปแบบ JSON, XML หรือเมื่อเขียนโค้ด เพื่อป้องกันการเพิ่มข้อมูลส่วนเกินหลังจากโครงสร้างเสร็จสมบูรณ์[7]
- การป้องกันพฤติกรรมที่ไม่พึงประสงค์: ช่วยหยุดการสร้างเมื่อเนื้อหาซ้ำหรือไม่ถูกต้อง (hallucination) ปรากฏขึ้น
- การฝึกอบรมและ fine-tuning: ในชุดข้อมูลฝึกอบรมมักใช้เครื่องหมายเฉพาะ (เช่น `###`) เป็น stop sequence เพื่อให้โมเดลเรียนรู้การสิ้นสุดคำตอบในตำแหน่งที่ถูกต้อง[6]
แนวทางการวิจัยในปัจจุบัน
- เกณฑ์หยุดแบบปรับตัว: การพัฒนาวิธีการที่กำหนดจุดสิ้นสุดแบบไดนามิกโดยอิงจากบริบทและคุณภาพของข้อความที่สร้างขึ้น
- แนวทาง entropy: การใช้ entropy ของการกระจาย token เป็นเกณฑ์ entropy สูงอาจบ่งชี้ถึงความไม่แน่ใจของโมเดลและทำหน้าที่เป็นสัญญาณให้หยุดการสร้าง
ลิงก์อ้างอิง
- เอกสารประกอบของ OpenAI เกี่ยวกับการใช้ stop sequences
- เอกสารประกอบของ Hugging Face เกี่ยวกับ StoppingCriteria
บรรณานุกรม
- Sutskever, I.; Vinyals, O.; Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215.
- Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
- Keskar, N. S. et al. (2019). CTRL: A Conditional Transformer Language Model for Controllable Generation. arXiv:1909.05858.
- Holtzman, A. et al. (2020). The Curious Case of Neural Text Degeneration. arXiv:1904.09751.
- Brown, T. et al. (2020). Language Models are Few-Shot Learners. arXiv:2005.14165.
- Zong, M.; Krishnamachari, B. (2022). A Survey on GPT-3. arXiv:2212.00857.
- Zhao, Y. et al. (2022). Calibrating Sequence Likelihood Improves Conditional Language Generation. arXiv:2210.00045.
- Hu, J. C.; Cavicchioli, R.; Capotondi, A. (2023). A Request for Clarity over the End-of-Sequence Token in the Self-Critical Sequence Training. arXiv:2305.12254.
- Zhu, W. et al. (2024). Improving Open-Ended Text Generation via Adaptive Decoding. arXiv:2402.18223.
- Zhang, H. et al. (2024). Adaptable Logical Control for Large Language Models. arXiv:2406.13892.
- Suh, Y. J. et al. (2025). The Curious Case of Sequentially Mis-calibrated Language Models. arXiv:2205.11916.
หมายเหตุ
- ↑ 1.0 1.1 «Stop Sequence: Understanding & Setting It Correctly». Promptitude.io Help Center. [1]
- ↑ 2.0 2.1 «How do I use stop sequences in the OpenAI API?». OpenAI Help Center. [2]
- ↑ «How to use stop sequences?». Vellum. [3]
- ↑ 4.0 4.1 Brown, Tom, et al. «A Survey on GPT-3». arXiv:2212.00857 [cs.CL], 1 дек. 2022 г. [4]
- ↑ 5.0 5.1 Suh, Y. J., et al. «The Curious Case of Sequentially Mis-calibrated Language Models». arXiv:2205.11916 [cs.CL], 24 мая 2022 г. [5]
- ↑ 6.0 6.1 Eric, Mihail. «How to Finetune GPT3». mihaileric.com. [6]
- ↑ Corin, Daniel. «Way Enough - Cursor Triple Backticks Stop Sequence». danielcorin.com. [7]