خطوات الاستخدام
الخطوة 1: فهم مكونات المعاملات في الطبقة المتصلة بالكامل. تتكون كل طبقة متصلة بالكامل من مصفوفة أوزان (weights) ومتجه تحيز (biases). عدد الأوزان = عدد مدخلات الطبقة × عدد خلايا الطبقة. عدد التحيزات = عدد خلايا الطبقة. وبالتالي، إجمالي معاملات الطبقة = (عدد المدخلات × عدد الخلايا) + عدد الخلايا.
الخطوة 2: حساب معاملات الطبقة الأولى. أدخل قيمة inputDim (عدد المدخلات) و neuronsPerLayer (عدد الخلايا في كل طبقة مخفية). معاملات الطبقة الأولى = (inputDim × neuronsPerLayer) + neuronsPerLayer. هذا يمثل الأوزان التي تربط المدخلات بأول طبقة مخفية بالإضافة إلى تحيزات كل خلية في تلك الطبقة.
الخطوة 3: حساب معاملات الطبقات المخفية الوسيطة. إذا كان عدد الطبقات المخفية (hiddenLayers) أكبر من 1، فكل طبقة مخفية تتلقى مدخلات من الطبقة السابقة التي تحتوي على neuronsPerLayer خلية. إذن معاملات كل طبقة مخفية إضافية = (neuronsPerLayer × neuronsPerLayer) + neuronsPerLayer. كرر هذا الحسبان لكل طبقة مخفية إضافية (أي hiddenLayers - 1 مرة).
الخطوة 4: حساب معاملات الطبقة الأخيرة (الخرج). طبقة الخرج تستقبل مدخلات من آخر طبقة مخفية (neuronsPerLayer خلية) وتنتج outputDim خلية. معاملات طبقة الخرج = (neuronsPerLayer × outputDim) + outputDim.
الخطوة 5: جمع جميع المعاملات. إجمالي معاملات الشبكة = معاملات الطبقة الأولى + مجموع معاملات الطبقات المخفية الوسيطة + معاملات طبقة الخرج. الناتج هو العدد الإجمالي للمعلمات القابلة للتعلم في الشبكة.
أمثلة محلولة
تطبيقات عملية على عدد معاملات الشبكة العصبية بخطوات الحل كاملة.
الحل
لحساب عدد المعاملات، نطبق الخطوات:
- الطبقة الأولى (input -> hidden1): number of parameters = (inputDim × neuronsPerLayer) + neuronsPerLayer = (784 × 128) + 128 = 100352 + 128 = 100480.
- الطبقة المخفية الثانية (hidden1 -> hidden2): نظرًا لأن الطبقة الثانية تتلقى مدخلات من الطبقة الأولى التي تحتوي على 128 خلية، فإن معاملاتها = (neuronsPerLayer × neuronsPerLayer) + neuronsPerLayer = (128 × 128) + 128 = 16384 + 128 = 16512.
- طبقة الخرج (hidden2 -> output): عدد الخلايا في آخر طبقة مخفية هو 128، وعدد المخرجات 10، إذن المعاملات = (neuronsPerLayer × outputDim) + outputDim = (128 × 10) + 10 = 1280 + 10 = 1290.
- المجموع الكلي = 100480 + 16512 + 1290 = 118282 معاملًا. (تنبيه تدقيق: كان هذا المثال يكتب الجداء 784 × 128 = 100480، والصواب 100352، لذا كان المجموع السابق 118410 مبالغًا فيه بمقدار 128).
وهذا العدد يمثل جميع الأوزان والتحيزات القابلة للتعلم في الشبكة. لاحظ أننا حسبنا تحيزات كل طبقة (الحدود الثابتة المضافة لكل خلية) والتي تظهر في كل حد من الحدود الثلاثة. هذه المعاملات تؤثر على حجم النموذج والذاكرة المطلوبة ووقت التدريب.
الحل
نقوم بالحساب خطوة بخطوة:
- الطبقة الأولى: (1000 × 512) + 512 = 512000 + 512 = 512512.
- الطبقة المخفية الثانية (من hidden1 إلى hidden2): (512 × 512) + 512 = 262144 + 512 = 262656.
- الطبقة المخفية الثالثة (من hidden2 إلى hidden3): (512 × 512) + 512 = 262656. (لاحظ أن عدد الخلايا ثابت في جميع الطبقات المخفية).
- طبقة الخرج (من hidden3 إلى output): (512 × 50) + 50 = 25600 + 50 = 25650.
- المجموع: 512512 + 262656 + 262656 + 25650 = 1,063,474 معاملًا.
هذا الرقم كبير نسبيًا ويوضح كيف يزيد عدد المعاملات بشكل تربيعي تقريبًا مع عدد الخلايا في الطبقات المخفية. إذا كان عدد الخلايا متغيرًا بين الطبقات، فيجب تعديل الحسابات وفقًا لذلك. هذه الحاسبة تفترض عدد خلايا ثابت لجميع الطبقات المخفية لتسهيل الحساب.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة عدد معاملات الشبكة العصبية.
مثال 1: MNIST 784/128/128/10 = 118,282 معاملًا (بعد تصحيح جداء المثال)
- بُعد الإدخال
- 784
- عدد الطبقات المخفية
- 2
- عدد العصبونات لكل طبقة
- 128
- بُعد الإخراج
- 10
مثال 2: شبكة أعمق 1000/512×3/50 = 1,063,474
- بُعد الإدخال
- 1,000
- عدد الطبقات المخفية
- 3
- عدد العصبونات لكل طبقة
- 512
- بُعد الإخراج
- 50
50/10×10/50: الأوزان 1,900 والتحيزات 150 → 2,050
- بُعد الإدخال
- 50
- عدد الطبقات المخفية
- 10
- عدد العصبونات لكل طبقة
- 10
- بُعد الإخراج
- 50
مضاعفة العرض 128 → 256: الطبقة الوسطى ×3.985 والمجموع 269,322
- بُعد الإدخال
- 784
- عدد الطبقات المخفية
- 2
- عدد العصبونات لكل طبقة
- 256
- بُعد الإخراج
- 10
الحد الادنى: عصبون واحد ومخرج واحد = 4 معاملات
- بُعد الإدخال
- 1
- عدد الطبقات المخفية
- 1
- عدد العصبونات لكل طبقة
- 1
- بُعد الإخراج
- 1