Tokenization (NLP) (TH)

From Systems analysis Wiki
Jump to navigation Jump to search

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

แนวคิดพื้นฐาน

Token

Token คือหน่วยข้อความแบบไม่ต่อเนื่องที่โมเดลภาษาประมวลผล ขึ้นอยู่กับวิธีการแบ่งโทเคนที่เลือก token อาจแทนได้ดังนี้:

  • คำทั้งคำ (เช่น «แมว»)
  • ส่วนหนึ่งของคำหรือ subword (เช่น «un-», «-believ-», «-able»)
  • อักขระแต่ละตัว (เช่น «ก», «ข», «ค»)
  • ไบต์ (ในกรณีของการแบ่งโทเคนระดับไบต์ หรือ byte-level tokenization)

แต่ละ token ที่ไม่ซ้ำกันจะได้รับหมายเลขดัชนีเฉพาะจาก พจนานุกรมของ tokenizer

พจนานุกรมของ Tokenizer

พจนานุกรม (หรือ vocabulary) คือชุดรวมของ token ทั้งหมดที่โมเดลสามารถจดจำได้ ขนาดของพจนานุกรมเป็น hyperparameter ที่สำคัญ:

  • พจนานุกรมขนาดใหญ่ช่วยให้แทนคำได้ทั้งคำมากขึ้น ซึ่งช่วยปรับปรุงความเข้าใจและลดความยาวของลำดับ แต่จะเพิ่มขนาดของโมเดลและความซับซ้อนในการเรียนรู้
  • พจนานุกรมขนาดเล็กกะทัดรัดกว่า แต่ต้องแบ่งคำที่หายากหรือซับซ้อนออกเป็น subword จำนวนมากขึ้น ซึ่งอาจทำให้ลำดับยาวขึ้นและยากต่อการจับความหมาย

ขนาดพจนานุกรมแตกต่างกันมากในแต่ละโมเดล ตั้งแต่ ~50,000 token ใน GPT-2 ไปจนถึงมากกว่า 100,000 ในโมเดลสมัยใหม่ เช่น GPT-4 (100,277) และ LLaMA-3 (128,000)

วิธีการแบ่งโทเคนหลัก

มีระดับความละเอียดของการแบ่งโทเคนอยู่สามระดับหลัก

1. การแบ่งโทเคนระดับคำ (Word-level)

  • หลักการ: ข้อความถูกแบ่งออกเป็นคำแต่ละคำโดยอาศัยตัวคั่น (ช่องว่าง เครื่องหมายวรรคตอน)
  • ข้อดี: เข้าใจง่ายตามสัญชาตญาณ ลำดับ token สั้นกว่าจึงลดภาระการคำนวณ
  • ข้อเสีย:
    • ปัญหาคำที่ไม่รู้จัก (Out-of-Vocabulary, OOV): โมเดลไม่สามารถประมวลผลคำที่ไม่มีอยู่ใน vocabulary สำหรับการเรียนรู้ รวมถึงการพิมพ์ผิดและคำใหม่
    • ขนาดพจนานุกรมใหญ่: ต้องเก็บคำที่ไม่ซ้ำกันทั้งหมด ซึ่งเป็นปัญหาเป็นพิเศษสำหรับภาษาที่มีสัณฐานวิทยาที่หลากหลาย

2. การแบ่งโทเคนระดับอักขระ (Character-level)

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

3. การแบ่งโทเคนแบบ Subword (Subword Tokenization)

