HyperAIHyperAI
منذ 12 أيام

GraphCodeBERT: التدريب المسبق لتمثيلات الشفرة باستخدام تدفق البيانات

Daya Guo, Shuo Ren, Shuai Lu, Zhangyin Feng, Duyu Tang, Shujie Liu, Long Zhou, Nan Duan, Alexey Svyatkovskiy, Shengyu Fu, Michele Tufano, Shao Kun Deng, Colin Clement, Dawn Drain, Neel Sundaresan, Jian Yin, Daxin Jiang, Ming Zhou
GraphCodeBERT: التدريب المسبق لتمثيلات الشفرة باستخدام تدفق البيانات
الملخص

تم تحقيق تحسينات تجريبية كبيرة من خلال النماذج المُدرّبة مسبقًا للغات البرمجة في مجموعة متنوعة من المهام المرتبطة بالكود، مثل بحث الكود، وإكمال الكود، وتلخيص الكود، إلخ. ومع ذلك، تتعامل النماذج المُدرّبة مسبقًا الحالية مع قطعة كود كسلسلة من الرموز (tokens)، مع تجاهل البنية المتأصلة في الكود، والتي توفر معاني كودية حاسمة وتساعد في تحسين عملية فهم الكود. نقدم في هذا العمل نموذج GraphCodeBERT، وهو نموذج مُدرّب مسبقًا للغات البرمجة يأخذ في الاعتبار البنية المتأصلة في الكود. بدلًا من الاعتماد على البنية على مستوى التركيب النحوي، مثل شجرة التركيب المجردة (AST)، نستخدم في مرحلة التدريب المسبق تدفق البيانات (data flow)، وهو بنية على مستوى المعنى تُعبّر عن العلاقة "من أين يُستمد القيمة" بين المتغيرات. تُعد هذه البنية على مستوى المعنى نظيفة، ولا تُضيف هيكلًا متعمقًا غير ضروري كما يحدث في شجرة التركيب المجردة، ما يجعل النموذج أكثر كفاءة. تم تطوير GraphCodeBERT بناءً على معمارية Transformer. وبالإضافة إلى استخدام مهمة نمذجة اللغة المُخفية (masked language modeling)، نُقدّم مهامتين جديدتين للتدريب المسبق يراعيان البنية. الأولى هي التنبؤ بحواف البنية في الكود، والثانية هي محاذاة التمثيلات بين الكود المصدر والبنية المرتبطة به. تم تنفيذ النموذج بطريقة فعّالة باستخدام دالة انتباه مُوجهة بالرسم البياني (graph-guided masked attention) لدمج البنية الكودية. تم تقييم النموذج على أربع مهام، تشمل بحث الكود، وكشف التكرار (clone detection)، وترجمة الكود، وتحسين الكود. أظهرت النتائج أن تضمين البنية الكودية والمهام الجديدة للتدريب المسبق يُحسّنان أداء GraphCodeBERT، ويُحققان أداءً متقدمًا على مستوى الحالة الحالية (state-of-the-art) في المهام الأربعة. كما أظهرنا أن النموذج يفضّل الانتباه على مستوى البنية (structure-level attentions) على الانتباه على مستوى الرموز (token-level attentions) في مهمة بحث الكود.

GraphCodeBERT: التدريب المسبق لتمثيلات الشفرة باستخدام تدفق البيانات | أحدث الأوراق البحثية | HyperAI