Allrank هو إطار قائم على Pytorch لتدريب نماذج التعلم العصبي (LTR) ، ويتميز بتطبيقات:
يوفر Allrank طريقة سهلة ومرنة لتجربة مختلف نماذج الشبكة العصبية LTR ووظائف الخسارة. من السهل إضافة خسارة مخصصة ، وتكوين النموذج وإجراء التدريب. نأمل أن يسهل Allrank كلاً من الأبحاث في LTR العصبية وتطبيقاتها الصناعية.
لمساعدتك في البدء ، نقدم نصًا run_example.sh الذي يولد بيانات التصنيف الوهمية بتنسيق LIBSVM وندرب نموذج محول على البيانات باستخدام ملف تكوين config.json المقدم. بمجرد تشغيل البرنامج النصي ، يمكن العثور على البيانات الوهمية في دليل dummy_data ونتائج التجربة في دليل test_run . لتشغيل المثال ، يلزم Docker.
نظرًا لأن ثنائيات الشعلة مختلفة عن GPU و CPU و GPU ، لا يعمل إصدار CPU - يجب على المرء تحديد وبناء إصدار صورة Docker المناسب.
للقيام بذلك تمرير gpu أو cpu مثل arch_version Build-ARG في
docker build --build-arg arch_version=${ARCH_VERSION}
عند استدعاء run_example.sh يمكنك تحديد الإصدار المناسب بواسطة وسيطة سطر CMD الأولى على سبيل المثال
run_example.sh gpu ...
مع cpu كونها الافتراضي إذا لم يتم تحديدها.
لتدريب النموذج الخاص بك ، قم بتكوين تجربتك في ملف config.json وتشغيله
python allrank/main.py --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>
جميع المقاييس المفرطة لإجراء التدريب: أي نموذج نموذج ، موقع البيانات ، الخسارة والمقاييس المستخدمة ، يتم التحكم في Hyperparametrs التدريب وما إلى ذلك بواسطة ملف config.json . نحن نقدم ملف قالب config_template.json حيث يتم شرح سماتها المدعومة ، ومعناها وقيمها المحتملة. لاحظ أنه بعد اتفاقية MSLR-WEB30K ، يجب تسمية ملف LIBSVM الخاص بك مع بيانات التدريب train.txt . يمكنك تحديد اسم مجموعة بيانات التحقق من الصحة (على سبيل المثال. صالح أو اختبار) في التكوين. سيتم حفظ النتائج تحت المسار <job_dir>/results/<run_id>
يتم دعم Google Cloud Storage في Allrank كمكان للبيانات ونتائج الوظائف.
لتجربة خسارتك المخصصة الخاصة بك ، تحتاج إلى تنفيذ وظيفة تأخذ اثنين من الموترات (التنبؤ النموذجية والحقيقة الأرضية) كمدخلات ووضعها في حزمة losses ، مع التأكد من تعرضها على مستوى الحزمة. لاستخدامه في التدريب ، ما عليك سوى تمرير الاسم (و args ، إذا كانت طريقة الخسارة الخاصة بك تحتوي على بعض المقاييس المفرطة) من وظيفتك في المكان الصحيح في ملف التكوين:
"loss": {
"name": "yourLoss",
"args": {
"arg1": val1,
"arg2: val2
}
}
لتطبيق نموذج نقرة تحتاج أولاً إلى تدريب نموذج Allrank. بعد ذلك ، قم بالتشغيل:
python allrank/rank_and_click.py --input-model-path <path_to_the_model_weights_file> --roles <comma_separated_list_of_ds_roles_to_process eg train,valid> --config_file_name allrank/config.json --run_id <the_name_of_your_experiment> --job_dir <the_place_to_save_results>
سيتم استخدام النموذج لتصنيف جميع الألواح من مجموعة البيانات المحددة في التكوين. التالي - سيتم تطبيق نموذج نقرة تم تكوينه في التكوين وسيتم كتابة مجموعة بيانات النقر النقر الناتجة تحت <job_dir>/results/<run_id> بتنسيق LIBSVM. يمكن بعد ذلك استخدام المسار إلى دليل النتائج كمدخل لتدريب نموذج Allrank آخر.
يجب عليك تشغيل scripts/ci.sh للتحقق من أن الكود يمرر إرشادات النمط واختبارات الوحدة.
تم تطوير هذا الإطار لدعم التعلم الذي يدرك سياق المشروع البحثي لتصنيفه مع الاهتمام الذاتي. إذا كنت تستخدم allrank في بحثك ، يرجى الاستشهاد:
@article{Pobrotyn2020ContextAwareLT,
title={Context-Aware Learning to Rank with Self-Attention},
author={Przemyslaw Pobrotyn and Tomasz Bartczak and Mikolaj Synowiec and Radoslaw Bialobrzeski and Jaroslaw Bojar},
journal={ArXiv},
year={2020},
volume={abs/2005.10084}
}
بالإضافة إلى ذلك ، إذا كنت تستخدم وظيفة فقدان NeuralNDCG ، فيرجى الاستشهاد بالعمل المقابل ، NeuralNDCG: التحسين المباشر لمقياس التصنيف من خلال الاسترخاء المتفرق من الفرز:
@article{Pobrotyn2021NeuralNDCG,
title={NeuralNDCG: Direct Optimisation of a Ranking Metric via Differentiable Relaxation of Sorting},
author={Przemyslaw Pobrotyn and Radoslaw Bialobrzeski},
journal={ArXiv},
year={2021},
volume={abs/2102.07831}
}
ترخيص Apache 2