الشبكات العصبية للأطفال: اشرح بأبسط ما يمكن

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




تحية للجميع! اليوم أريد أن أتحدث عن كيفية ترتيب الشبكات العصبية ، ولكن الأمر بسيط للغاية لدرجة أنه حتى المبتدئين الذين يتقنون أساسيات Python فقط يمكنهم فهمها.

ما هي الشبكات العصبية والذكاء الاصطناعي بشكل عام؟


في فلسفة الذكاء الاصطناعي ، هناك نوعان من الذكاء الاصطناعي - قوي وضعيف. تشير نظرية الذكاء الاصطناعي القوي إلى أن أجهزة الكمبيوتر ستكون قادرة على اكتساب القدرة على التفكير والوعي بأنفسهم كشخص منفصل (حسنًا ، شيء مثل ما حدث في ديترويت يصبح الإنسان). تشير نظرية الذكاء الاصطناعي الضعيف إلى أن مثل هذا الفكر لا يمكن أن يكون أو من الصعب جدًا بناءه ، وبينما يكون العلم قادرًا على إنشاء شبكات عصبية لا تكرر إلا جزئيًا عمل الشبكات العصبية للمخلوقات الحية. لكن الفلسفة لا تنطبق على العلم لأنه لا يمكن إثبات أي شيء هناك ، لذلك لن نركز على ذلك. تحتل الشبكات العصبية الضعيفة الآن مكانة مهيمنة في Data Science ويتم استخدامها على نطاق واسع: للتعرف على الصور المرئية ، والشراء الذكي للسلع ،حتى نظام الموازنة المفتوحة (OBS) للسيارة - لذا فإن البدء في تعلم الذكاء الاصطناعي أصبح الآن أكثر صلة بالموضوع.

ما هي الشبكات العصبية؟


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

المفاهيم الأساسية للشبكات العصبية


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

يسمى البرنامج الذي سنكتبه امتدادًا كبيرًا للشبكة العصبية.

قبل الشروع في وصفه ، دعنا نناقش ما تفعله الشبكات العصبية بشكل عام.

ماذا تفعل الشبكات العصبية ، إذا تم تبسيطها؟


إذا قمنا بتبسيط مفهوم الشبكات العصبية قليلاً ، فإن الشبكة العصبية التي يتم تدريسها وفقًا لمبدأ التعلم مع المعلم ، بعد التدريب على مبدأ "التحفيز - التفاعل" ، مع الإشارة إلى الإجابات الصحيحة ، يمكن أن تعمل مع الغرباءالبيانات. بمعنى آخر ، إذا اقترحت مجموعة معينة من الكلمات على الشبكة العصبية المدخلة (على سبيل المثال ، مجموعة من المراجعات حول البحث عن الأفلام ، إيجابية وسلبية ، بأي تنسيق ، على الأقل txt ، على الأقل json ، فإن السؤال موجود فقط في برنامج معالجة هذه البيانات). لإنشاء شبكة عصبية بنجاح ، ستحتاج إلى مجموعتين من البيانات: مجموعة اختبار يمكنك من خلالها تقييم أداء الشبكة العصبية التي تم إنشاؤها ومجموعة تدريب يتم فيها تصنيف البيانات بأنها إيجابية / سلبية لها (وهنا تنشأ مشكلة تصنيف البيانات الضخمة لأنها طويلة والاحتلال الكئيب). بعد تدريب الشبكة العصبية (التي يمكن أن تستغرق الكثير من الوقت وموارد الكمبيوتر ، اعتمادًا على أبعاد البيانات ومعالجتها ، والأكثر أهمية ، الخوارزميات المستخدمة) ، ستتمكن من المحاولةللتنبؤ ببعض الدقة بمراجعة إيجابية أو سلبية جاءت لمدخلاتها. لكن الشبكات العصبية (وكذلك الشخص الحقيقي) لديها نسبة معينة من الخطأ. تتمثل مهمة التحسين في جعلها بسيطة ، ولكن من المرجح ألا تذهب مسألة تقييم جودة الشبكات العصبية إلى أي مكان. على سبيل المثال ، يمنحك صورة هوت دوج وتقول بالتأكيد أنه هوت دوج. ولكن ماذا لو كانت الصورة ضبابية؟ اسود و ابيض؟ تم تصويره في الرؤية الضعيفة؟ هنا يمكنك بالفعل تأكيد درجة معينة فقط من الاحتمالية ، حتى إذا كنت قد أعددت أو أكلت الكثير من النقانق في حياتك.



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


