หมายเหตุ: พื้นที่เก็บข้อมูลไม่ได้รับการดูแลรักษา อย่าลังเลที่จะ PM ฉันหากคุณต้องการเข้ารับการบำรุงรักษา
สร้าง seq2seq เพื่อให้ keras ทำงาน และลองใช้ seq2seq อื่นๆ บ้าง
รหัสประกอบด้วย:
คำเตือน
เอกสาร
ภาพสวย
ตั้งค่า&เรียกใช้
git clone https://github.com/nicolas-ivanov/debug_seq2seq
cd debug_seq2seq
bash bin/setup.sh
python bin/train.py
แล้ว
python bin/test.py
ผลลัพธ์
จนถึงขณะนี้ยังไม่มีผลลัพธ์ที่ดี:
[why ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[who ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[yeah ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[what is it ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as as i]
[why not ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[really ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
ฉันเดาว่ามีปัญหาพื้นฐานบางประการในแนวทางนี้:
เนื่องจากเวกเตอร์ word2vec ใช้สำหรับการแสดงคำ และแบบจำลองจะส่งกลับเวกเตอร์โดยประมาณสำหรับทุกคำถัดไป ข้อผิดพลาดนี้จึงสะสมจากคำหนึ่งไปอีกคำหนึ่ง ดังนั้นเมื่อเริ่มจากคำที่สาม โมเดลจึงไม่สามารถคาดเดาสิ่งที่มีความหมายได้... ปัญหานี้อาจเกิดขึ้นได้ เอาชนะได้หากเราแทนที่เวกเตอร์ word2vec โดยประมาณของเราทุกๆ เครื่องหมาย thimestamp ด้วยเวกเตอร์ที่ "ถูกต้อง" นั่นคือเวกเตอร์ที่สอดคล้องกับคำจริงจากพจนานุกรม มันสมเหตุสมผลไหม? อย่างไรก็ตามคุณต้องเจาะลึกโค้ด seq2seq เพื่อดำเนินการดังกล่าว
ปัญหาที่สองเกี่ยวข้องกับการสุ่มตัวอย่างคำ: แม้ว่าคุณจะจัดการเพื่อแก้ไขปัญหาข้างต้น ในกรณีที่คุณยังคงใช้ argmax() ในการเลือกคำที่น่าจะเป็นมากที่สุดทุกครั้งที่ประทับตรา คำตอบจะง่ายเกินไปและไม่น่าสนใจ เช่น:
are you a human? -- no .
are you a robot or human? -- no .
are you a robot? -- no .
are you better than siri? -- yes .
are you here ? -- yes .
are you human? -- no .
are you really better than siri? -- yes .
are you there -- you ' re not going to be
are you there?!?! -- yes .
เพื่อไม่ให้ทำให้คุณเข้าใจผิด: ผลลัพธ์เหล่านี้ได้รับบนสถาปัตยกรรม seq2seq ที่แตกต่างกัน โดยอิงจากเทนเซอร์โฟลว์
การสุ่มตัวอย่างด้วยอุณหภูมิสามารถใช้เพื่อกระจายผลลัพธ์เอาต์พุตได้ อย่างไรก็ตาม ควรทำอีกครั้งภายในไลบรารี seq2seq