ملاحظة: لا يتم الاحتفاظ بالمستودع. لا تتردد في مراسلتي عبر البريد الإلكتروني إذا كنت ترغب في تولي الصيانة.
جعل 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 التقريبي الخاص بنا في كل طابع زمني بمتجه "صحيح"، أي المتجه الذي يتوافق مع كلمة فعلية من القاموس. هل هذا منطقي؟ ومع ذلك تحتاج إلى البحث في كود 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 مختلفة، استنادًا إلى Tensorflow.
يمكن استخدام أخذ العينات مع درجة الحرارة لتنويع نتائج المخرجات، ولكن يجب أن يتم ذلك مرة أخرى داخل مكتبة seq2seq.