يحتوي هذا المستودع على طريقة تدريب عدائية جديدة لوكيل المحادثة التوليدي (GCA) الخاص بنا.
يمكن العثور على مزيد من التفاصيل حول طريقة التدريب الجديدة هذه في ورقة Oswaldo Ludwig، "End-to-end Adversarial Learning for Geneative Conversational Agents"، arXiv:1711.10122 cs.CL، نوفمبر 2017. في حالة النشر باستخدام أفكار أو أجزاء من الكود من هذا المستودع، يرجى التكرم بالاستشهاد بهذه الورقة.
تفترض طريقتنا أن GCA كمولد يهدف إلى خداع المُميِّز الذي يصنف الحوارات على أنها من صنع الإنسان أو من صنع الآلة. في نهجنا، يقوم أداة التمييز بالتصنيف على مستوى الرمز المميز، أي أنه يشير إلى ما إذا كان الرمز المميز الحالي قد تم إنشاؤه بواسطة البشر أو الآلات. وللقيام بذلك، يتلقى المُميِّز أيضًا أقوال السياق (تاريخ الحوار) والإجابة غير الكاملة حتى الرمز المميز الحالي كمدخلات. هذا النهج الجديد يجعل من الممكن التدريب الشامل عن طريق الانتشار العكسي. تمكن عملية المحادثة الذاتية من إنتاج مجموعة من البيانات التي تم إنشاؤها بمزيد من التنوع للتدريب الخصومي. يعمل هذا الأسلوب على تحسين الأداء في الأسئلة غير المرتبطة ببيانات التدريب.
استخدم النموذج المدرب المتاح هنا مجموعة بيانات تم جمعها من حوارات دورات اللغة الإنجليزية عبر الإنترنت، والمتوفرة هنا.
يمكن شرح نموذج GCA الخاص بنا من خلال المخطط الانسيابي التالي:
بينما يشرح الكود الكاذب التالي خوارزمية GCA الخاصة بنا:
يمكن تفسير تدريبنا الجديد على الخصومة من طرف إلى طرف من خلال نموذج Keras التالي (الذي تم تنفيذه في الملف Train_bot_GAN.py)، والذي يتكون من المولد والمميز. تنتمي الكتل الصفراء إلى GCA (المولد)، بينما تنتمي الكتل الخضراء إلى جهاز التمييز. تتم مشاركة الكتل البيضاء بين المولد والمميز:
بينما يشرح الكود الكاذب التالي الخوارزمية الجديدة (انظر الورقة لتعريف المتغيرات):
للدردشة مع النماذج المدربة مسبقًا:
لتقييم خطوط الحوار باستخدام أداة التمييز المدربة مسبقًا:
للتدريب الشامل باستخدام أسلوب الخصومة الجديد:
إذا كنت ترغب في بدء التدريب على الخصومة من الصفر، فاجعل ملف الوزن my_model_weights.h5 (تم تدريبه مسبقًا على طريقة الخصومة الجديدة) يساوي my_model_weights20.h5 (تم تدريبه مسبقًا عن طريق فرض المعلم) وقم بتشغيل Train_script.py.