حسنًا ، لنذهب. لن تكون هناك بيانات اختبار وتدريب في شبكتنا العصبية للألعاب ، وستحاول شبكتنا العصبية للألعاب العثور على نسبة النسبة بين أي بيانات.

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

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

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

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

1 * 2.4 = 2.4

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

t_target = 2.54
t_now = 2.40
e = t_target - t_now
//  ,   0.14

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

ولكن الآن ليس حول ذلك. بدون شك ، نحتاج إلى البدء في تغيير معامل الاقتران بخطوة ما ، ولكن ماذا؟ من الواضح أنك لا تحتاج إلى أن تكون كبيرًا جدًا ، وإلا فإن معامل الاقتران الخاص بنا سيصبح غير دقيق وليس صغيرًا جدًا ، وإلا سيتعين علينا تدريب الشبكة العصبية لفترة طويلة إلى حد ما. لا يوجد خيار صحيح 100٪ للعثور على هذه الخطوة ، غالبًا ما يتم تحديد هذه المعلمات في شبكة عصبية حقيقية بشكل أكثر سهولة من تلك القائمة على أساس صيغة أو خوارزمية (على الرغم من أن هذا ممكن أيضًا). الآن يمكننا تحديد قيمة خطوتنا عشوائيًا (في لغة الشبكات العصبية ، تسمى خطوتنا learning_rate) ، على سبيل المثال ، ستعمل القيمة 0.05 بالشكل الأمثل. بالإضافة إلى ذلك ، تحتاج إلى الاتفاق على عدد المرات التي ستحدث فيها المسافة البادئة في معدل التعلم .. سيطلق على عدد هذه المسافات البادئة عهود ، كما هو الحال في الشبكات العصبية البالغة. الآن ، مسلحًا بكل هذه المعرفة ، يمكنك محاولة كتابة برنامج Python صغير يقوم بتشغيل برنامج الشبكة العصبية الخاص بنا.

import random

#    Python  random,        

inches = 40  #    40    101, 6 
centimetre = 101.6

#  ,        , learning rate  

def kid_neuro(epoch, lr, accur):
    W_coef = random.uniform(0, 2)  #     
    print("    : ", W_coef)
    for i in range(epoch):  #    
        Error = centimetre - (inches * W_coef)
        print("  ", Error)  #      
        if Error > 0:
            W_coef += lr  #    ,    

        if Error < 0:
            W_coef -= lr  #   ,    

        if Error < accur:
            print("  ", W_coef)
            return  #  ,      

epoch = int(input("epoch: "))  #      ""
lr = float(input("enter learning rate: "))  #   
accur = float(input("enter accurancy:  "))  #   ,     ,         

kid_neuro(epoch, lr, accur)  #    -

أترك القارئ لمحاولة تشغيل الشبكة العصبية لهذا الطفل بمعلمات مختلفة بمفرده. اتضح بشكل جيد في العصر = 100- ، معدل التعلم = 0.01 ، الدقة = 0.1.

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

باختصار ، هذه المفاهيم الأساسية:

  • W — . - , . — , ,
  • lr — learning rate, .
  • epoch ,

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

بعض الروابط المفيدة التي يمكنك الذهاب إليها إذا كنت ترغب في متابعة التعلم عن الشبكات العصبية:


All Articles