تقنية

عمق الشبكة وعرضها: كيف تعد المعاملات فعلًا؟

بنيتان تشتركان في مدخل ومخرج، إحداهما مخفية واحدة بعرض ستة والأخرى مخفيتان بعرض ثلاثة، ثم مقارنة معاملات وحدودها
مخطط من إعداد بحر العلوم؛ عد للأبعاد المعلنة دون إنشاء شبكة أو اختبار أداء.

عدد معاملات الشبكة يتحدد من أشكال طبقاتها وإعداداتها، لا من وصف «عميقة» أو «عريضة» وحده. في nn.Linear موثقة، شكل الأوزان out_features × in_features، ويضاف متجه إزاحة بطول out_features عند تفعيله. [1]

الخلاصة السريعة

اكتب عدد الوحدات في كل طبقة، وثبت احتساب الإزاحات؛ بعدها قارن عدد المعاملات دون تحويله إلى حكم على الدقة أو زمن التنفيذ.

  • لكل تحويل خطي موثق عدد أوزان يساوي حاصل ضرب حجم دخله وخرجه، وإزاحات بعدد المخارج إذا فعلت bias. [1]
  • مع مدخل 3 ومخرج 1، بنية 3→6→1 فيها 31 معاملًا بالإزاحات؛ بنية 3→3→3→1 فيها 28، رغم أن الثانية تحمل طبقة مخفية إضافية.
  • توسيع الطبقة المخفية من 6 إلى 12 يرفع العدد في مثالنا من 31 إلى 61؛ ليس 62 لأن إزاحة المخرج المفردة لا تتضاعف.
  • هذه أعداد لبنى كاملة الاتصال بإزاحات وتنشيطات بلا معاملات إضافية معلنة؛ لا تقيس أحجام ملفات أو ذاكرة مرورات أو جودة تعلم، ولم ننشئ شبكة أو ندربها.

ما الذي تعده في الطبقة؟

يحدد المصدر شكل مصفوفة الوزن والمتجه الاختياري للإزاحة. [1]

نقصد معاملات قابلة للتعلم في تحويلات كاملة الاتصال. نعلن مدخلًا من ثلاث قيم ومخرجًا من قيمة واحدة، ونفعل الإزاحات. التنشيط الذي نفترضه بين التحويلات لا يضيف معاملات قابلة للتعلم في هذا التمرين.

الخرج الوسيط في المرور ليس وزنًا جديدًا. إذا صار لدينا ست قيم مخفية، لا نضيفها كل مرة إلى عدد المعاملات لأنها تنشيطات نتجت من المدخل. وكذلك «العرض» هنا عدد الوحدات المخفية، لا عرض الصورة بالبكسل أو رقمًا يصلح لكل نوع طبقة.

هل طبقة إضافية تعني عددًا أكبر؟

البنية أ هي 3→6→1. التحويل الأول يحمل 3 × 6 = 18 وزنًا و 6 إزاحات، والثاني 6 × 1 = 6 أوزان وإزاحة واحدة. المجموع 24 وزنًا و 7 إزاحات، أي 31 معاملًا.

البنية ب هي 3→3→3→1. أوزانها 9 ثم 9 ثم 3، ومجموعها 21. إزاحاتها 3 ثم 3 ثم 1، ومجموعها 7. إذن العدد 28، أقل من أ بثلاثة رغم زيادة عدد التحويلات.

نسمي أ ذات طبقة مخفية واحدة وب ذات طبقتين مخفيتين؛ وإذا عددنا التحويلات الخطية بدل المخفية فالعدد اثنان وثلاثة. اختلاف اصطلاح العمق لا يغير جدول الأوزان، لكنه قد يربك مقارنة عنوانين غير معرفين.

البنية المعلنةالأوزانالإزاحاتالمجموع
3→6→124731
3→3→3→121728

ماذا يتضاعف عندما يتضاعف العرض؟

نوسع الطبقة المخفية في أ إلى 12، فتكون البنية 3→12→1. أوزانها 36 و 12، أي 48؛ إزاحاتها 12 و 1، أي 13. المجموع 61.

كل جزء اعتمد على عرض الطبقة المخفية تضاعف، لكن إزاحة المخرج بقيت واحدة. لذلك لا نكتب 31 × 2 = 62. يمكن جمع المثال في قاعدة خاصة بهذه البنية: خمسة أضعاف العرض زائد 1، ما دام المدخل 3 والمخرج 1 والإزاحات والتنشيط كما أعلنّا.

ولو عطلنا الإزاحات، يصبح عدد أ 24 وب 21. لا نقارن تقريرًا احتسبها بتقرير حذفها ثم ننسب الفرق كله إلى العمق. وإذا أضفنا معاملًا في تنشيط أو وحدة أخرى، نعده ضمن بنية جديدة بدل إخفائه في الاسم.

ما الذي لا تقوله هذه الأعداد؟

لم ننشئ طبقات أو نشغل مرورًا أو ندرب شبكة. عددنا أشكالًا اخترناها، لا معاملات عثرنا عليها في ملف نموذج. لذلك لا نقول إن ب أسرع أو أفضل لأن عددها أقل، أو إن أ تحفظ معلومات أكثر لمجرد أن عرضها أكبر.

حجم ملف محفوظ يعتمد أيضًا على تمثيل القيم وما يرافقها؛ وذاكرة التدريب تشمل أشياء غير المعاملات. لا نحول عددنا إلى بايتات أو زمن دون تعريف تلك الإعدادات وقياسها.

عند مراجعة وصف نموذج، اطلب تسلسل الأبعاد وخيار الإزاحة والوحدات الإضافية ومعنى العمق المستخدم. هذه التفاصيل تجعل الحساب قابلًا للمراجعة، وتترك سؤال صلاحية البنية للمهمة إلى تقييم فعلي.

المصادر ومتابعة القراءة

  1. PyTorch 2.8.0: nn.Linear parameter shapes (يفتح في نافذة جديدة)raw.githubusercontent.com

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.