วิธีการฝึกเลเยอร์การฝังในเลเยอร์ Keras การฝัง


14

เลเยอร์การฝังได้รับการฝึกฝนในเลเยอร์ Keras อย่างไร (พูดโดยใช้ tensorflow แบ็กเอนด์ความหมายมันคล้ายกับ word2vec, ถุงมือหรือข้อความอย่างรวดเร็ว)

สมมติว่าเราไม่ใช้การฝังที่ถูกเตรียมไว้


colah.github.io/posts/2014-07-NLP-RNNs-Representations -> โพสต์บล็อกนี้จะอธิบายอย่างชัดเจนเกี่ยวกับวิธีการฝังชั้นได้รับการฝึกฝนในชั้น Keras ฝัง หวังว่านี่จะช่วยได้
Akshay U Prabhu

คำตอบ:


24

เลเยอร์การฝังใน 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]


2
ตรงนี้เป็นคำอธิบายที่ฉันกำลังมองหา! ฉันคิดว่าประโยคนี้ควรเป็นตัวหนา: "โปรดจำไว้ว่า word2vec หมายถึงการตั้งค่าเครือข่ายที่เฉพาะเจาะจงมากซึ่งพยายามเรียนรู้การฝังที่จับความหมายของคำ"
Kevin

0

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

คุณสามารถฝึกมันเพื่อสร้างการฝัง Word2Vec โดยใช้ Skip-Gram หรือ CBOW หรือคุณสามารถฝึกฝนปัญหาเฉพาะของคุณเพื่อให้การฝังเหมาะสำหรับงานเฉพาะที่คุณต้องการ นอกจากนี้คุณยังสามารถโหลดงานแต่งที่ผ่านการฝึกอบรมล่วงหน้า (เช่น Word2Vec, GloVe ฯลฯ ) จากนั้นทำการฝึกอบรมเกี่ยวกับปัญหาเฉพาะของคุณ (รูปแบบการเรียนรู้การถ่ายโอน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.