Embedding (NLP) (TH)

From Systems analysis Wiki
Jump to navigation Jump to search

Embedding (จากภาษาอังกฤษ embedding — "การฝังตัว") คือเทคโนโลยีพื้นฐานในสาขา Machine Learning และการประมวลผลภาษาธรรมชาติ ซึ่งแปลงวัตถุแบบไม่ต่อเนื่องหรือซับซ้อน (เช่น คำ ประโยค รูปภาพ) ให้กลายเป็น การแทนค่าด้วยเวกเตอร์เชิงตัวเลข ที่มีมิติคงที่ เวกเตอร์เหล่านี้หรือที่เรียกว่า embedding จะถูกจัดวางในปริภูมิหลายมิติในลักษณะที่วัตถุซึ่งมีความหมายใกล้เคียงกันจะอยู่ใกล้ชิดกัน

คำนิยามและแนวคิด

ในเชิงรูปแบบ embedding คือฟังก์ชันการแมป f:Xd โดยที่ X คือปริภูมิต้นทางของวัตถุ (เช่น พจนานุกรมคำ) และ d คือปริภูมิเวกเตอร์หลายมิติ (ปริภูมิ embedding) ที่มีมิติ d มิติ d มีค่าน้อยกว่าปริภูมิต้นทางอย่างมีนัยสำคัญ ทำให้การแทนค่าเหล่านี้มีความหนาแน่น (dense)

รากฐานทางทฤษฎีสำหรับการแทนค่าคำด้วยเวกเตอร์คือ อรรถศาสตร์การกระจาย ซึ่งระบุว่าความหมายของคำถูกกำหนดโดยบริบทที่ใช้งาน กล่าวคือ คำที่ปรากฏในบริบทที่คล้ายกันจะมีความหมายใกล้เคียงกัน และด้วยเหตุนี้จึงมีการแทนค่าด้วยเวกเตอร์ที่ใกล้เคียงกัน

หลักการพื้นฐานของ Embedding

  • มิติคงที่: วัตถุทั้งหมดจะถูกแมปไปยังเวกเตอร์ที่มีความยาวเท่ากัน โดยไม่คำนึงถึงขนาดของข้อมูลต้นทาง (เช่น ความยาวของประโยค)
  • ความใกล้เคียงเชิงความหมาย: ระยะห่างระหว่างเวกเตอร์ (มักวัดผ่านความคล้ายคลึงเชิงโคไซน์) สะท้อนความใกล้เคียงเชิงความหมายของวัตถุต้นทาง
  • การรองรับการดำเนินการทางคณิตศาสตร์: เวกเตอร์รักษาความสัมพันธ์เชิงความหมายไว้ ทำให้สามารถทำการดำเนินการทางพีชคณิตกับเวกเตอร์เหล่านั้นได้ ตัวอย่างคลาสสิก: вектор(«король»)вектор(«мужчина»)+вектор(«женщина»)вектор(«королева»)

ประวัติและพัฒนาการ

แนวทางยุคแรก (ทศวรรษ 1980–2000)

แนวคิดแรกของการแทนค่าด้วยเวกเตอร์ปรากฏขึ้นในช่วงทศวรรษ 1980 ในบริบทของการวิจัยเกี่ยวกับ Neural Network วิธีการในยุคแรกอาศัยการวิเคราะห์ทางสถิติของความถี่การปรากฏร่วมกันของคำ

ยุค Word2Vec (2013)

จุดเปลี่ยนครั้งสำคัญคือการพัฒนา Word2Vec โดยทีมงานของ Google ภายใต้การนำของ Tomáš Mikolov ในปี 2013 Word2Vec นำเสนอสถาปัตยกรรมสองแบบที่มีประสิทธิภาพและมีต้นทุนการคำนวณต่ำสำหรับการฝึก embedding ของคำ:

  • CBOW (Continuous Bag of Words): ทำนายคำกลางจากบริบทที่อยู่รอบข้าง
  • Skip-gram: ทำนายคำในบริบทจากคำกลาง

Word2Vec กลายเป็นการนำการแทนค่าด้วยเวกเตอร์มาใช้งานยอดนิยมครั้งแรก ซึ่งส่วนหนึ่งเป็นเพราะซอร์สโค้ดแบบเปิดและความเร็วในการทำงานที่สูง

พัฒนาการของแนวทางทางเลือก