นี่คือแนวทางระดับกลางและเป็นที่นิยมมากที่สุดในปัจจุบัน ซึ่งรวมข้อดีของวิธีการก่อนหน้าเข้าด้วยกัน

  • หลักการ: คำที่ใช้บ่อยจะคงเป็น token ทั้งคำ ส่วนคำที่หายากหรือไม่รู้จักจะถูกแบ่งออกเป็นส่วนย่อยที่มีความหมาย (subword)
  • ข้อดี:
    • จัดการคำ OOV และรูปแบบสัณฐานวิทยาได้อย่างมีประสิทธิภาพ
    • ควบคุมขนาดพจนานุกรมได้
    • จับโครงสร้างสัณฐานวิทยาของคำได้
  • อัลกอริทึมหลัก:
    • Byte Pair Encoding (BPE): อัลกอริทึมแบบวนซ้ำที่เริ่มจากชุดอักขระและรวมคู่ที่พบบ่อยที่สุดเข้าเป็น token ใหม่อย่างต่อเนื่อง ใช้ในโมเดล GPT Byte-level BPE ที่ใช้ใน GPT-2 และ RoBERTa จะมองคำเป็นลำดับของไบต์ ซึ่งแก้ปัญหา OOV ได้อย่างสมบูรณ์
    • WordPiece: อัลกอริทึมที่คล้ายกับ BPE แต่ในการรวมคู่จะเลือกคู่ที่ทำให้ความน่าจะเป็นของข้อมูลการเรียนรู้สูงสุด ใช้ในโมเดล BERT
    • Unigram LM: ต่างจาก BPE/WordPiece วิธีนี้เริ่มจากชุด subword ขนาดใหญ่และค่อยๆ ลดขนาดลงโดยตัด token ที่ส่งผลต่อความน่าจะเป็นโดยรวมของ corpus น้อยที่สุด ทำให้สามารถสร้างการแบ่งโทเคนหลายแบบที่เป็นไปได้สำหรับคำเดียว (subword regularization)
  • เครื่องมือ SentencePiece: ไลบรารีจาก Google ที่นำ BPE และ Unigram LM ไปใช้งาน และประมวลผลข้อความในรูปแบบสตรีมอักขระต่อเนื่อง ทำให้ใช้งานได้หลากหลายสำหรับภาษาที่ไม่มีตัวคั่นคำที่ชัดเจน (เช่น ภาษาจีน) ใช้ในโมเดล LLaMA และ T5

การแบ่งโทเคนใน Multimodal LLM

ในโมเดล multimodal ที่ทำงานไม่เพียงแค่กับข้อความ การแบ่งโทเคนยังครอบคลุมไปยังข้อมูลประเภทอื่นด้วย:

  • การแบ่งโทเคนภาพ (Visual Tokenization): รูปภาพถูกแบ่งออกเป็น patch ขนาดเล็ก (เช่น 16x16 พิกเซล) ซึ่งจะถูกแปลงเป็นเวกเตอร์ token คล้ายกับข้อความ
  • การแบ่งโทเคนเสียง (Audio Tokenization): สัญญาณเสียงต่อเนื่องถูกแปลงเป็นลำดับของ token แบบไม่ต่อเนื่อง ซึ่งแทนชิ้นส่วนเสียงสั้นๆ
  • แนวทางเดียว (TEAL): แนวคิดที่ข้อมูลจากทุก modality จะถูกแบ่งโทเคนด้วย tokenizer ที่สอดคล้องกันก่อน จากนั้น embedding ของข้อมูลเหล่านั้นจะถูกประมวลผลในปริภูมิร่วมเดียวกัน

ปัญหาและข้อจำกัด

การแบ่งโทเคน แม้จะมีความสำคัญ แต่ก็เป็นแหล่งที่มาของปัญหาหลายประการในการทำงานของ LLM:

  • ความไม่สอดคล้องและความไวต่อการเปลี่ยนแปลง: การเปลี่ยนแปลงเล็กน้อยในข้อมูลนำเข้า (การพิมพ์ผิด ตัวพิมพ์ใหญ่-เล็ก ช่องว่างท้ายข้อความ) อาจเปลี่ยนการแบ่งโทเคนอย่างสิ้นเชิง ส่งผลให้พฤติกรรมของโมเดลคาดเดาไม่ได้
  • ปัญหาหลายภาษา: พจนานุกรมเดียวสำหรับหลายภาษามักไม่มีประสิทธิภาพสำหรับภาษาที่มีทรัพยากรน้อยหรือมีสัณฐานวิทยาที่หลากหลาย ทำให้ได้ลำดับ token ที่ยาวเกินไป
  • ผลกระทบต่อการให้เหตุผล: การแบ่งตัวเลขที่ไม่สมเหตุสมผล (เช่น «25,000» เป็น «25», «,», «000») หรืออักขระ ทำให้การทำงานทางคณิตศาสตร์และงานเชิงสัญลักษณ์ทำได้ยากขึ้น
  • Glitch Tokens: token ที่ผิดปกติหรือหายากจากข้อมูลการเรียนรู้ (เช่น ชื่อผู้ใช้จาก Reddit) ซึ่งอาจทำให้โมเดลมีพฤติกรรมที่คาดเดาไม่ได้หรือเป็นอันตราย

