ส่วนนี้พูดถึงวิธีการต่างๆ ในการสร้างการฝัง รวมถึงวิธีเปลี่ยนรูปแบบการฝังแบบคงที่เป็นการฝังตามบริบท
เทคนิคการลดมิติ
มีเทคนิคทางคณิตศาสตร์หลายเทคนิคที่แสดงให้เห็นถึงโครงสร้างที่สำคัญของพื้นที่มิติสูงในพื้นที่มิติต่ำ ในทางทฤษฎี คุณสามารถใช้เทคนิคใดก็ได้เพื่อสร้างการฝังสำหรับระบบแมชชีนเลิร์นนิง
ตัวอย่างเช่น มีการใช้การวิเคราะห์องค์ประกอบหลัก (PCA) เพื่อสร้างการฝังคำ สำหรับชุดอินสแตนซ์อย่างเช่นเวกเตอร์ bag of words เทคนิค PCA จะพยายามค้นหามิติที่มีความสัมพันธ์กันสูงซึ่งสามารถยุบลงเป็นมิติเดียวได้
การฝึกการฝังให้เป็นส่วนหนึ่งของโครงข่ายระบบประสาทเทียม
คุณสามารถสร้างการฝังขณะฝึกโครงข่ายระบบประสาทเทียมสำหรับงานเป้าหมาย วิธีการนี้ช่วยให้คุณมีการฝังที่ได้รับการปรับแต่งอย่างดีสำหรับระบบที่เฉพาะเจาะจงของคุณ แต่อาจใช้เวลามากกว่าการฝึกการฝังแยกต่างหาก
โดยทั่วไปคุณสามารถสร้างเลเยอร์ที่ซ่อนไว้ขนาด d ในโครงข่ายระบบประสาทเทียมซึ่งได้รับการกำหนดเป็นเลเยอร์การฝัง โดยที่ d สื่อถือทั้งจำนวนโหนดในเลเยอร์ที่ซ่อนไว้และจำนวนมิติในพื้นที่การฝัง เลเยอร์การฝังนี้สามารถรวมกับฟีเจอร์และเลเยอร์ที่ซ่อนไว้อื่นๆ ดังเช่นในโครงข่ายประสาทแบบลึก พารามิเตอร์จะได้รับการเพิ่มประสิทธิภาพระหว่างการฝึกให้ลดการสูญเสียโหนดน้อยที่สุดในเลเยอร์เอาต์พุตของโครงข่าย
เมื่อกลับไปดูตัวอย่างคำแนะนำเกี่ยวกับอาหาร เป้าหมายของเราคือการคาดการณ์อาหารเมนูใหม่ที่ผู้ใช้จะชื่นชอบโดยอิงจากเมนูโปรดในปัจจุบัน ก่อนอื่นเราสามารถคอมไพล์ข้อมูลเพิ่มเติมเกี่ยวกับเมนูโปรด 5 อันดับแรกของผู้ใช้ จากนั้นเราสามารถสร้างโมเดลงานนี้เป็นโจทย์การเรียนรู้ที่มีการควบคุมดูแล เราตั้งค่าอาหาร 4 จาก 5 เมนูอันดับสูงสุดเหล่านี้ให้เป็นข้อมูลฟีเจอร์ และจากนั้นจึงสุ่มตั้งค่าอาหารเมนูที่ 5 แยกเป็นป้ายกำกับเชิงบวกที่โมเดลตั้งเป้าที่จะคาดการณ์ เพื่อเพิ่มประสิทธิภาพการคาดการณ์ของโมเดลโดยใช้การสูญเสีย softmax
ระหว่างการฝึก โมเดลโครงข่ายระบบประสาทเทียมจะเรียนรู้น้ำหนักที่เหมาะสมสำหรับโหนดในเลเยอร์แรกที่ซ่อนไว้ ซึ่งแสดงเป็นเลเยอร์การฝัง ตัวอย่างเช่น หากโมเดลมี 3 โหนดในเลเยอร์แรกที่ซ่อนไว้ โมเดลอาจสรุปว่ามิติที่เกี่ยวข้องมากที่สุด 3 มิติของเมนูอาหารคือมีลักษณะเป็นแซนด์วิช มีลักษณะเป็นของหวาน และมีลักษณะเป็นของเหลว รูปที่ 12 แสดงค่าอินพุตที่เข้ารหัสแบบ One-hot สำหรับ "ฮอตดอก" ซึ่งได้รับการเปลี่ยนรูปแบบเป็นเวกเตอร์ 3 มิติ
![รูปที่ 12 โครงข่ายระบบประสาทเทียมสำหรับการเข้ารหัสแบบ One-hot ของฮอตดอก เลเยอร์แรกคือเลเยอร์อินพุตที่มี 5 โหนด แต่ละโหนดมีคำอธิบายประกอบเป็นไอคอนอาหารที่สื่อถึง (บอชช์, ฮอตดอก, สลัด, ... และชาวัรมา) โหนดเหล่านี้มีค่า [0, 1, 0, ..., 0] ตามลำดับ ซึ่งสื่อถึงการเข้ารหัสแบบ One-hot ของ "ฮอตดอก" เลเยอร์อินพุตเชื่อมต่อกับเลเยอร์การฝังแบบ 3 โหนด ซึ่งมีค่าเป็น 2.98, -0.75 และ 0 ตามลำดับ เลเยอร์การฝังเชื่อมต่อกับเลเยอร์แบบ 5 โหนดที่ซ่อนไว้ ซึ่งจากนั้นจะเชื่อมต่อกับเลเยอร์เอาต์พุตแบบ 5 โหนด](https://developers.google.com/static/machine-learning/crash-course/embeddings/images/one_hot_hot_dog_embedding.png?authuser=4&hl=th)
hot dog
ซึ่งจัดเตรียมไว้เป็นอินพุตสำหรับโครงข่ายประสาทแบบลึก เลเยอร์การฝังแปลการเข้ารหัสแบบ One-hot เป็นเวกเตอร์การฝัง 3 มิติ [2.98, -0.75, 0]
ระหว่างการฝึก น้ำหนักของเลเยอร์การฝังจะได้รับการเพิ่มประสิทธิภาพเพื่อให้เวกเตอร์การฝังของตัวอย่างที่คล้ายกันมีลักษณะใกล้เคียงกันมากขึ้น ดังที่กล่าวไว้ก่อนหน้านี้ มิติที่โมเดลจริงเลือกสำหรับการฝังอาจไม่ได้ใช้งานง่ายหรือเข้าใจได้เหมือนตัวอย่างนี้
การฝังตามบริบท
ข้อจำกัดอย่างหนึ่งของเวกเตอร์การฝังแบบคงที่ word2vec
ก็คือคำอาจมีหลายความหมายในบริบทต่างๆ คำว่า "ใช่" มีความหมายอย่างหนึ่งในตัวเอง แต่มีความหมายตรงกันข้ามเมื่ออยู่ในวลี "ใช่ก็บ้าแล้ว" คำว่า "กา" อาจหมายถึง "นกกา" "การทำเครื่องหมายกากบาท" "กาน้ำ" และอื่นๆ
แต่การฝังแบบคงที่ทำให้แต่ละคำมีตัวแทนเป็นจุดเดี่ยวในพื้นที่เวกเตอร์ แม้ว่าคำนั้นจะมีหลายความหมายก็ตาม
ในแบบฝึกหัดที่แล้ว คุณค้นพบข้อจำกัดของการฝังแบบคงที่สำหรับคำว่าส้ม ซึ่งอาจหมายถึงสีหรือผลไม้ชนิดหนึ่ง เมื่อมีการฝังแบบคงที่เพียงรายการเดียว คำว่าส้มจะใกล้เคียงกับสีอื่นๆ มากกว่าคำว่าน้ำผลไม้เสมอ เมื่อฝึกด้วยชุดข้อมูล word2vec
การฝังตามบริบทได้รับการพัฒนาขึ้นเพื่อจัดการกับข้อจำกัดนี้ การฝังตามบริบทช่วยให้คำๆ หนึ่งมีตัวแทนเป็นการฝังหลายรายการที่นำข้อมูลเกี่ยวกับคำรอบข้างมาใช้ด้วยเช่นเดียวกับคำที่นำเสนอ คำว่าส้มจะมีการฝังที่แตกต่างกันสำหรับแต่ละประโยคที่ไม่ซ้ำกันซึ่งมีคำในชุดข้อมูล
การสร้างการฝังตามบริบทบางวิธี เช่น ELMo ใช้การฝังแบบคงที่เป็นตัวอย่าง เช่น เวกเตอร์ word2vec
ของคำในประโยค และเปลี่ยนรูปแบบด้วยฟังก์ชันที่นำข้อมูลเกี่ยวกับคำรอบข้างมาใช้ ซึ่งทำให้เกิดการฝังตามบริบท
คลิกที่นี่เพื่อดูรายละเอียดเกี่ยวกับการฝังตามบริบท
- สำหรับโมเดล ELMo โดยเฉพาะ การฝังแบบคงที่จะผสานรวมกับการฝังที่นำมาจากเลเยอร์อื่นๆ ซึ่งเข้ารหัสการอ่านประโยคแบบหน้าไปหลังและหลังมาหน้า
- โมเดล BERT มาสก์ลำดับส่วนหนึ่งที่โมเดลนำมาใช้เป็นอินพุต
- โมเดล Transformer ใช้เลเยอร์การใส่ใจตนเองเพื่อชั่งน้ำหนักความเกี่ยวข้องของคำอื่นๆ ในลำดับกับคำแต่ละคำ โมเดลเหล่านี้ยังเพิ่มคอลัมน์ที่เกี่ยวข้องจากเมทริกซ์การฝังตำแหน่ง (ดูการเข้ารหัสตำแหน่ง) ให้กับการฝังโทเค็นที่เรียนรู้ไปก่อนหน้านี้ทีละองค์ประกอบเพื่อสร้างการฝังอินพุตที่ป้อนเข้าไปยังส่วนที่เหลือของโมเดลสำหรับการอนุมาน การฝังอินพุตนี้เป็นการฝังตามบริบท ซึ่งไม่ซ้ำกันในลำดับของข้อความที่แตกต่างกันแต่ละรายการ
แม้ว่าโมเดลที่อธิบายไว้ข้างต้นจะเป็นโมเดลภาษา แต่การฝังตามบริบทก็มีประโยชน์ในงาน Generative อื่นๆ เช่น รูปภาพ การฝังค่า RGB ของพิกเซลในรูปภาพม้าช่วยให้ข้อมูลเพิ่มเติมกับโมเดลมากกว่าการฝังแบบคงที่ดั้งเดิมของค่า RGB เท่านั้น เมื่อรวมกับเมทริกซ์ตำแหน่งที่เป็นตัวแทนแต่ละพิกเซลและการเข้ารหัสบางส่วนของพิกเซลรอบข้าง ซึ่งสร้างการฝังตามบริบท