หลังจาก Word2Vec ก็มีโมเดล static embedding อื่นๆ ที่สำคัญตามมา:

  • GloVe (2014): โมเดลที่พัฒนาขึ้นที่มหาวิทยาลัย Stanford ซึ่งใช้สถิติการปรากฏร่วมกันของคำในระดับโกลบอลสำหรับการฝึกเวกเตอร์
  • FastText (2015): โมเดลจาก Facebook ที่คำนึงถึงสัณฐานวิทยาของคำ โดยแทนคำแต่ละคำเป็นผลรวมของเวกเตอร์ n-gram ของอักขระ ทำให้สามารถสร้าง embedding ได้แม้กระทั่งสำหรับคำที่ไม่มีอยู่ในพจนานุกรมการฝึก (คำ Out-of-Vocabulary)

ยุค Transformer และ Contextual Embedding (2018–ปัจจุบัน)

ความก้าวหน้าครั้งสำคัญเกิดขึ้นพร้อมกับการปรากฏของสถาปัตยกรรม transformer และโมเดล BERT (2018) ซึ่งนำไปสู่การเกิดขึ้นของ contextual embedding ที่การแทนค่าด้วยเวกเตอร์ของคำขึ้นอยู่กับบริบทที่ใช้งาน ต่างจากการแทนค่าแบบ static ที่คำหนึ่งๆ จะมีเวกเตอร์เดิมในทุกประโยค โมเดล contextual จะสร้าง embedding ที่แตกต่างกันสำหรับแต่ละบริบทการใช้งาน

ประเภทของ Embedding

ตามระดับของการแทนค่า

  • Embedding ระดับคำ: ประเภทพื้นฐานที่แต่ละคำถูกแทนด้วยเวกเตอร์แยกต่างหาก (Word2Vec, GloVe)
  • Embedding ระดับประโยคและเอกสาร: แทนวลี ประโยค หรือเอกสารทั้งหมดด้วยเวกเตอร์เดียว (PV-DM, PV-DBOW)
  • Embedding ของผู้ใช้และวัตถุ: ใช้ในระบบแนะนำเพื่อแทนความสนใจของผู้ใช้และคุณลักษณะของสินค้า

ตามการคำนึงถึงบริบท

  • Static Embedding: แต่ละคำจะได้รับเวกเตอร์ที่กำหนดไว้ตายตัวหนึ่งค่า โดยไม่ขึ้นกับบริบท (Word2Vec, GloVe, FastText)
  • Contextual Embedding: สร้างการแทนค่าที่แตกต่างกันสำหรับคำเดิมตามบริบทที่อยู่ล้อมรอบ ตัวแทนหลักได้แก่:
    • BERT: โมเดลแบบสองทิศทางบนพื้นฐาน transformer
    • ELMo: โมเดล LSTM แบบสองทิศทาง
    • RoBERTa, DistilBERT, ALBERT: ตัวแปรที่ปรับปรุงจาก BERT

ตามรูปแบบข้อมูล

  • Embedding เชิงข้อความ: ประเภทที่พบบ่อยที่สุด ครอบคลุมการแทนค่าของคำ ประโยค และเอกสาร
  • Embedding เชิงภาพ: การแทนค่ารูปภาพสำหรับงานด้าน Computer Vision
  • Multimodal Embedding: รวมข้อมูลประเภทต่างๆ (ข้อความ รูปภาพ เสียง) เข้าไว้ในปริภูมิเวกเตอร์เดียว ตัวอย่างคือ ImageBind ที่สามารถเชื่อมโยงข้อมูลจากหกรูปแบบข้อมูล

สถาปัตยกรรมและวิธีการฝึก

วิธีการแบบดั้งเดิม

  • One-hot encoding: วิธีการที่ง่ายที่สุด ซึ่งแต่ละคำถูกเข้ารหัสด้วยเวกเตอร์ขนาดเท่าพจนานุกรมโดยมีค่า 1 ในตำแหน่งที่สอดคล้องกัน ข้อเสีย: ความเบาบางสูงและไม่มีข้อมูลเชิงความหมาย
  • Matrix Factorization: วิธีการลดมิติ (เช่น LSA) ที่นำไปใช้กับเมทริกซ์การปรากฏร่วมกันของคำ

