يسعدنا أن نشارك Jack of All Trades (JAT)، وهو مشروع يهدف إلى التحرك في اتجاه وكيل عام. بدأ المشروع كنسخة مفتوحة من عمل جاتو (ريد وآخرون، 2022)، الذي اقترح تدريب محول قادر على أداء مهام الرؤية واللغة ومهام اتخاذ القرار. وهكذا بدأنا ببناء نسخة مفتوحة من مجموعة بيانات جاتو. قمنا بعد ذلك بتدريب نماذج المحولات متعددة الوسائط عليها، وأدخلنا العديد من التحسينات على Gato للتعامل مع البيانات المتسلسلة والقيم المستمرة.
بشكل عام، نتج عن المشروع:
- إطلاق سراح عدد كبير من وكلاء RL الخبراء على مجموعة واسعة من المهام.
- الافراج عن مجموعة بيانات جات، أول مجموعة بيانات لتدريب الوكلاء العموميين. يحتوي على مئات الآلاف من مسارات الخبراء التي تم جمعها مع الوكلاء الخبراء
- الافراج عن نموذج جات، وكيل قائم على المحولات قادر على لعب ألعاب الفيديو، والتحكم في الروبوت لأداء مجموعة واسعة من المهام، وفهم الأوامر وتنفيذها في بيئة تنقل بسيطة وأكثر من ذلك بكثير!
مجموعات البيانات وسياسات الخبراء
سياسات الخبراء
يتضمن RL تقليديًا سياسات التدريب على بيئات فردية. تعد الاستفادة من سياسات الخبراء هذه طريقة حقيقية لبناء وكيل متعدد الاستخدامات. لقد اخترنا مجموعة واسعة من البيئات ذات الطبيعة والصعوبة المختلفة، بما في ذلك Atari وBabyAI وMeta-World وMuJoCo. وفي كل بيئة من هذه البيئات، نقوم بتدريب الوكيل حتى يصل إلى الأداء المتطور. (بالنسبة إلى BabyAI، نستخدم روبوت BabyAI بدلاً من ذلك). يُطلق على الوكلاء الناتجين اسم الوكلاء الخبراء، وقد تم إصدارهم على 🤗 Hub. ستجد قائمة بجميع الوكلاء في بطاقة مجموعة بيانات JAT.
مجموعة بيانات JAT
قمنا بإصدار مجموعة بيانات JAT، وهي أول مجموعة بيانات لتدريب الوكلاء العموميين. تحتوي مجموعة بيانات JAT على مئات الآلاف من مسارات الخبراء التي تم جمعها مع الوكلاء الخبراء المذكورين أعلاه. لاستخدام مجموعة البيانات هذه، ما عليك سوى تحميلها مثل أي مجموعة بيانات أخرى من 🤗 Hub:
>>> from datasets import load_dataset
>>> dataset = load_dataset("jat-project/jat-dataset", "metaworld-assembly")
>>> first_episode = dataset["train"][0]
>>> first_episode.keys()
dict_keys(['continuous_observations', 'continuous_actions', 'rewards'])
>>> len(first_episode["rewards"])
500
>>> first_episode["continuous_actions"][0]
[6.459120273590088, 2.2422609329223633, -5.914587020874023, -19.799840927124023]
بالإضافة إلى بيانات RL، نقوم بتضمين مجموعات البيانات النصية لتمكين واجهة فريدة للمستخدم. ولهذا السبب ستجد أيضًا مجموعات فرعية لـ Wikipedia، وOscar، وOK-VQA، وConceptual-Captions.
بنية وكيل JAT
تعتمد بنية JAT على المحول، باستخدام تطبيق EleutherAI’s GPT-Neo. تكمن خصوصية JAT في آلية التضمين الخاصة بها، والتي تم تصميمها للتعامل بشكل جوهري مع مهام القرار المتسلسلة. نحن نقوم بدمج تضمينات الملاحظة مع تضمينات الإجراء، جنبًا إلى جنب مع المكافآت المقابلة.
وبالتالي فإن كل تضمين يتوافق إما مع ملاحظة (مرتبطة بالمكافأة)، أو مع إجراء ما. ولكن كيف يقوم JAT بتشفير هذه المعلومات؟ ذلك يعتمد على نوع البيانات. إذا كانت البيانات (الملاحظة أو الإجراء) عبارة عن صورة (كما هو الحال بالنسبة لـ Atari)، فإن JAT يستخدم CNN. إذا كان متجهًا مستمرًا، فإن JAT يستخدم طبقة خطية. أخيرًا، إذا كانت قيمة منفصلة، فإن JAT يستخدم طبقة إسقاط خطية. يتم استخدام نفس المبدأ لمخرجات النموذج، اعتمادًا على نوع البيانات التي سيتم التنبؤ بها. التنبؤ سببي، حيث يتم تغيير الملاحظات بخطوة زمنية واحدة. وبهذه الطريقة، يجب على الوكيل التنبؤ بالإجراء التالي من جميع الملاحظات والأفعال السابقة.
بالإضافة إلى ذلك، اعتقدنا أنه سيكون من الممتع تدريب وكيلنا على أداء مهام البرمجة اللغوية العصبية والسيرة الذاتية. للقيام بذلك، أعطينا أيضًا برنامج التشفير خيار أخذ بيانات النص والصورة كمدخلات. بالنسبة للبيانات النصية، نقوم بالترميز باستخدام استراتيجية الترميز GPT-2، وبالنسبة للصور، نستخدم برنامج التشفير من النوع ViT.
بالنظر إلى أن طريقة البيانات يمكن أن تتغير من بيئة إلى أخرى، كيف يحسب JAT الخسارة؟ ويحسب الخسارة لكل طريقة على حدة. بالنسبة للصور والقيم المستمرة، فإنه يستخدم خسارة MSE. بالنسبة للقيم المنفصلة، فإنه يستخدم خسارة الإنتروبيا المتقاطعة. الخسارة النهائية هي متوسط الخسائر لكل عنصر من عناصر التسلسل. مهلا، هل هذا يعني أننا نعطي وزنا متساويا للتنبؤ بالأفعال والملاحظات؟ في الواقع، لا، لكننا سنتحدث أكثر عن ذلك أدناه.
التجارب والنتائج
نقوم بتقييم JAT في جميع المهام التدريبية البالغ عددها 157. نجمع 10 حلقات ونسجل المكافأة الإجمالية. لسهولة القراءة، نقوم بتجميع النتائج حسب المجال.
إذا أردنا تلخيص هذه النتائج في رقم واحد، فسيكون 65.8%، وهو متوسط الأداء مقارنة بخبير JAT في المجالات الأربعة. يوضح هذا أن JAT قادر على محاكاة أداء الخبراء في مجموعة واسعة جدًا من المهام. دعنا ندخل في مزيد من التفاصيل:
- بالنسبة إلى أتاري 57، يحقق الوكيل 14.1% من درجة الخبير، أي ما يعادل 37.6% من الأداء البشري. ويتجاوز الأداء البشري في 21 مباراة.
- بالنسبة إلى BabyAI، يحقق الوكيل 99.0% من درجة الخبير، ويفشل في تجاوز 50% من درجة الخبير في مهمة واحدة فقط.
- بالنسبة لـ Meta-World، وصل الوكيل إلى 65.5% من الخبراء.
- بالنسبة لـ MuJoCo، يحقق الوكيل 84.8% من الخبير.
الأمر الأكثر إثارة للإعجاب هو أن JAT يحقق هذا الأداء باستخدام شبكة واحدة لجميع المجالات. لقياس هذا الأداء، دعونا نشاهد عرض JAT لبعض المهام:
هل تريد تجربتها؟ أنت تستطيع! نموذج JAT متوفر على 🤗 Hub!
بالنسبة للمهام النصية، يظهر نموذجنا قدرات بدائية، ونحيل القارئ إلى الورقة لمزيد من التفاصيل.
الفوائد المدهشة للتنبؤ بالملاحظات
عند تدريب وكيل RL، فإن الهدف الأساسي هو تحقيق أقصى قدر من المكافآت المستقبلية. ولكن ماذا لو طلبنا أيضًا من الوكيل التنبؤ بما سيلاحظه في المستقبل؟ هل ستساعد هذه المهمة الإضافية أو تعيق عملية التعلم؟
هناك رأيان متعارضان حول هذه المسألة. فمن ناحية، يمكن أن يوفر تعلم التنبؤ بالملاحظات فهمًا أعمق للبيئة، مما يؤدي إلى تعلم أفضل وأسرع. من ناحية أخرى، يمكن أن يصرف الوكيل عن هدفه الرئيسي، مما يؤدي إلى أداء متواضع في كل من الملاحظة والتنبؤ بالعمل.
لتسوية هذا النقاش، أجرينا تجربة باستخدام دالة الخسارة التي تجمع بين فقدان الملاحظة وفقدان الإجراء، مع معلمة الترجيح لتحقيق التوازن بين الهدفين.
وكانت النتائج جديرة بالملاحظة. متى كان مرتفعًا جدًا (0.5)، ويبدو أن الهدف الإضافي المتمثل في التنبؤ بالملاحظات يعيق عملية التعلم. ولكن متى كان أقل، وكان التأثير على التعلم ضئيلًا، وكان أداء الوكيل مشابهًا للأداء الذي تم الحصول عليه عندما لم يكن توقع الملاحظة جزءًا من الهدف.
ومع ذلك، وجدنا بقعة حلوة حولها ، حيث أدى تعلم التنبؤ بالملاحظات إلى تحسين كفاءة التعلم للوكيل. تشير دراستنا إلى أن إضافة التنبؤ بالملاحظة إلى عملية التعلم يمكن أن يكون مفيدًا، طالما أنه متوازن بشكل صحيح. هذه النتيجة لها آثار مهمة على تصميم مثل هذه العوامل، وتسليط الضوء على القيمة المحتملة للأهداف المساعدة في تحسين كفاءة التعلم.
لذا، في المرة القادمة التي تقوم فيها بتدريب وكيل RL، فكر في مطالبته بالتنبؤ بما سيلاحظه في المستقبل. قد يؤدي ذلك إلى أداء أفضل وتعلم أسرع!
الاستنتاجات
في هذا العمل، قدمنا JAT، وهو عامل محول متعدد الأغراض قادر على إتقان مجموعة واسعة من مهام صنع القرار المتسلسلة، وإظهار قدرات بدائية في مهام البرمجة اللغوية العصبية (NLP) والسيرة الذاتية (CV). لجميع هذه المهام، يستخدم JAT شبكة واحدة. تشمل مساهماتنا إصدار وكلاء RL الخبراء ومجموعة بيانات JAT ونموذج JAT. نأمل أن يلهم هذا العمل الأبحاث المستقبلية في مجال الوكلاء العموميين ويساهم في تطوير أنظمة ذكاء اصطناعي أكثر تنوعًا وقدرة.
ما هي الخطوة التالية؟ طلب بحث
نعتقد أن مشروع JAT قد فتح اتجاهًا جديدًا للبحث في مجال الوكلاء العموميين، وقد قمنا للتو بخدش السطح. فيما يلي بعض الأفكار للعمل المستقبلي:
-
تحسين البيانات: على الرغم من كونها رائدة، إلا أن مجموعة بيانات JAT لا تزال في مراحلها الأولى. تأتي مسارات الخبراء من وكيل خبير واحد فقط لكل بيئة مما قد يسبب بعض التحيز. على الرغم من أننا بذلنا قصارى جهدنا للوصول إلى الأداء المتطور، إلا أن بعض البيئات لا تزال تمثل تحديًا. نعتقد أن جمع المزيد من البيانات وتدريب المزيد من الوكلاء الخبراء يمكن أن يساعد كثيراً.
-
استخدم RL دون اتصال: يتم تدريب وكيل JAT باستخدام الاستنساخ السلوكي الأساسي. وهذا يعني أمرين: (1) لا يمكننا الاستفادة من المسارات دون المستوى الأمثل و(2) لا يمكن لوكيل JAT أن يتفوق في الأداء على الخبير. لقد اخترنا هذا الأسلوب من أجل البساطة، ولكننا نعتقد أن استخدام RL دون اتصال يمكن أن يكون كذلك مساعدة حقا تحسين أداء الوكيل، في حين لا تكون معقدة للغاية في التنفيذ.
-
أطلق العنان للإمكانات الكاملة لاستراتيجية أخذ العينات متعددة المهام الأكثر ذكاءً: حاليًا، يقوم وكيل JAT بأخذ عينات من البيانات بشكل موحد من جميع المهام، ولكن هذا الأسلوب قد يعيقها. من خلال ضبط معدل أخذ العينات ديناميكيًا للتركيز على المهام الأكثر تحديًا، يمكننا تعزيز عملية التعلم الخاصة بالوكيل وإطلاق العنان لها مكاسب كبيرة في الأداء.
روابط
الاقتباس
@article{gallouedec2024jack,
title = {{Jack of All Trades, Master of Some, a Multi-Purpose Transformer Agent}},
author = {Gallouédec, Quentin and Beeching, Edward and Romac, Clément and Dellandréa, Emmanuel},
journal = {arXiv preprint arXiv:2402.09844},
year = {2024},
url = {https://arxiv.org/abs/2402.09844}
}