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

word2vec ถูกสร้างขึ้น ตีพิมพ์ และจดสิทธิบัตรในปี 2013 โดยทีมนักวิจัยที่นำโดยโตมาช มิโคโลฟ (Tomáš Mikolov) จากกูเกิล ขั้นตอนวิธีนี้ได้รับการวิเคราะห์และอธิบายโดยนักวิจัยคนอื่น ๆ

การฝังเวกเตอร์ที่สร้างขึ้นโดยใช้ขั้นตอนวิธี word2vec มีข้อดีหลายประการเมื่อเปรียบเทียบกับขั้นตอนวิธีก่อนหน้า เช่น การวิเคราะห์ความหมายแฝง

 แบบจำลอง CBoW และแบบจำลอง skip-gram 
thumb|แบบจำลอง CBoW
thumb|แบบจำลอง skip-gram
แบบจำลอง word2vec แบ่งหลัก ๆ เป็น 2 แบบตามวิธีการในการฝึก คือ แบบจำลอง ถุงคำแบบต่อเนื่อง (continuous bag-of-words, CBoW) และ แบบจำลอง skip-gram 

แบบจำลอง CBoW ทำนายคำปัจจุบันจากคำบริบทโดยรอบ โดยลำดับของคำในบริบทไม่ได้ถูกนำมาคิดด้วย ส่วนแบบจำลอง skip-gram ใช้คำปัจจุบันเพื่อทำนายคำที่อยู่รอบข้าง ยิ่งคำที่อยู่รอบข้างมีความใกล้เคียงคำปัจจุบันมากเท่าไร ยิ่งให้น้ำหนักต่อคำรอบข้างนั้นมากขึ้นเท่านั้น

ตามบันทึกของผู้เขียน แบบจำลอง skip-gram จะช้ากว่ารูปแบบ CBoW แต่จะได้ผลดีสำหรับคำที่มีความถี่ต่ำในการปรากฏต่ำ

 การกำหนดพารามิเตอร์ 
ผลการฝึก word2vec อาจขึ้นอยู่กับการกำหนดพารามิเตอร์ โดยพารามิเตอร์ที่สำคัญแบ่งออกเป็นหลายส่วน

 ขั้นตอนวิธีการฝึก 
แบบจำลอง word2vec สามารถฝึกได้โดยวิธีซอฟต์แมกซ์แบบลำดับชั้น หรือวิธีการสุ่มตัวอย่างเชิงลบ

เพื่อที่จะทำการประมาณค่าล็อกภาวะน่าจะเป็นมีเงื่อนไขที่จะทำให้แบบจำลองทำงานได้ดีที่สุด วิธีซอฟต์แมกซ์แบบลำดับชั้นจะใช้การเข้ารหัสฮัฟฟ์แมนเพื่อลดการคำนวณ ในขณะที่วิธีการสุ่มตัวอย่างเชิงลบจะทำโดยการลดลดภาวะน่าจะเป็นขององค์ประกอบเชิงลบให้น้อยที่สุด

ตามที่ผู้เขียนกล่าวไว้ วิธีซอฟต์แมกซ์แบบลำดับชั้นมีประสิทธิภาพมากกว่า สำหรับคำที่มีความถี่ในการปรากฏต่ำ ในขณะที่การสุ่มตัวอย่างเชิงลบจะมีประสิทธิภาพมากกว่า สำหรับคำที่มีความถี่สูงและเวกเตอร์มิติต่ำ เมื่อจำนวนขั้นการฝึกเพิ่มขึ้น วิธีซอฟต์แมกซ์แบบลำดับชั้นจะมีประโยชน์น้อยลง

 การสุ่มตัวอย่าง 
คำที่มีความถี่ในการปรากฏสูงให้ข้อมูลเพียงเล็กน้อย การสุ่มตัวอย่างแค่คำที่มีความถี่เกินค่าขีดแบ่งจะช่วยเร่งความเร็วในการฝึกได้

 มิติ 
ยิ่งมิติสูง คุณภาพการฝังคำก็จะยิ่งดีขึ้น แต่เมื่อมิติเพิ่มขึ้นถึงจุดหนึ่ง ผลของการเพิ่มมิติจะเห็นความเปลี่ยนแปลงลดลง โดยทั่วไปแล้ว จำนวนมิติเวกเตอร์จะตั้งค่าไว้ระหว่าง 100 ถึง 1,000

 หน้าต่างบริบท 