แนวทางที่กำลังพัฒนาและทิศทางในอนาคต

การวิจัยด้านการแบ่งโทเคนกำลังดำเนินการอยู่อย่างแข็งขันในทิศทางต่อไปนี้:

  • โมเดลที่ไม่ใช้ Tokenizer: การพัฒนาโมเดล (CANINE, ByT5) ที่ทำงานโดยตรงในระดับไบต์หรืออักขระ เพื่อขจัดขั้นตอนการแบ่งโทเคนที่ชัดเจนและปัญหาที่เกี่ยวข้องออกไปอย่างสมบูรณ์
  • การแบ่งโทเคนแบบปรับตัวและเรียนรู้ได้: การสร้าง tokenizer ที่สามารถปรับตัวแบบไดนามิกตามภาษา โดเมน หรือแม้แต่ข้อความนำเข้าเฉพาะ หรือเรียนรู้ร่วมกับโมเดลหลัก
  • แนวทางที่อิงการรับรู้: การพัฒนาวิธีการที่ได้รับแรงบันดาลใจจากวิทยาศาสตร์การรับรู้เกี่ยวกับการประมวลผลภาษาของมนุษย์ (เช่น «หลักความพยายามน้อยที่สุด») เพื่อสร้างการแบ่งโทเคนที่มีความหมายเชิงความหมายมากขึ้น

อ้างอิง

  • ภาพรวมการแบ่งโทเคนในหลักสูตร LLM จาก Hugging Face
  • เอกสารการแบ่งโทเคนจาก Mistral AI

บรรณานุกรม

  • Schuster, M.; Nakajima, K. (2012). Japanese and Korean Voice Search. PDF.
  • Sennrich, R.; Haddow, B.; Birch, A. (2016). Neural Machine Translation of Rare Words with Subword Units. arXiv:1508.07909.
  • Kudo, T.; Richardson, J. (2018). SentencePiece: A Simple and Language-Independent Subword Tokenizer and Detokenizer for Neural Text Processing. arXiv:1808.06226.
  • Kudo, T. (2018). Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates. arXiv:1804.10959.
  • Song, X. et al. (2021). Fast WordPiece Tokenization. ACL-Anthology.
  • Mielke, S. J.; Dalmia, S.; Cotterell, R. (2021). A Brief History of Open-Vocabulary Modeling and Tokenization in NLP. arXiv:2112.10508.
  • Xue, J. et al. (2022). ByT5: Towards a Token-Free Future with Pre-trained Byte-to-Byte Models. arXiv:2105.13626.
  • Clark, J. H. et al. (2022). CANINE: Pre-Training an Efficient Tokenization-Free Encoder for Language Representation. arXiv:2103.06874.
  • Limisiewicz, T.; Balhar, J.; Mareček, D. (2023). Tokenization Impacts Multilingual Language Modeling. arXiv:2305.17179.
  • Pourmostafa Roshan Sharami, J.; Shterionov, D.; Spronck, P. (2023). A Systematic Analysis of Vocabulary and BPE Settings for Optimal Fine-Tuning of NMT. arXiv:2303.00722.
  • Batsuren, K. et al. (2024). Evaluating Subword Tokenization: Alien Subword Composition and OOV Generalization Challenge. arXiv:2404.13292.
  • Chai, Y. et al. (2024). Tokenization Falling Short: On Subword Robustness in Large Language Models. arXiv:2406.11687.