خطوات الاستخدام
أولاً: حدد نوع الخلية (LSTM أو GRU). يختلف عدد المعاملات بينهما بسبب اختلاف بنية البوابات. في LSTM توجد 4 بوابات (الإدخال، النسيان، الخلية، الإخراج)، بينما في GRU توجد 3 بوابات (إعادة التعيين، التحديث، والإخراج المخفي الجديد).
ثانياً: أدخل عدد ميزات الإدخال (inputSize)، وهو بُعد المتجه الذي يمثل كل عنصر في السلسلة الزمنية. مثلاً إذا كنت تتعامل مع كلمات ممثلة بمتجهات 100 بعد، فالمدخل 100.
ثالثاً: أدخل عدد الوحدات المخفية (hiddenSize)، وهو عدد الخلايا العصبية في الطبقة المخفية. يمثل هذا سعة الذاكرة للنموذج. كلما زاد hiddenSize زادت قدرة النموذج على تعلم أنماط معقدة، لكنه يزيد من عدد المعاملات ويحتاج إلى بيانات أكثر.
رابعاً: يحسب عدد المعاملات باستخدام الصيغ التالية: • لـ LSTM: 4 × (inputSize × hiddenSize + hiddenSize^2 + hiddenSize) + (عدد التحيزات: 4 × hiddenSize) التبسيط: 4 × (inputSize × hiddenSize + hiddenSize^2 + 2 × hiddenSize) • لـ GRU: 3 × (inputSize × hiddenSize + hiddenSize^2 + 2 × hiddenSize) لاحظ أنه لا توجد بوابات إضافية للخلية كما في LSTM.
خامساً: الناتج يعطيك عدد المعاملات القابلة للتدريب (weights + biases). هذه المعاملات تمثل الذاكرة والقدرة على التعلم. يساعدك هذا الرقم في تقدير حجم النموذج وحجم الذاكرة المطلوبة للتدريب.
أمثلة محلولة
تطبيقات عملية على معاملات خلية RNN/LSTM بخطوات الحل كاملة.
الحل
نستخدم صيغة LSTM:
inputSize = 300, hiddenSize = 512
عدد المعاملات = 4 * (inputSize * hiddenSize + hiddenSize^2 + 2 * hiddenSize)
= 4 * (300*512 + 512^2 + 2*512)
= 4 * (153600 + 262144 + 1024)
= 4 * 416768 = 1,667,072 معاملاً.
هذا الرقم يعطينا فكرة عن حجم النموذج: حوالي 1.67 مليون معامل. مع هذه الكثافة، يحتاج النموذج إلى بيانات كبيرة (ملايين الجمل) لتدريبه دون الإفراط في التجهيز. لو استخدمنا GRU بدلاً من LSTM، لكان العدد:
3 * (153600 + 262144 + 1024) = 3 * 416768 = 1,250,304 معاملاً، أي أقل بحوالي 25%.
الحل
لـ GRU:
inputSize = 40, hiddenSize = 256
عدد المعاملات = 3 * (40*256 + 256^2 + 2*256)
= 3 * (10240 + 65536 + 512)
= 3 * 76288 = 228,864 معاملاً.
لـ LSTM:
عدد المعاملات = 4 * 76288 = 305,152 معاملاً.
الفرق حوالي 76,288 معاملاً. هذا الفرق قد يكون مهماً في البيئات محدودة الموارد (مثل الهواتف المحمولة). ومع ذلك، قد يعطي LSTM أداءً أفضل في بعض المهام الصوتية بسبب قدرته على التحكم في تدفق المعلومات بشكل أكثر دقة.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة معاملات خلية RNN/LSTM.
مثال 1: LSTM بخلايا 300 و512 = 1,667,072 معلمًا
- حجم الإدخال
- 300
- حجم الحالة المخفية
- 512
- نوع الخلية
- lstm
مثال 1 مع GRU: 1,250,304 أي أقل بربع المعاملات
- حجم الإدخال
- 300
- حجم الحالة المخفية
- 512
- نوع الخلية
- gru
مثال 2: GRU بـ 40 و256 = 228,864 معلمًا
- حجم الإدخال
- 40
- حجم الحالة المخفية
- 256
- نوع الخلية
- gru
مثال 2 مع LSTM: 305,152 أي فرق 76,288 معلمًا
- حجم الإدخال
- 40
- حجم الحالة المخفية
- 256
- نوع الخلية
- lstm
50×50 مع LSTM: 20,400 لا 20,200 (التحيزات مفقودة)
- حجم الإدخال
- 50
- حجم الحالة المخفية
- 50
- نوع الخلية
- lstm
خلية صغيرة 10×10 مع GRU: 660 معلمًا
- حجم الإدخال
- 10
- حجم الحالة المخفية
- 10
- نوع الخلية
- gru