اذهب إلى المحتوى

السؤال

نشر (معدل)

ألاحظ دوماً أنه يتم ضبط عدد ال hidden units على 128 في طبقات LSTM و GRU لماذا؟  أي num_units=128 ؟ أعلم أنها وحدات معالجة البيانات لكن إلى ماذا يشير عددها؟ 

تم التعديل في بواسطة عامر ابراهيم

Recommended Posts

  • 1
نشر

الكلام التالي ينطبق على عدد الوحدات في بقية أنواع الطبقات أيضاً مثل Dense وغيرها في كيراس وتنسرفلو..
num_units هو عدد يشير إلى ال "Learning capacity" أي قدرة الشبكة على التعلم وهي تعكس عدد ال "learned parameters" ضمن الطبقة أي عدد المعلمات التي سيتم تدريبها لمعالجة بياناتك. إن num_units يندرج تحت مفهوم ال Hyperparameters أي المعاملات العليا للنموذج، أي يجب أن تقوم بضبطها من خلال التجريب، أي ليس هناك قاعدة ثابتة لاختيار قيمتها لكن هناك نقاط يجب وضعها بعين الاعتبار عند تحديد قيمتها وهي:

  1. زيادة عددها يعطي الشبكة قدرة أكبر على التعلم من نماذج بيانات أكبر و أكثر تعقيداً (تعطي النموذج قدرة أكبر على التعلم من البيانات-يمكنك تخيل الأمر على أنه حجم ذاكرتها فكلما زاد حجمها زادت قدرتها على التعلم-). لكن زيادة عددها قد يجعل النموذج يتجه إلى حالة ال Oveffitting لذا يجب أن تكون حذراً وأن لتجعل حجمها يتناسب مع حجم المشكلة (عدد ال features للعينات وعدد العينات أي حجم الداتاسيت بشكل عام ومدى تعقيدها).
  2. تقليل عددها يجعل الشبكة أضعف وأقل قدرة على التعلم من البيانات. وبالتالي قد يتجه النموذج إلى حالة Underfitting.

لذا يجب الموازنة بين الأمرين السابقين أي عملية Trade-off بينهما.  أما بالنسبة للعدد 128 فهذا ليس رقماً ثابتاً كما أوضحت لك هو Hyperparameter لكن في كثير من الأحيان يكون ملائم. كما تجدر الإشارة إلى أن عدد ال num_units يفضل دوماً أن يتم أخذه من العلاقة 2 أس n أي: 16- 32-64-128-256-512.... لأن هذه الأرقام تسرع عمليات الحساب لأن المعالج يفضلها.
 

  • 1
نشر

بالاضافة لما شرحه @Ali Haidar Ahmad فإن عدد الطبقات و عدد الوحدات فيها يعتمد بصورة مباشرة على المدخلات و المجال الذي تريد تطبيق شبكة LSTM, GRU, RNN فيه. العدد الأمثل للوحدات hidden units هو أن تكون أقل من العدد المدخل، في حال كان لديك عدد كبير من المدخلات يمكن إستخدام عدد أكبر من hidden units و لكن في بعض الأحيان فقط 2 تكفى.
لاحظ شكل LSTM موضحة:
4wF27.png

هنا ترمز  num_units لعدد الوحدات الخفية في الشبكة، وهي تعني المدخل لكل خلية في الشبكة عبارة عن حجم الدفعة batch_size مضروب في عدد الوحدات num_units. العدد 128 ليس قيمة ثابتة، لكن بصورة عامة يمكن أن تبدأ من الطبقة الأولى و تضع فيها عدد وح\ات قريب من عدد المدخلات و يمكنك زيادة العدد و نقصانه تدريجياً حسب القيمة المطلوبة في الخرج.

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...