أقسام الموقع: تعلم الآلةمبادئ عامة

انشاء شبكة عصبية اصطناعية بسيطة Artificial Neural Network, الجزء الأول

0- تمهيد

لدينا بعض المعلومات عن أزهار موجودة في الحديقة

كان الباحث يسجل (طول ساق الزهرة) و(عرض ساق الزهرة) و (لون الزهرة)

حيث لون الزهرة إما (أحمر) أو (أزرق)

وكان قد جمع هذه المعلومات عن 9 أزهار ووضعها في جدول, ولكنه نسي أن يكتب (لون الزهرة) التاسعة , فكان الجدول كهذا ..

من خلال الشبكة العصبونية الاصطناعية , سيتعلم البرنامج من معلومات الازهار الثمانية ليتنبئ لنا بلون الزهرة التاسعة .

وسنستخدم لغة بايثون بكتابة الشبكة العصبية مع شرح المبادئ الاساسية للشبكة العصبية .

1- شكل الشبكة العصبية Neural Network

حيث أن في الدائرة 1 والدائرة 2 , يكون مكان إدخال كل من قيمة طول ساق الزهرة وعرض ساق الزهرة

أما في الدائرة العلوية فينتج لنا رقم يتراوح بين 0 و 1 , وهو يدل على احتمال لون الزهرة (مثلاً: 0.8)

حيث ان الرقم كل ماكان اقرب الى 0 هذا يعني ان الشبكة العصبونية الاصطناعية تتنبئ ان الزهرة لونها أزرق

وكل ماكان الرقم اقرب إلى 1 فهذا يعني ان الزهرة لونها أحمر .

الان مهمتنا هي معرفة قيمة الرقم الاحتمالي في الدائرة العليا

وكيف نفعل ذلك ؟

أولاً ما لدينا هنا هو دالة رياضية Function تأخذ قيمتان كمدخل وتخرج قيمة واحدة .

دعونا نسمي القيمة المدخلة الأولى بـ m1

والقيمة المدخلة الثانية بـ m2

وأما هذان الخطان المستقيمان الواصلان بين المدخلين والمخرج نسميهما بـ الأوزان Weights أو بمراجع اخرى Parameters

وسنسميهما بـ w1 و w2 كاختصار .

ولكي تصل القيم المدخلة الى المخرج (دائرة الرقم الاحتمالي) يجب ان نزن القيمتان , وذلك عن طريق عملية ضرب بين كل قيمة مدخلة و الوزن الموصول بها

(m1) X (w1)

(m2) X (w2)

ثم نقوم بجمعهما معاً

(m1) X (w1) + (m2) X (w2)

ثم نقوم بجمع مايسمى بـمعامل الانحياز Bias

(m1) X (w1) + (m2) X (w2) + b

وببساطة شديدة, هو عبارة عن رقم ما يستخدم لمعالجة حالات عديدة ومعقدة من الشبكات العصبونية كما أن له دور في طريقة تعلم وتدرب الشبكة العصبونية

وسأشرحه لاحقاً أما الان فلا داعي ان تنشغل به 🙂

أما الان فنريد أن نجعل قيمة المعادلة السابقة بين الـ1 والـ0 وذلك لأنها تمثل (احتمال) Probability

وأفضل طريقة لذلك هو استخدام دالة سيغمويد (سيجمويد Sigmoid) وأحياناً قد تراها باسم (الدالة اللوجستية Logistic Function )

وهي دالة تقوم بتحويل أي قيمة رقمية داخلة إلى رقم ينتمي للمجال [0,1]

والان يكون شكل دالة شبكتنا العصبية الاصطناعية النهائي كالآتي  :

NN (m1, m2) = sigmoid( w1.m1 + w2.m2 + b)

حيث أعطينا اسم دالة شبكتنا العصبية الاسم NN

والان في الواقع لايزال لدينا الأوزان w1,w2 و الانحياز b مجاهيل لاتحمل قيم

