Residual Networks (ResNet)
تضيف الشبكة المتبقية (ResNet) مدخل كل كتلة إلى مخرجها عبر وصلة تخطٍّ، ما يتيح تدريب شبكات عميقة جدًا. وتغطي الكتل والمتغيرات، مع أمثلة برمجية.
الشبكة المتبقية (ResNet) هي شبكة عصبية التفافية (CNN) عميقة مبنية من كتل متبقية، تضيف فيها وصلة تخطٍ دخل كل كتلة إلى خرجها. لذلك لا تتعلم كل كتلة إلا تصحيحًا لمدخلها، ما يتيح تدريب شبكات من 50 أو 152 أو أكثر من 1,000 طبقة بموثوقية. قدّم Kaiming He وXiangyu Zhang وShaoqing Ren وJian Sun من Microsoft Research شبكة ResNet في ورقة عام 2015 التعلم المتبقي العميق للتعرّف على الصور، وفاز تجميع من الشبكات المتبقية في مهمة التصنيف ضمن ILSVRC 2015، محققًا خطأً قدره 3.57% ضمن أفضل خمسة على ImageNet. ومنذ ذلك الحين، أصبحت الوصلات المتبقية جزءًا قياسيًا من معظم البنى العميقة، بما فيها المحوّلات وكواشف الكائنات الآنية.
مشكلة التدهور#
قبل ResNet، كانت إضافة طبقات إلى رصّة عادية من الطبقات الالتفافية تؤدي في نهاية المطاف إلى نتائج أسوأ. وأظهر مؤلفو ResNet أن شبكة عادية من 56 طبقة حققت خطأ تدريب أعلى من شبكة من 20 طبقة، لذا لم يكن فرط التكيّف تفسيرًا لهذا التراجع. كان بإمكان الشبكة الأعمق محاكاة الشبكة الضحلة عبر ضبط طبقاتها الإضافية على دالة الهوية، لكن الانحدار المتدرج لم يصل إلى هذا الحل. وأطلق المؤلفون على ذلك اسم مشكلة التدهور. وكانت مشكلة تلاشي التدرج قد عولجت إلى حد كبير من قبل من خلال تهيئة الأوزان بعد التطبيع وتطبيع الدفعات، لذا تقاربت الشبكات العادية العميقة، لكنها لم تصل إلا إلى حلول أسوأ.
آلية عمل الكتل المتبقية#
تحسب الكتلة المتبقية y = F(x) + x، حيث x هو دخل الكتلة وF رصّة صغيرة من الطبقات، تتكون عادةً من طبقتين أو ثلاث طبقات التفافية مع تطبيع الدفعات وReLU. إذا كانت أفضل دالة تحويل للكتلة قريبة من دالة الهوية، فلا تحتاج الطبقات إلا إلى دفع F نحو الصفر، وهو أسهل بكثير من تعلم دالة الهوية من البداية. كما توفر وصلة التخطي مسارًا مباشرًا لـالتدرجات للانتشار عكسيًا عبر كل كتلة. ولا تضيف وصلات الهوية أي معلمات، وتكاد لا تضيف أي حسابات. وعندما تغير الكتلة عدد القنوات أو تخفض الأبعاد بخطوة مقدارها 2، لا تعود أبعاد x مطابقة لأبعاد F(x)، وحينها تسقط طبقة التفاف 1×1 وصلة التخطي على الأبعاد الجديدة.
ترص ResNet-18 وResNet-34 كتلتي الالتفاف الأساسيتين. أما ResNet-50 وResNet-101 وResNet-152 فتستخدم كتلة عنق الزجاجة المؤلفة من ثلاث طبقات التفافية: تقلل طبقة التفاف 1×1 عدد القنوات، ثم تعالجها طبقة التفاف 3×3، ثم تعيد طبقة التفاف 1×1 ثانية عدد القنوات إلى حالته الأصلية، ما يجعل النماذج العميقة ميسورة التكلفة. وتضم ResNet-50 نحو 25.6 مليون معلمة. كما درّبت الورقة الأصلية شبكة من 1,202 طبقة على CIFAR-10 لتحقق خطأ تدريب يقل عن 0.1%، لكن خطأ اختبارها البالغ 7.93% كان أسوأ من خطأ شبكة من 110 طبقات البالغ 6.43%، وهو فارق عزاه المؤلفون إلى فرط التكيّف على مجموعة البيانات الصغيرة.
متغيرات ResNet#
- ResNet ذات التفعيل المسبق: نقلت دراسة متابعة عام 2016 للمؤلفين أنفسهم تطبيع الدفعات وReLU إلى ما قبل كل طبقة التفافية، تاركةً مسار وصلة التخطي دالة هوية خالصة، ودرّبت شبكة من 1,001 طبقة على CIFAR-10.
- ResNeXt: تقسّم كل كتلة عنق زجاجة إلى العديد من المسارات المتوازية ضيقة العرض، ويُسمى عددها الكاردينالية، ما يرفع الدقة مع ثبات التكلفة الحسابية.
- Wide ResNet: تستخدم عددًا أقل من الكتل الأعرض، مبيّنةً أن العرض يمكن أن يحل محل جزء من العمق.
- إصدارات ResNet المحدّثة: حدّثت ConvNeXt (2022) تصميم ResNet باستخدام نوى أكبر وتطبيع الطبقات وتنشيطات GELU لمنافسة محوّلات الرؤية.
استخدام ResNet مدرّبة مسبقًا#
لا تزال شبكات ResNet المدرّبة مسبقًا خطوطَ أساسٍ شائعةً وأعمدةً فقريّةً لـالتعلّم بالنقل. تأتي نماذج ResNet في torchvision مزوّدةً بأوزان ImageNet وإعدادات المعالجة المسبقة المتوافقة معها، لذا لا يتطلب تصنيف صورة سوى بضعة أسطر:
import urllib.request
import torch
from torchvision.io import decode_image
from torchvision.models import ResNet50_Weights, resnet50
# Load ResNet-50 with ImageNet weights and its matching preprocessing
weights = ResNet50_Weights.DEFAULT
model = resnet50(weights=weights).eval()
preprocess = weights.transforms()
# Download and decode a sample image
data = urllib.request.urlopen("https://ultralytics.com/images/bus.jpg").read()
image = decode_image(torch.frombuffer(bytearray(data), dtype=torch.uint8))
# Classify the image and report the most likely ImageNet class
with torch.no_grad():
probs = model(preprocess(image).unsqueeze(0)).softmax(dim=1)
score, index = probs.max(dim=1)
print(f"{weights.meta['categories'][index.item()]}: {score.item():.2f}")يطبع ذلك minibus: 0.25، وهي أقرب فئة من فئات ImageNet الألف إلى حافلة المدينة في الصورة. ولمهمة مخصصة، تتيح إعادة وضع الطبقة المتصلة بالكامل النهائية والضبط الدقيق على تسميات جديدة إعادة استخدام السمات التي تعلمتها المراحل المتبقية من ImageNet.
ResNet مقارنةً بالبنى ذات الصلة#
- الشبكات العادية مثل VGG: ترص VGG طبقات التفاف 3×3 من دون وصلات تخطٍ، ويبلغ أقصى عمق لها 19 طبقة أوزان. أما ResNet-152 فأعمق بثماني مرات وأقل تعقيدًا من VGG-19.
- شبكات Highway: طُوّرت بالتزامن مع ResNet، وتضيف بوابات متعلّمة يمكنها إغلاق وصلة التخطي. أما وصلات الهوية في ResNet فلا تُغلق مطلقًا ولا تضيف أي معلمات.
- DenseNet: تدمج مخارج جميع الطبقات السابقة في الكتلة بدلًا من إضافة وصلة تخطٍ واحدة، ما يعيد استخدام السمات على حساب زيادة عدد القنوات.
- U-Net: تنقل وصلات التخطي فيها خرائط سمات المرمّز إلى المفكّك وتدمجها هناك، واصلةً بين مراحل متباعدة بدلًا من الالتفاف حول كتل منفردة.
- محوّلات الرؤية (ViT): تستبدل الطبقات الالتفافية بالانتباه الذاتي، لكنها تحتفظ بالوصلات المتبقية حول كل طبقة فرعية للانتباه والتغذية الأمامية، كما تفعل جميع المحوّلات.
الوصلات المتبقية في النماذج الحديثة#
استمرت فكرة البقايا بعد أن تجاوزت معماريات ResNet المحددة. تضيف كل طبقة في نموذج لغوي كبير (LLM) مخرجات الانتباه والتغذية الأمامية إلى تيار متبقٍ متراكم، وتبني معظم كواشف CNN أعمدتها الفقرية من كتل متبقية. في YOLO26، تُبنى كتل C3k2 من وحدات عنق الزجاجة التي تعيد x + F(x) كلما تطابق عدد قنوات الإدخال والإخراج، كما تتضمن حزمة Ultralytics تهيئات من RT-DETR التابعة لـBaidu بأعمدة فقرية ResNet-50 وResNet-101. فازت ورقة ResNet بجائزة أفضل ورقة في CVPR 2016، وصنّفها تحليل نشرته Nature عام 2025 الورقة الأكثر استشهادًا في القرن الحادي والعشرين.










