تحتوي قاعدة الشفرة هذه على تنفيذ طريقتين للتعلم المستمر:
L2P هي تقنية تعليمية مستمرة جديدة تتعلم أن تطالب بنموذج تدريب مسبقًا بشكل ديناميكي لتعلم المهام بالتتابع تحت التحولات المهمة المختلفة. تختلف عن الأساليب السائدة القائمة على البروفة أو القائمة على الهندسة المعمارية ، لا يتطلب L2P عازلة بروفة أو هوية مهمة وقت الاختبار. يمكن تعميم L2P على مختلف إعدادات التعلم المستمر بما في ذلك الإعداد الأكثر صعوبة والواقعية المهمة. يتفوق L2P باستمرار على أساليب أحدث حالة. والمثير للدهشة أن L2P يحقق نتائج تنافسية ضد الأساليب القائمة على البروفة حتى بدون عازلة بروفة.


كود كتبه Zifeng Wang. شكر وتقدير لـ https://github.com/google-research/nest-transformer.
هذا ليس منتج Google المدعوم رسميًا.
يتم بناء مؤشر ImageNet-R المقسم على ImageNet-R بتقسيم 200 فئة إلى 10 مهام مع 20 فئة لكل مهمة ، انظر libml/input_pipeline.py للحصول على التفاصيل. نعتقد أن الانقسام ImageNet-R له أهمية كبيرة لمجتمع التعلم المستمر ، للأسباب التالية:
تم إعادة تنفيذ قاعدة الشفرات في Pytorch بواسطة Jaeho Lee في L2P-Pytorch و Dualprompt-Pytorch.
pip install -r requirements.txt
بعد ذلك ، قد تحتاج إلى ضبط إصدار Jax الخاص بك وفقًا لإصدار برنامج تشغيل CUDA الخاص بك بحيث يحدد JAX بشكل صحيح وحدات معالجة الرسومات الخاصة بك (انظر هذه المشكلة لمزيد من التفاصيل).
ملاحظة: تم اختبار قاعدة الشرف من خلال اختبار TPU Enviroment باستخدام أحدث إصدار من Jax. نحن نعمل حاليًا على مزيد من التحقق من بيئة GPU.
قبل إجراء تجارب لـ 5 datasets و Core50 ، يجب إجراء خطوة إعداد مجموعة بيانات إضافية على النحو التالي:
"PATH_TO_CORE50" و "PATH_TO_NOT_MNIST" في libml/input_pipeline.py بواسطة مسارات الوجهة في الخطوة 2 يمكن تنزيل نموذج VIT-B/16 المستخدم في هذه الورقة هنا. ملاحظة: تدعم قاعدة كودنا في الواقع أحجام مختلفة من الحالات. إذا كنت ترغب في تجربة اختلافات من الحالات ، فلا تتردد في تغيير config.model_name في ملفات التكوين ، باتباع الخيارات الصحيحة المحددة في النماذج/vit.py.
نحن نقدم ملف التكوين لتدريب وتقييم L2P و DualPrompt على معايير متعددة في التكوينات.
لتشغيل L2P على مجموعات البيانات القياسية:
python main.py --my_config configs/$L2P_CONFIG --workdir=./l2p --my_config.init_checkpoint=<ViT-saved-path/ViT-B_16.npz>
حيث يمكن أن يكون $L2P_CONFIG أحد ما يلي: [cifar100_l2p.py, five_datasets_l2p.py, core50_l2p.py, cifar100_gaussian_l2p.py] .
ملاحظة: نقوم بتشغيل تجاربنا باستخدام 8 V100 GPU أو 4 TPU ، ونحدد حجم دفعة لكل جهاز من 16 في ملفات التكوين. هذا يشير إلى أننا نستخدم حجم الدفعة الإجمالي 128.
لتشغيل DualPrompt على مجموعات البيانات القياسية:
python main.py --my_config configs/$DUALPROMPT_CONFIG --workdir=./dualprompt --my_config.init_checkpoint=<ViT-saved-path/ViT-B_16.npz>
حيث يمكن أن يكون $DUALPROMPT_CONFIG أحد ما يلي: [imr_dualprompt.py, cifar100_dualprompt.py] .
نستخدم Tensorboard لتصور النتيجة. على سبيل المثال ، إذا كان دليل العمل المحدد لتشغيل L2P هو workdir=./cifar100_l2p ، فإن الأمر للتحقق من النتيجة هو كما يلي:
tensorboard --logdir ./cifar100_l2p
فيما يلي المقاييس المهمة لتتبعها ومعانيها المقابلة:
| متري | وصف |
|---|---|
| Accuracy_n | دقة المهمة N-th |
| النسيان | متوسط النسيان حتى المهمة الحالية |
| AVG_ACC | متوسط دقة التقييم حتى المهمة الحالية |
@inproceedings{wang2022learning,
title={Learning to prompt for continual learning},
author={Wang, Zifeng and Zhang, Zizhao and Lee, Chen-Yu and Zhang, Han and Sun, Ruoxi and Ren, Xiaoqi and Su, Guolong and Perot, Vincent and Dy, Jennifer and Pfister, Tomas},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={139--149},
year={2022}
}
@article{wang2022dualprompt,
title={DualPrompt: Complementary Prompting for Rehearsal-free Continual Learning},
author={Wang, Zifeng and Zhang, Zizhao and Ebrahimi, Sayna and Sun, Ruoxi and Zhang, Han and Lee, Chen-Yu and Ren, Xiaoqi and Su, Guolong and Perot, Vincent and Dy, Jennifer and others},
journal={European Conference on Computer Vision},
year={2022}
}