كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون

كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون
5 (100%) 2 votes

 

دليل المبتدئين لفهم الأعمال الداخلية للتعمق في التعلم

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

تحتوي هذه المقالة على ما تعلمته ، ونأمل أن يكون مفيدًا لك أيضًا!

ما هي الشبكة العصبية؟
تقدم معظم النصوص التمهيدية إلى Neural Networks تشبيهات في الدماغ عند وصفها. من دون الخوض في نظائر الدماغ ، أجد أنه من الأسهل وصف الشبكات العصبية ببساطة كدالة رياضية تقوم بتعيين مدخلات معينة إلى المخرجات المرغوبة.

تتكون الشبكات العصبية من المكونات التالية

طبقة المدخلات ، x
كمية تعسفية من الطبقات المخفية
طبقة خرج ، ŷ
مجموعة من الأوزان والتحيزات بين كل طبقة ، W و b
اختيار وظيفة التنشيط لكل طبقة مخفية ، σ. في هذا البرنامج التعليمي ، سنستخدم وظيفة التنشيط السيني.
يوضح الرسم البياني أدناه بنية شبكة عصبية من طبقتين (لاحظ أن طبقة الإدخال عادة ما يتم استبعادها عند حساب عدد الطبقات في الشبكة العصبية)

 

01-460x423 كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون

إنشاء فئة الشبكات العصبية في بيثون أمر سهل.

 

تدريب الشبكة العصبية

إن الناتج عن شبكة عصبية بسيطة من طبقتين هو:

01-460x423 كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون

قد تلاحظ أنه في المعادلة أعلاه ، تكون الأوزان W و biases b هي المتغيرات الوحيدة التي تؤثر على المخرجات ŷ.

بطبيعة الحال ، تحدد القيم الصحيحة للأوزان والتحيزات قوة التنبؤات. وتعرف عملية ضبط الأوزان والتحيزات من البيانات المدخلة بتدريب الشبكة العصبية.

يتكون كل تكرار لعملية التدريب من الخطوات التالية:

حساب الناتج المتوقع ŷ ، والمعروفة باسم feedforward
تحديث الأوزان والتحيزات ، المعروفة باسم backpropagation
يوضح الرسم التتابعي أدناه العملية.

01-460x423 كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون

Feedforward
كما رأينا في الرسم البياني المتسلسل أعلاه ، فإن feedforward هو مجرد حساب بسيط وحساب شبكة عصبية أساسية ثنائية الطبقة ، فإن ناتج الشبكة العصبية هو:

01-460x423 كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون

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

 

 

ومع ذلك ، ما زلنا بحاجة إلى طريقة لتقييم “جودة” تنبؤاتنا (أي إلى أي مدى تنبؤاتنا)؟ وظيفة الخسارة تسمح لنا بفعل ذلك بالضبط.

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

01-460x423 كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون

أي أن خطأ مجموع المربعات هو ببساطة مجموع الفرق بين كل قيمة متوقعة والقيمة الفعلية. الفرق هو مربع حتى نقيس القيمة المطلقة للفرق.

هدفنا في التدريب هو العثور على أفضل مجموعة من الأوزان والتحيزات التي تقلل من وظيفة الخسارة.

العكسي
الآن بعد أن قاسنا خطأ تنبؤنا (الخسارة) ، نحتاج إلى إيجاد طريقة لنشر الخطأ مرة أخرى ، ولتحديث أوزاننا وتحيزاتنا.

من أجل معرفة الكمية المناسبة لضبط الأوزان والتحيزات من قبل ، نحتاج إلى معرفة مشتق من وظيفة الخسارة فيما يتعلق بالأوزان والتحيزات.

أذكر من حساب التفاضل والتكامل أن المشتق من وظيفة هو ببساطة انحدار الدالة.

01-460x423 كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون

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

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

01-460x423 كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون

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

والآن بعد أن أصبح لدينا ذلك ، دعنا نضيف الدالة backpropagation إلى شفرة python الخاصة بنا.

 

لفهم أعمق لتطبيق حساب التفاضل والتكامل وحكم السلسلة في backpropagation ، أوصي بشدة بهذا البرنامج التعليمي من قبل 3Blue1Brown.

ضع كل شيء معا
الآن وبعد أن أصبح لدينا رمز python الكامل لعمل التغذية التلقائية والعودة ، دعنا نطبق شبكتنا العصبية على مثال ونرى مدى نجاحه.

01-460x423 كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون

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

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

01-460x423 كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون

دعونا ننظر إلى التنبؤ النهائي (الإخراج) من الشبكة العصبية بعد 1500 تكرار.

01-460x423 كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون

لقد فعلناها! لقد قامت خوارزمياتنا المغذية والخلفية بتدريب الشبكة العصبية بنجاح وتراوحت التوقعات حول القيم الحقيقية.

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

ماذا بعد؟
لحسن حظنا ، رحلتنا لم تنته بعد. لا يزال هناك الكثير لتعلمه عن الشبكات العصبية والتعمق في التعلم. فمثلا:

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

افكار اخيرة
لقد تعلمت بالتأكيد كتابة الكثير من الشبكات العصبية الخاصة بي من الصفر.

على الرغم من أن مكتبات Deep Learning مثل TensorFlow و Keras تجعل من السهل إنشاء شبكات عميقة دون فهم الوظائف الداخلية للشبكة العصبية بشكل كامل ، إلا أنني أجد أنه من المفيد لعالم البيانات الطموح اكتساب فهم أعمق للشبكات العصبية.

لقد كان هذا التمرين استثمارًا كبيرًا في وقتي ، وآمل أن يكون مفيدًا لك أيضًا!

 

0 responses on "كيفية بناء الشبكة العصبية الخاصة بك من الصفر في بيثون"

Leave a Message

X