كبداية نحن نريد أن نخرج بنتيجة ما, بأي توقع ما حتى ولو كان خاطئ وسنعالجه تدريجياً

ولذلك سنعطي المجاهيل تلك قيماً عشوائية ! نعم قيماً عشوائية

2- تجربة أولية

في الجدول الموجود ببداية الدرس, لنختر منه عينة ما لتجربتها في الدالة, ولتكن مثلاً العينة الثانية

حيث طول ساق الزهرة m1 يساوي 2

وعرض ساق الزهرة m2 يساوي 1

ولنختر للمجاهيل قيم عشوائية فمثلاً ليكون الوزن الاول

w1 = 0.5

والوزن الثاني

w2 = 0.2

والانحياز

b = 0.3

الدالة بعد التعويض :

NN ( 2, 1) = sigmoid ( 0.5 * 2 + 0.2 * 1 + 0.3 )

فتكون النتيجة

NN ( 2, 1) = sigmoid ( 0.5 * 2 + 0.2 * 1 + 0.3 )

NN ( 2, 1) = sigmoid ( 1.5 )

NN ( 2, 1) = 0.82

اذن القيمة الاحتمالية هي 0.82

وبما أنها أقرب للـ1

وبما أننا قلنا سابقاً أنه الرقم واحد يمثل اللون الأحمر

اذن الشبكة العصبية كبداية, تنبأت أن العينة الثانية هي لزهرة حمراء

وطبعاً اذا راجعنا الجدول نجد أن الجواب خاطئ و أن العينة الثانية هي لزهرة زرقاء !

اذا فكرنا للحظة نجد أن هذا الخطأ شيء منطقي ومتوقع باعتبار أننا لم ندرب شبكتنا العصبية بعد بأي معلومات سابقة!

فالشبكة العصبية -مثل باقي خوارزميات تعلم الالة- هي شبيهة بالطفل المولود حديثاً , تحتاج الى أن ندربها على عينات عديدة من المعلومات (نصوص أو صور أو فيديوهات أو أصوات أو أرقام أو …الخ) لكي تتعلم وتقوم بعمليات تنبؤ دقيقة 🙂

نجد أن الخطأ السابق كان لأننا عوضنا قيم غير مناسبة في التوصيلات بين العصبونات (الأوزان)

وأفضل طريقة لتعيين توصيلات (أوزان) مناسبة هي ان ندرب الشبكة العصبية على بعض البيانات التي نملكها بالفعل .

3- دالة التكلفة Cost Function

ببساطة , هي دالة تأخذ قيمتان وتخرج قيمة واحدة

القيمتان المدخلتان هما أولاً, النتيجة التي أخرجتها الشبكة العصبية

وثانياً, القيمة الحقيقية الفعلية للعينة (Data + Prediction)

وتستخدم لنقيس مدى الخطأ في نتيجة تنبؤ الشبكة العصبية .

أي أنه كلما كانت القيمة المخرجة من هذه الدالة أقل, كلما كانت نتيجة تنبؤ الشبكة العصبية صحيحة وقريبة من الواقع .

أي أننا نسعى لتكون قيمة الدالة أقل مايمكن .

ولكي نغير قيمة خرج هذه الدالة, علينا أن نغير قيمة إحدى مداخل الدالة

وبما أننا لانستطيع أن نغير قيمة العينات التي لدينا باعتبارها قيم تمثل الواقع الحقيقي والصحيح

اذن نسعى لتغيير قيمة تنبؤ شبكتنا العصبونية

Cost Function = (Data - Prediction)^2

أي أن دالة التكلفة تساوي, القيمة الحقيقية للعينة ناقص نتيجة تنبؤ الشبكة العصبونية ومن ثم نربّع الناتج (قوة 2) .

قبل أن نبدأ,, لنجرب أن نحسب قيمة دالة التكلفة حسب المثال الموجود في الفصل السابق ..

Cost Function = (0 - 0.82)^2 = 0.6724