จำนวนคำก่อนและหลังคำเป้าหมายที่จะรวมเป็นคำบริบทจะถูกกำหนดโดยขนาดของหน้าต่างบริบท ขนาดหน้าต่างบริบทที่ผู้เขียนแนะนำอยู่ที่ 10 สำหรับ skip-gram และอยู่ที่ 5 สำหรับ CBoW

 แนวคิดต่อยอด 
มีการเสนอแนวคิดต่อยอด word2vec เพื่อสร้างการฝังจากเอกสารทั้งหมด (แทนที่จะเป็นคำเดี่ยว ๆ)  วิธีแนวคิดต่อยอดนี้เรียกว่า paragraph2vec หรือ doc2vec ถูกนำไปใช้ใน ภาษาซี, ภาษาไพธอน  และ ภาษาจาวา/ภาษาสกาลา การใช้งานภาษาจาวาและภาษาไพธอนยังรองรับการอนุมานการฝังคำสำหรับเอกสารใหม่ที่เพิ่งเจอครั้งแรกด้วย

 การวิเคราะห์ 
สาเหตุที่การเรียนรู้การฝังคำโดยใช้ word2vec ประสบความสำเร็จนั้นยังไม่เป็นที่เข้าใจกันดีนัก ก็อลท์แบร์ค และ เลวี ได้ชี้ให้เห็นว่าฟังก์ชันวัตถุประสงค์ word2vec ให้ผลการฝังที่คล้ายกัน (วัดโดยความคล้ายคลึงโคไซน์) สำหรับคำที่ปรากฏในบริบทที่คล้ายคลึงกัน ซึ่งสอดคล้องกับสมมติฐานการแจกแจงของจอห์น รูเปิร์ต เฟิร์ธ

Levy et al. (2015) ได้แสดงให้เห็นว่าประสิทธิภาพที่เหนือกว่าของ word2vec หรือการฝังที่คล้ายกันในงานแยกเฉพาะเป็นผลมาจากการเลือกไฮเปอร์พารามิเตอร์เฉพาะ มากกว่าจะเป็นผลมาจากตัวแบบจำลองเอง การถ่ายโอนไฮเปอร์พารามิเตอร์เหล่านี้ไปใช้แนวทางที่เป็นแบบดั้งเดิมมากขึ้นจะทำให้ได้ประสิทธิภาพที่คล้ายคลึงกันในงานแยกเฉพาะ อาโรราและคณะอธิบายว่า word2vec และขั้นตอนวิธีที่เกี่ยวข้องเป็นการดำเนินการอนุมานแบบจำลองก่อกำเนิดอย่างง่ายสำหรับข้อความ ซึ่งรวมถึงกระบวนการสร้างการเดินแบบสุ่มตามแบบจำลองหัวข้อบันทึกเชิงเส้น พวกเขาใช้สิ่งนี้เพื่ออธิบายคุณสมบัติหลายประการของการฝังคำ รวมถึงการใช้เพื่อแก้ไขคำเปรียบเทียบ

 การเก็บความสัมพันธ์ทางความหมายและวากยสัมพันธ์ 
thumb|ภาพแสดงความสัมพันธ์ของคำโดยระยะห่างในปริภูมิเวกเตอร์
วิธีการฝังคำสามารถจับความคล้ายคลึงกันระหว่างคำได้หลายระดับ มิโคโลฟและคณะ (2013)  พบว่ารูปแบบความหมายและวากยสัมพันธ์สามารถทำซ้ำได้โดยใช้การดำเนินการแบบเวกเตอร์ รูปแบบต่าง ๆ เช่น "ความสัมพันธ์ ชาย->หญิง" และ "ความสัมพันธ์ พี่ชายน้องชาย->พี่สาวน้องสาว" นั้นมีความเหมือนกัน สามารถสร้างขึ้นได้โดยการดำเนินการทางพีชคณิตในการแสดงเวกเตอร์ของคำเหล่านี้ นั่นคือการแสดงเวกเตอร์ของ "พี่ชาย" - "ชาย" + "หญิง" ให้ผลลัพธ์ที่ใกล้เคียงกับการแสดงเวกเตอร์ของ "น้องสาว" มาก ความสัมพันธ์ดังกล่าวสามารถสร้างขึ้นสำหรับความสัมพันธ์เชิงความหมายที่หลากหลาย (เช่น เมืองหลวง-ประเทศ) และความสัมพันธ์เชิงวากยสัมพันธ์ (เช่น ปัจจุบันกาล-อดีตกาล)

 การประเมินคุณภาพของแบบจำลอง 
