Word2vec
word2vec เป็นชุดของแบบจำลองที่ใช้ในการสร้างการฝังคำ แบบจำลองเหล่านี้เป็นโครงข่ายประสาทเทียมสองชั้นแบบตื้นที่ได้รับการฝึกเพื่อสร้างบริบททางภาษาของคำขึ้นใหม่ โดยใช้คลังข้อความ ขนาดใหญ่ และสร้างปริภูมิเวกเตอร์ขึ้นมาอันหนึ่ง โดยทั่วไปปริภูมิเวกเตอร์นี้ประกอบด้วยหลายร้อยมิติ และแต่ละคำในคลังข้อมูลถูกกำหนดให้กับเวกเตอร์แต่ละตัวภายในปริภูมิเวกเตอร์ เวกเตอร์คำที่ใช้บริบทเดียวกันภายในคลังข้อมูลจะถูกวางไว้ใกล้กันในปริภูมิเวกเตอร์[1]
word2vec ถูกสร้างขึ้น ตีพิมพ์ และจดสิทธิบัตรในปี 2013 โดยทีมนักวิจัยที่นำโดยโตมาช มิโคโลฟ (Tomáš Mikolov) จากกูเกิล ขั้นตอนวิธีนี้ได้รับการวิเคราะห์และอธิบายโดยนักวิจัยคนอื่น ๆ[2][3]
การฝังเวกเตอร์ที่สร้างขึ้นโดยใช้ขั้นตอนวิธี word2vec มีข้อดีหลายประการเมื่อเปรียบเทียบกับขั้นตอนวิธีก่อนหน้า เช่น การวิเคราะห์ความหมายแฝง[1]
แบบจำลอง CBoW และแบบจำลอง skip-gram
[แก้]แบบจำลอง word2vec แบ่งหลัก ๆ เป็น 2 แบบตามวิธีการในการฝึก คือ แบบจำลอง ถุงคำแบบต่อเนื่อง (continuous bag-of-words, CBoW) และ แบบจำลอง skip-gram
แบบจำลอง CBoW ทำนายคำปัจจุบันจากคำบริบทโดยรอบ โดยลำดับของคำในบริบทไม่ได้ถูกนำมาคิดด้วย ส่วนแบบจำลอง skip-gram ใช้คำปัจจุบันเพื่อทำนายคำที่อยู่รอบข้าง ยิ่งคำที่อยู่รอบข้างมีความใกล้เคียงคำปัจจุบันมากเท่าไร ยิ่งให้น้ำหนักต่อคำรอบข้างนั้นมากขึ้นเท่านั้น[1]
ตามบันทึกของผู้เขียน[4] แบบจำลอง skip-gram จะช้ากว่ารูปแบบ CBoW แต่จะได้ผลดีสำหรับคำที่มีความถี่ต่ำในการปรากฏต่ำ
การกำหนดพารามิเตอร์
[แก้]ผลการฝึก word2vec อาจขึ้นอยู่กับการกำหนดพารามิเตอร์ โดยพารามิเตอร์ที่สำคัญแบ่งออกเป็นหลายส่วน
ขั้นตอนวิธีการฝึก
[แก้]แบบจำลอง word2vec สามารถฝึกได้โดยวิธีซอฟต์แมกซ์แบบลำดับชั้น หรือวิธีการสุ่มตัวอย่างเชิงลบ
เพื่อที่จะทำการประมาณค่าล็อกภาวะน่าจะเป็นมีเงื่อนไขที่จะทำให้แบบจำลองทำงานได้ดีที่สุด วิธีซอฟต์แมกซ์แบบลำดับชั้นจะใช้การเข้ารหัสฮัฟฟ์แมนเพื่อลดการคำนวณ ในขณะที่วิธีการสุ่มตัวอย่างเชิงลบจะทำโดยการลดลดภาวะน่าจะเป็นขององค์ประกอบเชิงลบให้น้อยที่สุด
ตามที่ผู้เขียนกล่าวไว้ วิธีซอฟต์แมกซ์แบบลำดับชั้นมีประสิทธิภาพมากกว่า สำหรับคำที่มีความถี่ในการปรากฏต่ำ ในขณะที่การสุ่มตัวอย่างเชิงลบจะมีประสิทธิภาพมากกว่า สำหรับคำที่มีความถี่สูงและเวกเตอร์มิติต่ำ[4] เมื่อจำนวนขั้นการฝึกเพิ่มขึ้น วิธีซอฟต์แมกซ์แบบลำดับชั้นจะมีประโยชน์น้อยลง[5]
การสุ่มตัวอย่าง
[แก้]คำที่มีความถี่ในการปรากฏสูงให้ข้อมูลเพียงเล็กน้อย การสุ่มตัวอย่างแค่คำที่มีความถี่เกินค่าขีดแบ่งจะช่วยเร่งความเร็วในการฝึกได้[6]
มิติ
[แก้]ยิ่งมิติสูง คุณภาพการฝังคำก็จะยิ่งดีขึ้น แต่เมื่อมิติเพิ่มขึ้นถึงจุดหนึ่ง ผลของการเพิ่มมิติจะเห็นความเปลี่ยนแปลงลดลง[1] โดยทั่วไปแล้ว จำนวนมิติเวกเตอร์จะตั้งค่าไว้ระหว่าง 100 ถึง 1,000
หน้าต่างบริบท
[แก้]จำนวนคำก่อนและหลังคำเป้าหมายที่จะรวมเป็นคำบริบทจะถูกกำหนดโดยขนาดของหน้าต่างบริบท ขนาดหน้าต่างบริบทที่ผู้เขียนแนะนำอยู่ที่ 10 สำหรับ skip-gram และอยู่ที่ 5 สำหรับ CBoW[4]
แนวคิดต่อยอด
[แก้]มีการเสนอแนวคิดต่อยอด word2vec เพื่อสร้างการฝังจากเอกสารทั้งหมด (แทนที่จะเป็นคำเดี่ยว ๆ) [7] วิธีแนวคิดต่อยอดนี้เรียกว่า paragraph2vec หรือ doc2vec ถูกนำไปใช้ใน ภาษาซี, ภาษาไพธอน[8] [9] และ ภาษาจาวา/ภาษาสกาลา[10] การใช้งานภาษาจาวาและภาษาไพธอนยังรองรับการอนุมานการฝังคำสำหรับเอกสารใหม่ที่เพิ่งเจอครั้งแรกด้วย
การวิเคราะห์
[แก้]สาเหตุที่การเรียนรู้การฝังคำโดยใช้ word2vec ประสบความสำเร็จนั้นยังไม่เป็นที่เข้าใจกันดีนัก ก็อลท์แบร์ค และ เลวี ได้ชี้ให้เห็นว่าฟังก์ชันวัตถุประสงค์ word2vec ให้ผลการฝังที่คล้ายกัน (วัดโดยความคล้ายคลึงโคไซน์) สำหรับคำที่ปรากฏในบริบทที่คล้ายคลึงกัน ซึ่งสอดคล้องกับสมมติฐานการแจกแจงของจอห์น รูเปิร์ต เฟิร์ธ[2]
Levy et al. (2015)[11] ได้แสดงให้เห็นว่าประสิทธิภาพที่เหนือกว่าของ word2vec หรือการฝังที่คล้ายกันในงานแยกเฉพาะเป็นผลมาจากการเลือกไฮเปอร์พารามิเตอร์เฉพาะ มากกว่าจะเป็นผลมาจากตัวแบบจำลองเอง การถ่ายโอนไฮเปอร์พารามิเตอร์เหล่านี้ไปใช้แนวทางที่เป็นแบบดั้งเดิมมากขึ้นจะทำให้ได้ประสิทธิภาพที่คล้ายคลึงกันในงานแยกเฉพาะ อาโรราและคณะอธิบายว่า word2vec และขั้นตอนวิธีที่เกี่ยวข้องเป็นการดำเนินการอนุมานแบบจำลองก่อกำเนิดอย่างง่ายสำหรับข้อความ[12] ซึ่งรวมถึงกระบวนการสร้างการเดินแบบสุ่มตามแบบจำลองหัวข้อบันทึกเชิงเส้น พวกเขาใช้สิ่งนี้เพื่ออธิบายคุณสมบัติหลายประการของการฝังคำ รวมถึงการใช้เพื่อแก้ไขคำเปรียบเทียบ
การเก็บความสัมพันธ์ทางความหมายและวากยสัมพันธ์
[แก้]วิธีการฝังคำสามารถจับความคล้ายคลึงกันระหว่างคำได้หลายระดับ มิโคโลฟและคณะ (2013) [13] พบว่ารูปแบบความหมายและวากยสัมพันธ์สามารถทำซ้ำได้โดยใช้การดำเนินการแบบเวกเตอร์ รูปแบบต่าง ๆ เช่น "ความสัมพันธ์ ชาย->หญิง" และ "ความสัมพันธ์ พี่ชายน้องชาย->พี่สาวน้องสาว" นั้นมีความเหมือนกัน สามารถสร้างขึ้นได้โดยการดำเนินการทางพีชคณิตในการแสดงเวกเตอร์ของคำเหล่านี้ นั่นคือการแสดงเวกเตอร์ของ "พี่ชาย" - "ชาย" + "หญิง" ให้ผลลัพธ์ที่ใกล้เคียงกับการแสดงเวกเตอร์ของ "น้องสาว" มาก ความสัมพันธ์ดังกล่าวสามารถสร้างขึ้นสำหรับความสัมพันธ์เชิงความหมายที่หลากหลาย (เช่น เมืองหลวง-ประเทศ) และความสัมพันธ์เชิงวากยสัมพันธ์ (เช่น ปัจจุบันกาล-อดีตกาล)
การประเมินคุณภาพของแบบจำลอง
[แก้]มิโคโลฟและคณะได้พัฒนาแนวทางในการประเมินคุณภาพของแบบจำลอง word2vec ที่ดึงเอารูปแบบความหมายและวากยสัมพันธ์ที่อธิบายไว้ข้างต้น [1] พวกเขาได้พัฒนาชุดความสัมพันธ์เชิงความหมาย 8,869 รายการ และความสัมพันธ์ทางวากยสัมพันธ์ 10,675 รายการเพื่อใช้เป็นเกณฑ์มาตรฐานในการทดสอบความแม่นยำของแบบจำลอง เมื่อประเมินคุณภาพของแบบจำลองเวกเตอร์ ผู้ใช้สามารถใช้ประโยชน์จากการทดสอบความแม่นยำที่ใช้ใน word2vec[14] หรือพัฒนาชุดการทดสอบของตนเองที่มีความหมายสำหรับคลังข้อมูลที่ประกอบขึ้นเป็นแบบจำลอง วิธีการนี้ไม่เพียงแต่บ่งบอกว่าคำที่คล้ายกับคำทดสอบใดคำหนึ่งมากที่สุดนั้นเป็นไปได้โดยสัญชาตญาณ แต่ยังสามารถให้การทดสอบที่ยากขึ้นอีกด้วย
พารามิเตอร์และคุณภาพของแบบจำลอง
[แก้]การใช้พารามิเตอร์แบบจำลองที่แตกต่างกันและขนาดคลังข้อมูลที่ต่างกันอาจส่งผลกระทบอย่างมากต่อคุณภาพของแบบจำลอง word2vec สามารถปรับปรุงความแม่นยำได้หลายวิธี รวมถึงการเลือกโครงสร้างแบบจำลอง (แบบจำลอง CBoW หรือแบบจำลอง skip-gram) การเพิ่มชุดข้อมูลการฝึก การเพิ่มจำนวนมิติเวกเตอร์ และการเพิ่มขนาดหน้าต่างของคำที่ขั้นตอนวิธีพิจารณา การปรับปรุงแต่ละอย่างเหล่านี้ต้องแลกมาด้วยความซับซ้อนในการคำนวณที่เพิ่มขึ้นและเวลาในการสร้างแบบจำลอง[1]
สำหรับแบบจำลองที่มีโครงสร้างขนาดใหญ่และมิติสูง แบบจำลอง skip-gram จะให้ความแม่นยำสูงสุด ซึ่งไม่เพียงเพิ่มความแม่นยำทางวากยสัมพันธ์สูงสุดในกรณีส่วนใหญ่ แต่ยังรวมถึงความแม่นยำของความสัมพันธ์ทางความหมายด้วย อย่างไรก็ตาม CBoW ยังสามารถได้รับผลลัพธ์ที่มีความแม่นยำใกล้เคียงกันด้วยต้นทุนการคำนวณที่ต่ำกว่า[1]
เมื่อจำนวนคำที่ใช้และจำนวนมิติเพิ่มขึ้น ความแม่นยำโดยรวมก็จะดีขึ้น มิโคโลฟและคณะรายงานว่าการเพิ่มจำนวนข้อมูลการฝึกเป็นสองเท่าจะเพิ่มความซับซ้อนในการคำนวณและเทียบเท่ากับการเพิ่มจำนวนมิติเวกเตอร์เป็นสองเท่า[1]
Altszyler และคณะได้ตรวจสอบประสิทธิภาพของ word2vec ในการทดสอบความหมายสองครั้งที่มีขนาดคลังข้อมูลที่ต่างกัน และพบว่า word2vec มีช่วงการเรียนรู้ที่สูงชัน[15] โดยมีประสิทธิภาพเหนือกว่าเทคนิคการฝังคำอื่น สำหรับคลังคำขนาดกลางถึงขนาดใหญ่ (10 ล้านคำขึ้นไป) แต่สำหรับคลังคำขนาดเล็กนั้น วิธีการวิเคราะห์ความหมายแฝงจะมีประสิทธิภาพเหนือกว่า นอกจากนี้ พวกเขายังได้แสดงให้เห็นว่าการกำหนดค่าพารามิเตอร์ที่เหมาะสมที่สุดนั้นขึ้นอยู่กับงานและคลังข้อมูล อย่างไรก็ตาม ในกรณีของ skip-gram โดยใช้คลังข้อมูลขนาดกลาง จำนวนมิติ=50 ขนาดหน้าต่าง=15 และ ตัวอย่างเชิงลบ=10 ดูเหมือนจะเป็นการตั้งค่าพารามิเตอร์ที่เหมาะสม
อ้างอิง
[แก้]- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Mikolov, Tomas. "Efficient Estimation of Word Representations in Vector Space". arXiv:1301.3781 [cs.CL].
- ↑ 2.0 2.1 Goldberg, Yoav; Levy, Omer. "word2vec Explained: Deriving Mikolov et al.'s Negative-Sampling Word-Embedding Method". arXiv:1402.3722 [cs.CL].
- ↑ Řehůřek, Radim. Word2vec and friends. สืบค้นเมื่อ 2015-08-14.
- ↑ 4.0 4.1 4.2 "Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com. สืบค้นเมื่อ 2016-06-13.
- ↑ "Parameter (hs & negative)". Google Groups. สืบค้นเมื่อ 2016-06-13.
- ↑ "Visualizing Data using t-SNE" (PDF). Journal of Machine Learning Research, 2008. Vol. 9, pg. 2595. สืบค้นเมื่อ 2017-03-18.
- ↑ Le, Quoc. "Distributed Representations of Sentences and Documents". arXiv:1405.4053 [cs.CL].
- ↑ "Doc2Vec tutorial using Gensim". สืบค้นเมื่อ 2015-08-02.
- ↑ "Doc2vec for IMDB sentiment analysis". สืบค้นเมื่อ 2016-02-18.
- ↑ "Doc2Vec and Paragraph Vectors for Classification". สืบค้นเมื่อ 2016-01-13.
- ↑ Levy, Omer; Goldberg, Yoav; Dagan, Ido (2015). "Improving Distributional Similarity with Lessons Learned from Word Embeddings". Transactions of the Association for Computational Linguistics. Transactions of the Association for Computational Linguistics. 3: 211–225. doi:10.1162/tacl_a_00134.
- ↑ Arora, S (Summer 2016). "A Latent Variable Model Approach to PMI-based Word Embeddings". Transactions of Assoc. Of Comp. Linguistics. 4: 385–399. doi:10.1162/tacl_a_00106.
- ↑ Mikolov, Tomas; Yih, Wen-tau; Zweig, Geoffrey (2013). "Linguistic Regularities in Continuous Space Word Representations". HLT-Naacl: 746–751.
- ↑ "Gensim - Deep learning with word2vec". สืบค้นเมื่อ 10 June 2016.
- ↑ Altszyler, E.; Ribeiro, S.; Sigman, M.; Fernández Slezak, D. (2017). "The interpretation of dream meaning: Resolving ambiguity using Latent Semantic Analysis in a small corpus of text". Consciousness and Cognition. 56: 178–187. arXiv:1610.01520. doi:10.1016/j.concog.2017.09.004. PMID 28943127.