เลเยอร์การฝังได้รับการฝึกฝนในเลเยอร์ Keras อย่างไร (พูดโดยใช้ tensorflow แบ็กเอนด์ความหมายมันคล้ายกับ word2vec, ถุงมือหรือข้อความอย่างรวดเร็ว)
สมมติว่าเราไม่ใช้การฝังที่ถูกเตรียมไว้
เลเยอร์การฝังได้รับการฝึกฝนในเลเยอร์ Keras อย่างไร (พูดโดยใช้ tensorflow แบ็กเอนด์ความหมายมันคล้ายกับ word2vec, ถุงมือหรือข้อความอย่างรวดเร็ว)
สมมติว่าเราไม่ใช้การฝังที่ถูกเตรียมไว้
คำตอบ:
เลเยอร์การฝังใน Keras นั้นผ่านการฝึกอบรมเช่นเดียวกับเลเยอร์อื่น ๆ ในสถาปัตยกรรมเครือข่ายของคุณ: พวกเขาได้รับการปรับแต่งเพื่อลดฟังก์ชั่นการสูญเสียให้น้อยที่สุดโดยใช้วิธีการเพิ่มประสิทธิภาพที่เลือก ความแตกต่างที่สำคัญกับเลเยอร์อื่นคือเอาท์พุทของพวกเขาไม่ใช่ฟังก์ชันทางคณิตศาสตร์ของอินพุต แทนที่จะใช้อินพุตกับเลเยอร์เพื่อทำดัชนีตารางด้วยเวกเตอร์การฝัง [1] อย่างไรก็ตามเอ็นจิ้นการสร้างความแตกต่างโดยอัตโนมัตินั้นไม่มีปัญหาในการปรับเวกเตอร์เหล่านี้เพื่อลดฟังก์ชั่นการสูญเสีย ...
ดังนั้นคุณไม่สามารถพูดได้ว่าเลเยอร์การฝังใน Keras นั้นทำเหมือนกับ word2vec [2] โปรดจำไว้ว่า word2vec อ้างถึงการตั้งค่าเครือข่ายที่เฉพาะเจาะจงมากซึ่งพยายามเรียนรู้การฝังที่จับความหมายของคำ ด้วยเลเยอร์การฝังของ Keras คุณกำลังพยายามลดฟังก์ชั่นการสูญเสียให้น้อยที่สุดดังนั้นหากตัวอย่างเช่นคุณกำลังทำงานกับปัญหาการจำแนกความเชื่อมั่นการฝังการเรียนรู้อาจไม่สามารถถ่ายทอดความหมายคำที่สมบูรณ์ได้
ยกตัวอย่างเช่นภาพต่อไปนี้นำมาจาก [3] แสดงให้เห็นว่าการฝังของสามประโยคด้วยชั้น Keras ฝังผ่านการฝึกอบรมจากรอยขีดข่วนเป็นส่วนหนึ่งของเครือข่ายภายใต้การดูแลการออกแบบมาเพื่อตรวจสอบพาดหัวข่าว clickbait (ซ้าย) และก่อนการฝึกอบรมword2vec embeddings (ขวา) อย่างที่คุณเห็นword2vec embeddings สะท้อนความหมายที่คล้ายคลึงกันระหว่างวลี b) และ c) ในทางกลับกัน embeddings ที่สร้างโดยเลเยอร์การฝังของ Keras อาจมีประโยชน์สำหรับการจัดหมวดหมู่ แต่อย่าจับภาพที่มีความหมายเหมือนกันของ b) และ c)
สิ่งนี้อธิบายได้ว่าทำไมเมื่อคุณมีตัวอย่างการฝึกอบรมในจำนวนที่ จำกัด อาจเป็นความคิดที่ดีที่จะเริ่มต้นเลเยอร์การฝังของคุณด้วยน้ำหนักword2vecดังนั้นอย่างน้อยโมเดลของคุณจะรับรู้ว่า "Alps" และ "หิมาลัย" เป็นสิ่งที่คล้ายกัน ทั้งสองอย่างเกิดขึ้นในประโยคของชุดข้อมูลการฝึกอบรมของคุณ
[1] เลเยอร์ 'การฝัง' ของ Keras ทำงานอย่างไร
[2] https://www.tensorflow.org/tutorials/word2vec
[3] https://link.springer.com/article/10.1007/s10489-017-1109-7
หมายเหตุ: จริงๆแล้วภาพแสดงการเปิดใช้งานของเลเยอร์หลังเลเยอร์การฝัง แต่สำหรับวัตถุประสงค์ของตัวอย่างนี้มันไม่สำคัญ ... ดูรายละเอียดเพิ่มเติมใน [3]
เลเยอร์การฝังเป็นเพียงการฉายภาพจากเวกเตอร์ร้อนและต่อเนื่องแบบเบาบางลงในพื้นที่แฝงที่ต่อเนื่องและหนาแน่น มันเป็นเมทริกซ์ของ (n, m) โดยที่ n คือขนาดคำศัพท์ของคุณและ n คือขนาดพื้นที่แฝงที่คุณต้องการ เพียง แต่ในทางปฏิบัติมีความจำเป็นที่จะทำจริงคูณเมทริกซ์ไม่และแทนคุณสามารถบันทึกในการคำนวณโดยใช้ดัชนี ดังนั้นในทางปฏิบัติมันเป็นเลเยอร์ที่แมปจำนวนเต็มบวก (ดัชนีที่ตรงกับคำ) ลงในเวกเตอร์ที่มีความหนาแน่นของขนาดคงที่ (เวกเตอร์การฝัง)
คุณสามารถฝึกมันเพื่อสร้างการฝัง Word2Vec โดยใช้ Skip-Gram หรือ CBOW หรือคุณสามารถฝึกฝนปัญหาเฉพาะของคุณเพื่อให้การฝังเหมาะสำหรับงานเฉพาะที่คุณต้องการ นอกจากนี้คุณยังสามารถโหลดงานแต่งที่ผ่านการฝึกอบรมล่วงหน้า (เช่น Word2Vec, GloVe ฯลฯ ) จากนั้นทำการฝึกอบรมเกี่ยวกับปัญหาเฉพาะของคุณ (รูปแบบการเรียนรู้การถ่ายโอน)