มิโคโลฟและคณะได้พัฒนาแนวทางในการประเมินคุณภาพของแบบจำลอง word2vec ที่ดึงเอารูปแบบความหมายและวากยสัมพันธ์ที่อธิบายไว้ข้างต้น  พวกเขาได้พัฒนาชุดความสัมพันธ์เชิงความหมาย 8,869 รายการ และความสัมพันธ์ทางวากยสัมพันธ์ 10,675 รายการเพื่อใช้เป็นเกณฑ์มาตรฐานในการทดสอบความแม่นยำของแบบจำลอง เมื่อประเมินคุณภาพของแบบจำลองเวกเตอร์ ผู้ใช้สามารถใช้ประโยชน์จากการทดสอบความแม่นยำที่ใช้ใน word2vec หรือพัฒนาชุดการทดสอบของตนเองที่มีความหมายสำหรับคลังข้อมูลที่ประกอบขึ้นเป็นแบบจำลอง วิธีการนี้ไม่เพียงแต่บ่งบอกว่าคำที่คล้ายกับคำทดสอบใดคำหนึ่งมากที่สุดนั้นเป็นไปได้โดยสัญชาตญาณ แต่ยังสามารถให้การทดสอบที่ยากขึ้นอีกด้วย

 พารามิเตอร์และคุณภาพของแบบจำลอง 
การใช้พารามิเตอร์แบบจำลองที่แตกต่างกันและขนาดคลังข้อมูลที่ต่างกันอาจส่งผลกระทบอย่างมากต่อคุณภาพของแบบจำลอง word2vec สามารถปรับปรุงความแม่นยำได้หลายวิธี รวมถึงการเลือกโครงสร้างแบบจำลอง (แบบจำลอง CBoW หรือแบบจำลอง skip-gram) การเพิ่มชุดข้อมูลการฝึก การเพิ่มจำนวนมิติเวกเตอร์ และการเพิ่มขนาดหน้าต่างของคำที่ขั้นตอนวิธีพิจารณา การปรับปรุงแต่ละอย่างเหล่านี้ต้องแลกมาด้วยความซับซ้อนในการคำนวณที่เพิ่มขึ้นและเวลาในการสร้างแบบจำลอง

สำหรับแบบจำลองที่มีโครงสร้างขนาดใหญ่และมิติสูง แบบจำลอง skip-gram จะให้ความแม่นยำสูงสุด ซึ่งไม่เพียงเพิ่มความแม่นยำทางวากยสัมพันธ์สูงสุดในกรณีส่วนใหญ่ แต่ยังรวมถึงความแม่นยำของความสัมพันธ์ทางความหมายด้วย อย่างไรก็ตาม CBoW ยังสามารถได้รับผลลัพธ์ที่มีความแม่นยำใกล้เคียงกันด้วยต้นทุนการคำนวณที่ต่ำกว่า

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

Altszyler และคณะได้ตรวจสอบประสิทธิภาพของ word2vec ในการทดสอบความหมายสองครั้งที่มีขนาดคลังข้อมูลที่ต่างกัน และพบว่า word2vec มีช่วงการเรียนรู้ที่สูงชัน โดยมีประสิทธิภาพเหนือกว่าเทคนิคการฝังคำอื่น สำหรับคลังคำขนาดกลางถึงขนาดใหญ่ (10 ล้านคำขึ้นไป) แต่สำหรับคลังคำขนาดเล็กนั้น วิธีการวิเคราะห์ความหมายแฝงจะมีประสิทธิภาพเหนือกว่า นอกจากนี้ พวกเขายังได้แสดงให้เห็นว่าการกำหนดค่าพารามิเตอร์ที่เหมาะสมที่สุดนั้นขึ้นอยู่กับงานและคลังข้อมูล อย่างไรก็ตาม ในกรณีของ skip-gram โดยใช้คลังข้อมูลขนาดกลาง จำนวนมิติ=50 ขนาดหน้าต่าง=15 และ ตัวอย่างเชิงลบ=10 ดูเหมือนจะเป็นการตั้งค่าพารามิเตอร์ที่เหมาะสม