Stop sequences (language models) (TH)

From Systems analysis Wiki
Jump to navigation Jump to search

Stop Sequence (ลำดับหยุดการสร้างข้อความ) ในบริบทของโมเดลภาษาขนาดใหญ่ (LLM) คือลำดับพิเศษของอักขระหรือ token ที่ส่งสัญญาณให้โมเดลหยุดการสร้างข้อความ[1] กลไกนี้เป็นองค์ประกอบสำคัญของโมเดลภาษาแบบ autoregressive ที่ช่วยให้การสิ้นสุดของคำตอบเป็นไปอย่างควบคุมได้และคาดเดาได้

เมื่อใช้ stop sequence โมเดลจะตรวจสอบในทุกขั้นตอนของการสร้างข้อความว่าข้อความที่สร้างไปแล้วนั้นลงท้ายด้วยลำดับใดลำดับหนึ่งที่กำหนดไว้หรือไม่ หากพบความตรงกัน กระบวนการจะหยุดทันที โดย stop sequence จะไม่ถูกรวม ในผลลัพธ์สุดท้าย[2] ซึ่งช่วยให้นักพัฒนาควบคุมขอบเขตของคำตอบได้อย่างแม่นยำโดยไม่ต้องแก้ไข prompt

หลักการทำงานพื้นฐาน

ในโมเดลภาษาแบบ autoregressive การสร้างข้อความจะเกิดขึ้นตามลำดับทีละ token ในแต่ละขั้นตอนโมเดลจะทำนาย token ถัดไปโดยอิงจากลำดับก่อนหน้าทั้งหมด (input prompt และข้อความที่สร้างไปแล้ว) ในเชิงคณิตศาสตร์สามารถแสดงได้เป็นความน่าจะเป็นแบบมีเงื่อนไข:

P(yty<t,x)

โดยที่ yt คือ token ที่กำลังสร้างในขณะนั้น y<t คือลำดับของ token ที่สร้างไปก่อนหน้า และ x คือลำดับอินพุต[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 อย่างมีประสิทธิภาพเป็นงานที่ไม่ง่าย และมาพร้อมกับความซับซ้อนหลายประการ

อัลกอริทึมการตรวจจับและการปรับให้เหมาะสม

กระบวนการตรวจจับในระบบจริงประกอบด้วย:

  1. การตรวจสอบในทุกขั้นตอน: หลังจากสร้าง token ใหม่แต่ละตัว ระบบจะตรวจสอบว่าผลลัพธ์ปัจจุบันลงท้ายด้วย stop sequence ใดลำดับหนึ่งหรือไม่
  2. การจัดการกับการจับคู่บางส่วน: ระบบต้องติดตามสถานการณ์ที่สร้างลำดับไปบางส่วนแล้วแต่ยังไม่มีการจับคู่ที่สมบูรณ์
  3. การตรวจสอบหลายเกณฑ์: ระบบส่วนใหญ่ (เช่น 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. 1.0 1.1 «Stop Sequence: Understanding & Setting It Correctly». Promptitude.io Help Center. [1]
  2. 2.0 2.1 «How do I use stop sequences in the OpenAI API?». OpenAI Help Center. [2]
  3. «How to use stop sequences?». Vellum. [3]
  4. 4.0 4.1 Brown, Tom, et al. «A Survey on GPT-3». arXiv:2212.00857 [cs.CL], 1 дек. 2022 г. [4]
  5. 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. 6.0 6.1 Eric, Mihail. «How to Finetune GPT3». mihaileric.com. [6]
  7. Corin, Daniel. «Way Enough - Cursor Triple Backticks Stop Sequence». danielcorin.com. [7]