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