جدول المحتويات[يخفي][يعرض]
تعمل تقنيات التعلم العميق المعروفة باسم "الشبكات العصبية للرسم البياني" (GNNs) في مجال الرسم البياني. لقد وجدت هذه الشبكات مؤخرًا استخدامها في مجموعة متنوعة من المجالات ، بما في ذلك رؤية الكمبيوتر وأنظمة التوصية والتحسين التجميعي ، على سبيل المثال لا الحصر.
بالإضافة إلى ذلك ، يمكن استخدام هذه الشبكات لتمثيل الأنظمة المعقدة ، بما في ذلك الشبكات الاجتماعية ، وشبكات تفاعل البروتين البروتين ، والرسوم البيانية المعرفية ، وغيرها في العديد من مجالات الدراسة.
المساحة غير الإقليدية هي المكان الذي تعمل فيه بيانات الرسم البياني ، على عكس الأنواع الأخرى من البيانات مثل الصور. من أجل تصنيف العقد ، والتنبؤ بالروابط ، وبيانات الكتلة ، يتم استخدام تحليل الرسم البياني.
في هذه المقالة ، سوف نفحص الرسم البياني الشبكة العصبية بالتفصيل ، أنواعها ، بالإضافة إلى تقديم أمثلة عملية باستخدام PyTorch.
إذن ، ما هو الرسم البياني؟
الرسم البياني هو نوع من بنية البيانات يتكون من العقد والرؤوس. يتم تحديد الروابط بين العقد المختلفة بواسطة القمم. إذا كان الاتجاه محددًا في العقد ، فيُقال إن الرسم البياني موجه ؛ وإلا فإنه غير موجه.
تطبيق جيد للرسوم البيانية هو نمذجة العلاقات بين مختلف الأفراد في الشبكة الاجتماعية. عند التعامل مع الظروف المعقدة ، مثل الروابط والتبادلات ، تكون الرسوم البيانية مفيدة للغاية.
يتم توظيفهم من خلال أنظمة التوصية والتحليل الدلالي وتحليل الشبكة الاجتماعية والتعرف على الأنماط
. يعد إنشاء الحلول القائمة على الرسم البياني مجالًا جديدًا يوفر فهمًا ثاقبًا للبيانات المعقدة والمترابطة.
الشبكة العصبية للرسم البياني
الشبكات العصبية للرسم البياني هي أنواع شبكات عصبية متخصصة يمكن أن تعمل على تنسيق بيانات الرسم البياني. إن تضمين الرسم البياني والشبكات العصبية التلافيفية (CNN) لها تأثير كبير عليها.
تُستخدم شبكات الرسم البياني العصبية في المهام التي تتضمن توقع العقد والحواف والرسوم البيانية.
- تستخدم CNN لتصنيف الصور. وبالمثل ، للتنبؤ بفئة ، يتم تطبيق GNNs على شبكة البكسل التي تمثل بنية الرسم البياني.
- تصنيف النص باستخدام الشبكات العصبية المتكررة. تُستخدم GNNs أيضًا مع معماريات الرسم البياني حيث تكون كل كلمة في عبارة عبارة عن عقدة.
من أجل التنبؤ بالعقد أو الحواف أو الرسوم البيانية الكاملة ، تُستخدم الشبكات العصبية لإنشاء شبكات GNN. يمكن للتنبؤ على مستوى العقدة ، على سبيل المثال ، حل مشكلة مثل اكتشاف البريد العشوائي.
التنبؤ بالرابط هو حالة نموذجية في أنظمة التوصية وقد يكون مثالًا على مشكلة التنبؤ الحكيمة.
أنواع الشبكات العصبية الخاصة بالرسم البياني
توجد العديد من أنواع الشبكات العصبية ، والشبكات العصبية التلافيفية موجودة في معظمها. سنتعرف على أشهر شبكات GNN في هذا الجزء.
الشبكات التلافيفية للرسم البياني (GCNs)
إنها قابلة للمقارنة مع شبكات CNN الكلاسيكية. يكتسب الخصائص من خلال النظر إلى العقد القريبة. يتم استخدام وظيفة التنشيط بواسطة GNNs لإضافة اللاخطية بعد تجميع متجهات العقدة وإرسال الإخراج إلى الطبقة الكثيفة.
وهي تتكون من التفاف الرسم البياني ، وطبقة خطية ، ووظيفة تنشيط غير المتعلم ، في جوهرها. تأتي شبكات GCN في نوعين رئيسيين: الشبكات التلافيفية الطيفية والشبكات التلافيفية المكانية.
شبكات التشفير التلقائي للرسم البياني
يستخدم المشفر لمعرفة كيفية تمثيل الرسوم البيانية ووحدة فك التشفير لمحاولة إعادة بناء الرسوم البيانية للإدخال. هناك طبقة عنق الزجاجة تربط بين المشفر ووحدة فك التشفير.
نظرًا لأن أجهزة التشفير التلقائي تقوم بعمل ممتاز في معالجة توازن الفئة ، فإنها تُستخدم بشكل متكرر في تنبؤ الارتباط.
الشبكات العصبية للرسم البياني المتكرر (RGNNs)
في الشبكات متعددة العلاقات ، حيث يكون للعقدة الواحدة العديد من العلاقات ، فإنها تتعلم نمط الانتشار الأمثل ويمكنها إدارة الرسوم البيانية. من أجل زيادة النعومة وتقليل المعاملات الزائدة ، يتم استخدام المنظمين في هذا الشكل من الشبكة العصبية للرسم البياني.
من أجل الحصول على نتائج أفضل ، تتطلب شبكات RGNN طاقة معالجة أقل. يتم استخدامها لإنشاء النص والتعرف على الكلام والترجمة الآلية ووصف الصورة ووضع علامات على الفيديو وتلخيص النص.
شبكات الرسوم البيانية العصبية (GGNNs)
عندما يتعلق الأمر بالمهام التابعة طويلة الأجل ، فإنها تتفوق على RGNNs في الأداء. من خلال تضمين العقدة والحافة والبوابات الزمنية على التبعيات طويلة المدى ، تعزز الشبكات العصبية للرسم البياني المسور الشبكات العصبية المتكررة للرسم البياني.
تعمل البوابات بشكل مشابه للوحدات المتكررة ذات البوابات (GRUs) من حيث استخدامها لاستدعاء البيانات ونسيانها في مراحل مختلفة.
تنفيذ الشبكة العصبية للرسم البياني باستخدام Pytorch
المشكلة المحددة التي سنركز عليها هي مشكلة شائعة في تصنيف العقدة. لدينا شبكة اجتماعية كبيرة تسمى موسي جيثب، والتي تم تجميعها من واجهة برمجة التطبيقات المفتوحة ، لمطوري GitHub.
تُظهر الحواف علاقات المتابعين المتبادلين بين العقد ، والتي تمثل المطورين (مستخدمي النظام الأساسي) الذين قاموا بتمييز ما لا يقل عن 10 مستودعات (لاحظ أن كلمة تبادل تشير إلى علاقة غير موجهة).
استنادًا إلى موقع العقدة والمستودعات المميزة بنجمة وصاحب العمل وعنوان البريد الإلكتروني ، يتم استرداد خصائص العقدة. توقع ما إذا كان مستخدم GitHub مطور ويب أم ملف مطور تعلم الآلة هي مهمتنا.
كان المسمى الوظيفي لكل مستخدم بمثابة الأساس لوظيفة الاستهداف هذه.
تثبيت PyTorch
للبدء ، نحتاج أولاً إلى التثبيت PyTorch. يمكنك تكوينه وفقًا لجهازك من هنا. تلك هي خاصتي:
استيراد الوحدات
الآن ، نقوم باستيراد الوحدات اللازمة
استيراد واستكشاف البيانات
الخطوة التالية هي قراءة البيانات ورسم الصفوف الخمسة الأولى والصفوف الخمسة الأخيرة من ملف الملصقات.
اثنان فقط من الأعمدة الأربعة - معرف العقدة (أي المستخدم) و ml_target ، وهو 1 إذا كان المستخدم عضوًا في مجتمع التعلم الآلي و 0 بخلاف ذلك - لهما صلة بنا في هذه الحالة.
نظرًا لوجود فئتين فقط ، يمكننا الآن التأكد من أن مهمتنا هي مسألة تصنيف ثنائي.
نتيجة للاختلالات الكبيرة في الفئة ، يمكن للمصنف أن يفترض فقط أي فئة هي الأغلبية بدلاً من تقييم الفئة الممثلة تمثيلا ناقصا ، مما يجعل توازن الفصل عاملا حاسما آخر يجب مراعاته.
يكشف رسم الرسم البياني (توزيع التردد) عن بعض عدم التوازن نظرًا لوجود عدد أقل من الفئات من التعلم الآلي (التسمية = 1) مقارنة بالفئات الأخرى.
ترميز الميزة
تُعلمنا خصائص العقد بالميزة المرتبطة بكل عقدة. من خلال تنفيذ طريقتنا في تشفير البيانات ، يمكننا تشفير هذه الخصائص على الفور.
نريد استخدام هذه الطريقة لتغليف جزء صغير من الشبكة (على سبيل المثال ، 60 عقدة) للعرض. تم إدراج الرمز هنا.
تصميم وعرض الرسوم البيانية
سنستخدم الشعلة الهندسية. البيانات لبناء الرسم البياني لدينا.
لنمذجة رسم بياني واحد بخصائص مختلفة (اختيارية) ، يتم استخدام البيانات التي هي كائن بايثون بسيط. من خلال استخدام هذه الفئة والسمات التالية - وكلها موتر شعلة - سننشئ كائن الرسم البياني الخاص بنا.
شكل القيمة x ، التي سيتم تخصيصها لميزات العقدة المشفرة ، هو [عدد العقد ، عدد الميزات].
شكل y هو [عدد العقد] ، وسيتم تطبيقه على تسميات العقد.
مؤشر الحافة: من أجل وصف رسم بياني غير موجه ، نحتاج إلى توسيع مؤشرات الحافة الأصلية للسماح بوجود حافتين موجهتين متميزتين تربطهما نفس العقدتين ولكنهما تشيران في اتجاهين متعاكسين.
مطلوب زوج من الحواف ، يشير أحدهما من العقدة 100 إلى 200 والآخر من 200 إلى 100 ، على سبيل المثال ، بين العقد 100 و 200. إذا تم توفير مؤشرات الحافة ، فهذه هي الطريقة التي يمكن بها تمثيل الرسم البياني غير المباشر. [2,2،XNUMX * عدد الحواف الأصلية] سيكون شكل موتر.
نقوم بإنشاء طريقة الرسم البياني الخاصة بنا لعرض رسم بياني. تتمثل الخطوة الأولى في تحويل شبكتنا المتجانسة إلى رسم بياني NetworkX ، والذي يمكن بعد ذلك رسمه باستخدام NetworkX.draw.
اصنع نموذج GNN الخاص بنا وقم بتدريبه
نبدأ بتشفير مجموعة البيانات بأكملها عن طريق تنفيذ بيانات الترميز باستخدام light = False ثم استدعاء رسم بياني للبناء مع light = False لبناء الرسم البياني بأكمله. لن نحاول رسم هذا الرسم البياني الكبير لأنني أفترض أنك تستخدم آلة محلية ذات موارد محدودة.
يمكن استخدام الأقنعة ، وهي متجهات ثنائية تحدد العقد التي تنتمي إلى كل قناع محدد باستخدام الرقمين 0 و 1 ، لإخطار مرحلة التدريب بالعقد التي يجب تضمينها أثناء التدريب ولإخبار مرحلة الاستدلال بالعقد التي تمثل بيانات الاختبار. الشعلة الهندسية.
يمكن إضافة تقسيم على مستوى العقدة باستخدام قناع التدريب ، وقناع الصمام ، وخصائص قناع الاختبار لفئة AddTrainValTestMask ، والتي يمكن استخدامها لأخذ رسم بياني وتمكيننا من تحديد كيف نريد إنشاء أقنعةنا.
نحن نستخدم فقط 10٪ للتدريب ونستخدم 60٪ من البيانات كمجموعة اختبار أثناء استخدام 30٪ كمجموعة التحقق من الصحة.
الآن ، سنقوم بتكديس طبقتين من GCNConv ، أولهما يحتوي على عدد ميزات الإخراج يساوي عدد الميزات في الرسم البياني لدينا كميزات إدخال.
في الطبقة الثانية ، التي تحتوي على عقد إخراج مساوية لعدد فئاتنا ، نطبق وظيفة تنشيط relu ونوفر الميزات الكامنة.
مؤشر الحافة ووزن الحافة هما خياران من الخيارات العديدة x التي يمكن لـ GCNConv قبولها في الوظيفة الأمامية ، لكن في حالتنا ، نحتاج فقط إلى المتغيرين الأولين.
على الرغم من حقيقة أن نموذجنا سيكون قادرًا على التنبؤ بفئة كل عقدة في الرسم البياني ، ما زلنا بحاجة إلى تحديد الدقة والخسارة لكل مجموعة على حدة اعتمادًا على المرحلة.
على سبيل المثال ، أثناء التدريب ، نريد فقط استخدام مجموعة التدريب لتحديد الدقة وفقدان التدريب ، وبالتالي هذا هو المكان الذي تكون فيه أقنعةنا في متناول اليد.
لحساب الخسارة والدقة المناسبين ، سنحدد وظائف الخسارة المقنعة والدقة المقنعة.
تدريب النموذج
الآن وقد حددنا الغرض من التدريب الذي سيتم استخدام الشعلة من أجله. آدم هو محسن رئيسي.
سنجري التدريب لعدد معين من الحقب مع مراقبة دقة التحقق من الصحة.
نرسم أيضًا خسائر التدريب ودقته على مر العصور المختلفة.
عيوب الشبكة العصبية للرسم البياني
استخدام GNNs له بعض العيوب. سيتم توضيح وقت استخدام GNNa وكيفية تحسين أداء نماذج التعلم الآلي لدينا بعد أن يكون لدينا فهم أفضل لها.
- في حين أن شبكات GNN عبارة عن شبكات ضحلة ، تتكون عادةً من ثلاث طبقات ، إلا أن معظم الشبكات العصبية يمكن أن تتعمق في تحسين الأداء. نحن غير قادرين على الأداء في طليعة مجموعات البيانات الكبيرة بسبب هذا القيد.
- من الصعب تدريب نموذج على الرسوم البيانية ، لأن ديناميكياتها الهيكلية ديناميكية.
- نظرًا لارتفاع التكاليف الحسابية لهذه الشبكات ، فإن توسيع نطاق نموذج الإنتاج يمثل تحديات. سيكون قياس GNNs للإنتاج أمرًا صعبًا إذا كان هيكل الرسم البياني الخاص بك ضخمًا ومعقدًا.
وفي الختام
على مدار السنوات القليلة الماضية ، تطورت شبكات GNN إلى أدوات قوية وفعالة لمشكلات التعلم الآلي في مجال الرسم البياني. يتم تقديم نظرة عامة أساسية عن الشبكات العصبية للرسم البياني في هذه المقالة.
بعد ذلك ، يمكنك البدء في إنشاء مجموعة البيانات التي سيتم استخدامها لتدريب النموذج واختباره. لفهم كيفية عمله وما هو قادر عليه ، يمكنك أيضًا الذهاب إلى أبعد من ذلك وتدريبه باستخدام نوع مختلف من مجموعة البيانات.
ترميز سعيد!
اترك تعليق