الشبكات الالتفافية للرسوم البيانية (GCN)
إطار تمرير الرسائل، وGCNConv، وتجميع ميزات العُقد، وإعداد PyTorch Geometric
الشبكات الالتفافية للرسوم البيانية (GCN) درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
من CNNs إلى GCNs
تستفيد CNNs من بنية الشبكة المنتظمة في الصور. وتعمّم شبكة الالتفاف على الرسوم البيانية (GCN) مفهوم الالتفاف ليشمل الرسوم البيانية غير المنتظمة، مما يتيح لكل عقدة تحديث تمثيلها باستخدام معلومات من جيرانها. ويتيح ذلك التعامل مع البيانات التي لا تملك شبكة ثابتة.
تمرير الرسائل
تتبع GCNs إطار عمل تمرير الرسائل: ففي كل طبقة، (1) تجمع كل عقدة الرسائل من جيرانها، ثم (2) تدمجها، ثم (3) تحدّث تمثيلها الخاص. ويتيح تكديس الطبقات تدفّق المعلومات عبر الرسم البياني.
تجميع سمات الجيران
تتمثل العملية الأساسية في تجميع سمات الجيران. إذ تحسب طبقة GCN بسيطة متوسط متجهات سمات جيران العقدة (والعقدة نفسها)، ثم تطبّق تحويلًا خطيًا متعلَّمًا ودالة لاخطية.
# For each node v:
# h_v = activation( W * mean(features of v and its neighbors) )سبب تطبيع مصفوفة التجاور
كانت العقد ذات الدرجة العالية ستفرض سيطرتها إذا جمعنا الجيران بطريقة ساذجة. لذلك تستخدم GCN مصفوفة التجاور المُطبّعة لتوسيع الإسهامات أو تقليصها، والحفاظ على استقرار حجم تمثيلات العقد عبر العقد ذات الدرجات المختلفة.
صيغة التطبيع
يضيف التطبيع المتناظر حلقات ذاتية، ثم يوسّع القيم أو يقلّصها بحسب درجات العقد، ويُكتب D^(-1/2) (A + I) D^(-1/2). وتتيح إضافة مصفوفة الوحدة I للعقدة الاحتفاظ بسماتها الخاصة أثناء التجميع.
# A_hat = A + I (add self-loops)
# D_hat = degree matrix of A_hat
# A_norm = D_hat^(-1/2) * A_hat * D_hat^(-1/2)PyTorch Geometric
تُعدّ PyTorch Geometric (PyG) المكتبة القياسية لـ GNNs في PyTorch. وهي توفّر طبقات جاهزة مثل GCNConv التي تنفّذ التفاف تمرير الرسائل المُطبّع نيابةً عنكم.
import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConvطبقة GCNConv واحدة
تنشئ GCNConv(in_channels, out_channels) التفافًا بيانيًا واحدًا. وهي تستقبل مصفوفة سمات العقد x وedge_index (اتصال الرسم البياني بتنسيق COO)، ثم تعيد تمثيلات العقد المحدَّثة.
conv = GCNConv(in_channels=16, out_channels=32)
# x: [num_nodes, 16], edge_index: [2, num_edges]
h = conv(x, edge_index) # -> [num_nodes, 32]GCN من طبقتين
تكدّس GCN النموذجية طبقتين: تُسقط الطبقة الأولى السمات وتجمع سمات الجيران على بُعد قفزة واحدة، بينما تجمع الطبقة الثانية سمات الجيران على بُعد قفزتين، مما يمنح كل عقدة مجال استقبال من قفزتين.
class GCN(torch.nn.Module):
def __init__(self, in_dim, hid, out):
super().__init__()
self.conv1 = GCNConv(in_dim, hid)
self.conv2 = GCNConv(hid, out)
def forward(self, x, edge_index):
x = F.relu(self.conv1(x, edge_index))
x = F.dropout(x, training=self.training)
return self.conv2(x, edge_index)ينمو مجال الاستقبال مع العمق
توسّع كل طبقة من طبقات GCN مجال استقبال العقدة بمقدار قفزة واحدة. فترى طبقتان جوارًا على بُعد قفزتين، وترى ثلاث طبقات جوارًا على بُعد ثلاث قفزات، وهكذا. ويتيح العمق وصول المعلومات البعيدة إلى العقدة.
فرط التنعيم
لكن تكديس عدد كبير جدًا من الطبقات يسبب فرط التنعيم: إذ يجعل حساب متوسط الجيران المتكرر جميع تمثيلات العقد تتقارب إلى متجه واحد تقريبًا، مما يدمّر الفروق اللازمة للتصنيف. ولهذا تستخدم معظم GCNs طبقتين أو ثلاث طبقات فقط.
الحد من فرط التنعيم
تشمل تقنيات مكافحة فرط التنعيم الوصلات المتبقية/وصلات التخطي، وشبكات Jumping Knowledge التي تدمج مخرجات الطبقات، والاكتفاء ببساطة بشبكة ضحلة. وغالبًا ما تتفوق GCNs الضحلة على العميقة في المعايير القياسية.
اختبار سريع
اختبروا معرفتكم بـ GCN.
مراجعة
لقد تعلّمتم شبكات الالتفاف على الرسوم البيانية:
- تتبع GCNs إطار عمل تمرير الرسائل: تجميع سمات الجيران ثم التحديث
- تحافظ مصفوفة التجاور المُطبّعة مع الحلقات الذاتية على استقرار التمثيلات
- تنفّذ
GCNConvفي PyTorch Geometric التفافًا واحدًا - البنية الشائعة هي GCN من طبقتين
- يؤدي العمق الزائد إلى فرط التنعيم
الأسئلة الشائعة
هل درس «الشبكات الالتفافية للرسوم البيانية (GCN)» مجاني؟
نعم — نص درس «الشبكات الالتفافية للرسوم البيانية (GCN)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «الشبكات الالتفافية للرسوم البيانية (GCN)»؟
إطار تمرير الرسائل، وGCNConv، وتجميع ميزات العُقد، وإعداد PyTorch Geometric تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «الشبكات الالتفافية للرسوم البيانية (GCN)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- نظرية الرسوم البيانية للتعلم الآلي
- الشبكات الالتفافية للرسوم البيانية (GCN)
- تصنيف العُقد باستخدام GNN
- التنبؤ بالروابط وتصنيف الرسوم البيانية