สถาปัตยกรรม Neural Network

  • Neural Network แบบตื้น: สถาปัตยกรรม CBOW และ Skip-gram ใน Word2Vec ใช้ Neural Network สองชั้นสำหรับการฝึกอย่างมีประสิทธิภาพ
  • Transformer: สถาปัตยกรรมที่ปฏิวัติสาขาด้านนี้ด้วยกลไก attention

แนวทางสมัยใหม่

  • การเรียนรู้ด้วยตนเองแบบ Masked: BERT ใช้งานการทำนายคำที่ถูกปิดบังเพื่อฝึก contextual representation
  • Contrastive Learning: วิธีการที่เพิ่มสูงสุดความคล้ายคลึงของคู่ที่ใกล้เคียงกันเชิงความหมาย (คู่บวก) และลดให้น้อยที่สุดความคล้ายคลึงของคู่ที่ห่างไกลกัน (คู่ลบ)

การประยุกต์ใช้ Embedding

Embedding มีการนำไปประยุกต์ใช้อย่างกว้างขวางในหลากหลายสาขา:

การประมวลผลภาษาธรรมชาติ

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

ระบบแนะนำ

Embedding ของผู้ใช้และสินค้าเป็นรากฐานของระบบแนะนำแบบส่วนตัว ซึ่งรวมถึง:

  • Collaborative Filtering: โดยอิงจาก embedding ของพฤติกรรมผู้ใช้
  • Content Filtering: โดยใช้ embedding ของคุณลักษณะสินค้า

Computer Vision

  • การจำแนกและการค้นหารูปภาพ: Convolutional Neural Network และ Vision Transformer สร้าง embedding ของรูปภาพสำหรับการจำแนกและการค้นหาภาพที่คล้ายกันทางสายตา

ชีวสารสนเทศศาสตร์และการแพทย์

  • การวิเคราะห์ข้อมูลทางการแพทย์: การวิเคราะห์บันทึกทางคลินิกและการวินิจฉัยโรค
  • การแทนค่าระดับโมเลกุล: การสร้าง embedding สำหรับการทำนายคุณสมบัติของสารประกอบทางเคมี

ด้านเทคนิคและการปรับแต่ง

  • วิธีการปรับมิติ: Matryoshka Representation Learning (MRL) — แนวทางที่เป็นนวัตกรรม ช่วยให้ได้ embedding ที่มีมิติต่างกันจากโมเดลเดียว โดยรวมข้อมูลสำคัญไว้ที่ส่วนต้นของเวกเตอร์
  • การ Quantization ของ Embedding: การลดความแม่นยำของการแทนค่าตัวเลข (เช่น เหลือ 8 หรือ 4 บิต) เพื่อเร่งความเร็วในการคำนวณและประหยัดหน่วยความจำ
  • การรวมกับฐานข้อมูล: ฐานข้อมูลเวกเตอร์สมัยใหม่ (เช่น Milvus, Pinecone) และส่วนขยายสำหรับ DBMS แบบดั้งเดิม (เช่น pgvector สำหรับ PostgreSQL) ช่วยให้จัดเก็บและค้นหา embedding ได้อย่างมีประสิทธิภาพ

ลิงก์

  • การแทนค่าคำด้วยเวกเตอร์ — Wikipedia
  • การแทนค่าคำด้วยเวกเตอร์ — NEERC

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

  • Mikolov, T. et al. (2013). Efficient Estimation of Word Representations in Vector Space. arXiv:1301.3781.
  • Mikolov, T. et al. (2013). Distributed Representations of Words and Phrases and their Compositionality. arXiv:1310.4546.
  • Pennington, J.; Socher, R.; Manning, C. (2014). GloVe: Global Vectors for Word Representation. PDF.
  • Bojanowski, P. et al. (2017). Enriching Word Vectors with Subword Information. arXiv:1607.04606.
  • Joulin, A. et al. (2017). Bag of Tricks for Efficient Text Classification. arXiv:1607.01759.
  • Peters, M. E. et al. (2018). Deep Contextualized Word Representations. ACL Anthology.
  • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  • Reimers, N.; Gurevych, I. (2019). Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. arXiv:1908.10084.
  • Kusupati, A. et al. (2022). Matryoshka Representation Learning. arXiv:2205.13147.
  • Radford, A. et al. (2021). Learning Transferable Visual Models From Natural Language Supervision. PMLR 139.
  • Girdhar, R. et al. (2023). ImageBind: One Embedding Space To Bind Them All. CVPR 2023.