حيث أن العينة المذكورة هي لزهرة حمراء (اللون الاحمر يمثل الرقم 0)

و دالة التكلفة تسمى أحياناً بـ دالة الخطأ Error Function وذلك لأنها تشير لمدى الخطأ في نتيجة الشبكة العصبية .

والان نعود .. لتغيير قيمة تنبؤ شبكتنا العصبونية الاصطناعية علينا تغيير التوصيلات بين العصبونات (الأوزان) او الانحياز Bias

نأخذ مثال آخر لشرح كيفية تعديل قيمة الانحياز b ..

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

NN2 () = b

وبالتالي ستكون دالة التكلفة (دالة الخطأ) لهذه الشبكة العصبية ..

ولتبسيط المثال أكثر لنفرض ان قيمة العينة الحقيقية تساوي 4

Cost Function = (Data - b)^2

Cost Function = (4 - b)^2

وقلنا سابقاً ان هدفنا في هذه المرحلة هو ان تكون قيمة دالة الخطأ/التكلفة أقل مايمكن

ومن النظر للدالة نستطيع ان نستنتج أنه للحصول على اقل قيمة لدالة الخطأ , علينا تعيين الانحياز للقيمة 4

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

اذا مثلنا هذه الدالة على مخطط بياني سينتج لنا شكل قطع مكافئParabola

نلاحظ أنه كلما ابتعدت قيمة الانحياز عن 4 , تزداد قيمة دالة الخطأ/التكلفة

اذن ماهي الطريقة المثلى لنعرف متى يجب ان نزيد او ننقص قيمة الانحياز ؟

الجواب: ميل دالة التكلفة/الخطأ ! Slope of Cost Function !

انتهى الجزء الأول

الجزء الثاني سيكون قريباً جداً

وفي الجزء الثالث سيتم تطبيق كل هذه المفاهيم النظرية باستخدام لغة بايثون

Firas Maan

آخر المنشورات

  • أخبار

برنامج DeepFake أونلاين لصناعة الفيديوهات المزيفة بدون تحميل

لم يمضي وقت كبير عندما قام أحد مستخدمي منصة reddit  يسمى ديب فيك Deep fake بنشر فيديوهات واقعية وذات جودة…

4 أشهر مضت
  • أخبار

“شمرا أكاديميا” محرك بحث لمشاريع التخرج والابحاث العلمية السورية لطلاب الجامعات والباحثين

"شمرا أكاديميا" هي خدمة يقدمها محرك البحث السوري الأول "شمرا" وتعتبر خدمة "شمرا أكاديميا" كمحرك بحث خاص بالمؤلفات العلمية والأكاديمية…

10 أشهر مضت
  • تعلم الآلة

[Scikit Learn] شرح عمل برنامج للتنبؤ بالقيم بخوارزمية Linear Regression

تعد خوارزمية المنحني الخطي/الانحدار الخطي Linear Regression من أشهر خوارزميات تعلم الالة وهي تدخل ضمن تصنيف التعلم بإشراف Supervised Learning…

11 شهر مضت
  • أخبار

“جوليا” لغة برمجة الذكاء الاصطناعي المنتظرة !

Follow my blog with Bloglovin "جوليا Julia" هي لغة برمجة عالية المستوى متعددة الاغراض , صممت في البداية لتوافق احتياجات…

11 شهر مضت
  • أخبار

برامج Deep Fake لانتاج المشاهد المفبركة بالذكاء الاصطناعي

لندن - نيويورك: «الشرق الأوسط» تصور مشهداً لغرفة فيها كنبة حمراء، ونبتة في حوض، ولمسة من الفنّ الخفيف الذي نراه…

11 شهر مضت
  • أخبار

أول ذكاء اصطناعي مصنوع من الحمض النووي

اليكم تفاصيل هذا الخبر العلماء يبتكرون أول ذكاء صناعي مصنوع من الحمض النووي وهذا هو مستقبله من الواضح أن مستقبل…

11 شهر مضت