الشبكات العصبية: دوال التفعيل

لقد رأيتم في التمرين السابق أن إضافة طبقات مخفية إلى شبكتنا لم تكن كافية لتمثيل اللاخطية. فالعمليات الخطية التي تُجرى على عمليات خطية تظل خطية.

كيف يمكن تهيئة شبكة عصبية لتعلم العلاقات غير الخطية بين القيم؟ نحتاج إلى طريقة لإدخال عمليات رياضية غير خطية في النموذج.

إذا بدا هذا مألوفًا بعض الشيء، فذلك لأننا طبقنا بالفعل عمليات رياضية غير خطية على مخرجات نموذج خطي في وقت سابق من الدورة. في وحدة الانحدار اللوجستي ، قمنا بتعديل نموذج انحدار خطي لإخراج قيمة متصلة من 0 إلى 1 (تمثل احتمالًا) عن طريق تمرير مخرجات النموذج عبر دالة سيجمويد .

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

جرّب استعراض حسابات كل عقدة بالنقر على زر >| (على يمين زر التشغيل). راجع العمليات الحسابية المستخدمة لحساب قيمة كل عقدة في لوحة "الحسابات" أسفل الرسم البياني. لاحظ أن ناتج كل عقدة هو الآن تحويل سيجمويد للتركيبة الخطية للعقد في الطبقة السابقة، وأن قيم الناتج محصورة بين 0 و1.

هنا، تعمل الدالة السينية كدالة تنشيط للشبكة العصبية، وهي تحويل غير خطي لقيمة خرج العصبون قبل تمرير القيمة كمدخل لحسابات الطبقة التالية من الشبكة العصبية.

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

وظائف التنشيط الشائعة

ثلاث دوال رياضية شائعة الاستخدام كدوال تنشيط هي: sigmoid و tanh و ReLU.

تقوم دالة سيجمويد (المذكورة أعلاه) بإجراء التحويل التالي على المدخل $x$، مما ينتج عنه قيمة خرج تتراوح بين 0 و 1:

\[F(x)=\frac{1} {1+e^{-x}}\]

إليكم رسم بياني لهذه الدالة:

الشكل 4. رسم بياني للدالة السينية: منحنى على شكل حرف S يقترب بشكل مقارب من المحور السيني عندما يقترب x من سالب ما لا نهاية  و1 عندما يقترب x من ما لا نهاية.
الشكل 4. رسم بياني للدالة السينية.

تقوم دالة tanh (اختصارًا لـ "الظل الزائدي") بتحويل المدخل $x$ لإنتاج قيمة خرج تتراوح بين -1 و 1:

\[F(x)=tanh(x)\]

إليكم رسم بياني لهذه الدالة:

الشكل 5. رسم بياني لدالة الظل الزائدي: منحنى على شكل حرف S أكثر انحدارًا بقليل من دالة سيجمويد، والتي تقترب تقاربًا  من -1 عندما تقترب x من سالب ما لا نهاية، ومن 1 عندما تقترب x من  ما لا نهاية.
الشكل 5. رسم بياني لدالة الظل الزائدي (tanh).

تقوم دالة التنشيط الخطية المعدلة (أو ReLU اختصارًا) بتحويل المخرجات باستخدام الخوارزمية التالية:

  • إذا كانت قيمة الإدخال $x$ أقل من 0، فقم بإرجاع 0.
  • إذا كانت قيمة الإدخال $x$ أكبر من أو تساوي 0، فقم بإرجاع قيمة الإدخال.

يمكن تمثيل دالة ReLU رياضياً باستخدام الدالة max():

$$F(x)=max(0,x)$$

إليكم رسم بياني لهذه الدالة:

الشكل 6. رسم بياني لدالة ReLU: خط أفقي على طول المحور السيني من سالب ما لا نهاية إلى 0، والذي يتحول إلى خط قطري يتجه لأعلى ولليمين بميل 1 (ص = س) من 0 إلى ما لا نهاية.
الشكل 6. رسم بياني لدالة ReLU.

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

وظائف التنشيط الأخرى

عملياً، يمكن لأي دالة رياضية أن تعمل كدالة تنشيط. لنفترض أن \(\sigma\) تمثل دالة التنشيط لدينا. تُعطى قيمة العقدة في الشبكة بالصيغة التالية:

$$\sigma(\boldsymbol w \cdot \boldsymbol x+b)$$

توفر Keras دعمًا جاهزًا للعديد من دوال التنشيط . ومع ذلك، ما زلنا نوصي بالبدء بدالة ReLU.

ملخص

يقدم الفيديو التالي ملخصًا لكل ما تعلمته حتى الآن حول كيفية بناء الشبكات العصبية:

يحتوي نموذجنا الآن على جميع المكونات القياسية لما يقصده الناس عادةً عندما يشيرون إلى الشبكة العصبية:

  • مجموعة من العقد، تشبه الخلايا العصبية، منظمة في طبقات.
  • مجموعة من الأوزان والانحيازات المُتعلمة التي تُمثل الروابط بين كل طبقة من طبقات الشبكة العصبية والطبقة التي تليها. قد تكون الطبقة التي تليها طبقة أخرى من طبقات الشبكة العصبية، أو نوعًا آخر من الطبقات.
  • دالة تنشيط تُحوّل مخرجات كل عقدة في الطبقة. قد تحتوي الطبقات المختلفة على دوال تنشيط مختلفة.

ملاحظة هامة: الشبكات العصبية ليست بالضرورة أفضل من تقاطع الميزات، ولكن الشبكات العصبية توفر بديلاً مرنًا يعمل بشكل جيد في كثير من الحالات.