علوم الذكاء الأصطناعي بدأت وانصبت منذ أول بدايتها عن كيف يمكن أن نحاكي ذلك العقل ، كيف يمكن أن تكون للأجهزه القدره على التمييز ،، كيف يمكن أن نصنع ذلك الجهاز الذي يفرق بين الماء والنار ..
هذه الأجهزه وبالرغم من سرعتها الفائقه وقدرتها على معالجه الملايين من البيانات في أجزاء من الثانيه لم تستطيع القيام بالكثير من الأمور التي يقوم بها الإنسان ، فمثلا أجلب طفل صغير في العاشره، وأعرض عليه مجموعه من الصور ، بكل بساطه سوف يعرف هذا الطفل صوره القط ، ويعرف صوره الشجره وغيرها .. هذه العمليه بسيطه ربما تكون معقده جدا جدا للجهاز وحتى الخارق Super-Computer أيضا !
من هنا بدأ العلماء بالتسائل وبالبحث ، كيف يمكن لهذا الأنسان القيام بتلك الأمور ، وهنا يكون العقل هو الجواب ، أي محاوله تقليد العقل ومحاكاته ،، لكن كلمه العقل هذه بالرغم من بساطتها الإ أن عقل الأنسان معقد جدا ، ولذلك كان على العلماء البحث أكثر ومحاوله ايجاد الأشياء التي يتكون منها العقل ،، ومن هنا كانت البدايه لدراسه الخليه العصبيه والتي هي أبسط Model موجود بالعقل ،، وجمع تلك الخلايا مع بعض تصبح لدينا شبكه من الخلايا ،، ومن هنا بدأت دراسه الشكبات العصبيه (لاحظ أننا نتحدث الأن عن الشبكات العصبيه الموجوده داخل الدماغ Biological Neural Network ) ..
من خلال دراسه تلك الخلايا العصبيه ، ومحاوله محاكاتها ، نستطيع بناء شبكه تعمل بنفس المبدأ ، وبالتالي نستطيع الحصول على ذلك الحاسوب الذكي القادر على التمييز .. ومن هنا بدأت الشكبات العصبيه (وأقصد هنا الإصطناعيه منها artificial neural network واختصارا ANN) .
*ملاحظه ،عندما يتم ذكر “الشبكه العصبيه” فالحديث في الغالب حول الإصطناعيه منها ANN – أغلب المراجع والكتب التي تتحدث حول الموضوع بهذا الشكل- ، وبالتالي دروسنا البسيطه لن تخالف المبدأ، وستكون على ذلك الأساس .. وعندنا نحدد بذكر الحيويه فنعني تلك التي توجد في رأسك 🙂
ما هي الشبكه العصبيه الحيويه Biological Neural Network
في أبسط الأشكال ، تتكون الشكبه من خلايا ، وتتكون الخلايا من عده أمور -بالطبع الحديث عنها بالتفصيل أمر خارج نطاق دروسنا السريعه- ، الصوره التاليه توضح لك الخليه العصبيه في أبسط الحالات :
هذه الخليه التي تشاهدها أعلاه ، تبدأ عملها عندما تستقبل تلك الأشاره signal التي تأتي من خليه أخرى ، وتستقبل الخليه العصبيه تلك الإشاره من خلال الdendrites -أعذرني أخي القارئ ، لن نترجم المصطلحات حفاظا على جوده الدروس- ،، وعندما تستقبل الخليه الإشاره فتقوم الخليه بتحديد هل تلك الإشاره تقع ضمن نطاق معين (الإشاره التي تستقبلها من نوع Analog والإشارات هنا تكون متفاوته) ، فاذا كانت الأشاره ضمن ذلك النطاق فإن الخليه تقوم بعمل fire بمعنى ان تقوم هذه الخليه أيضا بارسال اشاره الى بقيه الخلايا في الشبكه العصبيه ويكون مجرى الإرسال كما هو واضح في الصوره الAxon ، وترتبط الخلايا فيما بينها من الsynapses .
حل المشاكل باستخدام الشبكات العصبيه
لماذا كل هذا العناء ؟ لماذا نريد محاكاه هذه الشبكه العصبيه ؟ ما الفائده من عمليه المحاكاه ؟ ربما هذه أسئله تخطر على بالك ، أحد أهم الأسباب هو تحسين قدرتك على حل المشاكل ، وفهم الأمور التي يمكن عملها بANN والأمور التى لا يمكن عملها بها .. كمبرمج ، عليك أن تحدد متى تستخدم أساليب برمجيه بحته مثل Function أو OO ومتى تستخدم أساليب مخصصه لنوع معين من المشاكل ANN و Expert System ,, بالتالي تزيد من انتاجيتك بأقل قدر من الخسائر ،،
نكمل معا حول نوعيه المشاكل التي ينبغي عليك أن تستخدم فيها الشبكات العصبيه ونوعيه المشاكل التي ينبغي عليك أن تستخدم طرقاً أخرى ،،
عندما تكون لديك مهمه ما ، وكانت هناك خطوات واضحه لحل هذه المشكله (سواء توفر خوارزميه أم Flow Chart) فهذه المشكله ليست من ضمن الANN ، قم بحلها بأي طريقه أخرى ،، مثلا لديك مهمه تتطلب أن تكون البرنامج ثابت لا يتغير أبدا ،، مثلا للبحث أو الترتيب ، هنا بالطبع أيضا الANN غير مناسب بالمره وقد تؤدي الى نتائج غير مرغوبه بها ..
من الجهه الأخرى ، البرامج التي لا توجد بها خوارزميه واضحه لحلها تكون مؤشر جيد لاختيار الANN كوسيله للحل ، أيضا مسائل التعرف على الأنماط Pattern recognition كأن يعطيك نمط معين (صوره ، ملف صوتي ، أرقام) ، ويقوم برنامجك بالتعرف على هذا النمط (هل هذا النمط يقع ضمن الأنماط التي تم تدريبها عليه) ،، -الدرس المقبل بمشيئه الله سنبدأ مباشره بهذا النوع ونبدأ في كتابه برنامج بسيط للتعرف على الأنماط وذلك باستخدام الHopfield Nets- ، نوع أخر من المشاكل التي يقدم لها ANN حلا ممتازا ، هي مسائل الأمثله Optimization وهنا يمكن أن تختار الطريق الأمثل لأداء مهمه ما ، مثال على مشكله البائع الذي يريد زياره عده مدن ويريد أختيار أقصر طريق يحعله يتمم الزياره traveling salesman problem ، بالطبع يمكن حل هذه المشكله باستخدام الطرق التقليديه “لكنها تأخذ وقتا كبيرا ، ولن تخرج الحل الأمثل !” ،، أيضا نوع أخر من المسائل وهو قريب من التعرف على النمط وهو الClassification -اعذروني مره أخرى لا توجد ترجمه ، من يجتهد ويقدم لي ترجمه جيده؟- في هذا النوع من المسائل يكون لديك مجموعه من الأنماط (صور ، صوت ،الخ) وتريد تقسيمها الى مجموعات ، أي يذهب كل نمط الى القسم المناسب له ، مثال على ذلك نظام لعمل تقسيم للبريد وتقسيم البريد الى ضار (يحتوي على Spam) وغير ضار .. أيضا التوقع هو أحد المسائل المهمه التي تحل باستخدام ANN فتقوم الشبكه بأخذ مدخلات ، ثم تتوقع النتائج مثلا في الأسبوع القادم بناء على أمور عده .
لكن الشبكه العصبيه لا يوجد بها “تعليل الحل” ، اي لن تجدها تقول لك “حصلت على الحل الفلاني باستخدام ال وال وال” ، لا يوجد في الشبكات العصبيه مثل هذه خاصيه والتي هي من نطاق الأنظمه الخبيره حيث تتميز بReasoning .. بعض الأنظمه دمجت بين النوعين فيما يسمى Hybrid System وهنا سوف تقوم بعمليه التعليل هذه ..
Hello World Artificial neuron
ربما لا يوجد شيء بهذا الأسم الا هنا ، والغرض القاء نظره بسيطه حول تركيبه هذا المسى بخليه neuron ومعرفه أهم الأمور المرتبطه به .. أنظر للصوره التاليه ،
الصوره أعلاه أحتوت على مفهومين من أهم المفاهيم وهي الوزن weight والحد threshold (حاولت الترجمه هنا ، هناك من يطلق عليها عتبه ، لكني أفضل ترجمتي المتواضعه) . الوزن في الصوره السابقه هي 1.5 أما الحد هو 2.5 … فكره العمل سوف تكون بأن تأتي الأشاره ويتم ضربها مع الوزن ، ومن ثم تتم مقارنتها مع الحد ، فاذا تجازوت هذا الحد فإن الخليه تقوم بعمل fire أي ارسال الإشاره الى بقيه الخلايا …
لنفرض أن قيمه المدخل (الاشاره) كانت 1، نقوم بضربها مع الوزن والناتج هو 1.5 ، ثم نقارن هل القيمه أكبر من 2.5 ؟ الجواب للأسف لا ، بالتالي لن تقوم الخليه بعمل شيء .. من الملاحظ أيضا أن هذه الخليه لن تعمل fire أيضا مع الصفر .. (يعني لا تتعامل مع المدخلات المنطقيه Boolean value) .. ليست كل الخلايا تتعامل فقط بمدخلات منطقيه ،، لكن بقيه الدرس سنكمل على هذا الأساس لغرض التوضيح فقط وسوف تتضح المزيد من المفاهيم مع تقدم الدروس -ان شاء الله -.
الخليه بالأعلى ليست مفيده (أليس كذلك) ، وكذلك أي خليه أخرى منفصله بمفردها ، لكن في حاله تجمعت الخلايا مع بعض (شكبه خلايا) فالوضع يختلف بالتأكيد ، لنأخذ مثال على شبكه عصبيه لتمثيل بوابه AND ..
الأن أنظر للشبكه العصبيه البسيطه AND logical operation :
هنا لدينا خليتين بوزن 1 ، والحد 1.5 ،، كم برأيك تكون قيمه المدخل لكي تقوم هذه الخليه بعمل fire ؟؟ بتفكير بسيط نجد أنه يجب أن يكون المدخلين 1 ، بالتالي حتى يتكون لدي المجموع 2 ، وبالتالي تستطيع الخليه اطلاق fire الإشاره (نعم ، كلمه اطلاق هي الكلمه المناسبه بالتأكيد !) .
نشاهد شبكه لعمليه أو OR ، أولا مراجعه بسيطه للعمليه :
لاحظ الحد صغير ، بالتالي خليه واحده تكفى ، اذا هنا يجب أن تكون واحده على الأقل true بالقيمه 1 ..
ماذا عن عمليه الXOR ، مراجعه بسيطه :
شاهد الشبكه العصبيه ، وهي أعقد قليلا من الشكبتين السابقتين ، وبالتالي قد تحتاج لاستخدام طبقه Layer أخرى في المنتصف (تسمى Hidden Layer) ، وكل ما زادت الشبكه في التعقيد كل ما زاد عدد الـHidden Layer ..
مثلا لو كان المدخل 1 و 1 ، الطبقه في المنتصف سوف يصل لكل خليه منها 2 ، وبالتالي تقوم بعمل fire ، بالقيمه -1 و 1 ، ومجموعهم 0 ، بالتالي هو أقل من الحد 0.5 لذلك لن تكون هناك أطلاق أخر .. (وهو مطابق لعمليه 1 أكسور 1 = 0) ..
لكن في حاله كان المدخل 0 و 1 ، الطبقه في المنتصف سوف يصل لها المدخل 1 ، والخليه باليمين سوف تقوم بعمل fire لأنه 1 أكبر من 0.5 بينما الخليه الثانيه لن تقوم بذلك ، وهنا سوف يصل للطبقه الأخيره 1 ، وهو أعلى من 0.5 وبالتالي fire .
لاحظنا في الأمثله السابقه أن الأوزان هي التي تحدد لي المخرج من الشبكه ، السؤال هنا كيف يتم توليد هذه الأوزان وكيف يتم الحصول عليها ؟ هذا عن طريق ما يعرف بتدريب الشكبه العصبيه ، فتقوم بتدريبها على مجموعها من المدخلات وتقوم كل مره بتعديل الوزن (أول مره قد تكون الأوزان مولده عشوائيا) حتى تحصل على المخرج المطلوب tranning .. هناك نوعين من التدريب الأول Supervised training وهو باعطاء مجموعه مدخلات وما يقابلها من مخرج ويتم التدريب حتى تحصل على ذلك المخرج (التدريب نقصد به تعديل الأوزان) ، النوع الأخر Unsupervised training وهي تدريب وتعديل الأوزان من غير الحاجه لمخرجات معينه في البدايه .. وتقريبا النوع الاول هو الأشهر استخداما ، أيضا بعد التدريب يجب أن تتأكد validation من أن هل الأوزان مضبوطه أم تحتاج الشبكه الى تدريب أكثر ..
نظرة أكثر تفصيلاً عن ال ANN:
كما ذكرنا أن الخليه بمفردها لن تقوم بأي عمل مفيد ، لذلك نجمع العديد من الخلايا ونربطهم مع بعضهم البعض بحيث يشكلوا شبكه من الخلايا ، طريقه الربط بين هذه الخلايا أو الConnectivity of patterns فيه العديد من الأمور التي ينبغى لمصمم الشبكه أن يراعيها مثل طريقه توصيل الخلايا مع بعضهم وفي أي أتجاه وما هي طريقه تعلم الشبكه (طريقه تعديل الأوزان ) .
قبل قليل كنا قد وضعنا نموذج لشكبه تحل AND Gate ، وكنا قد وضعنا الأوزان مباشره في الخلايا ،، لكن في الحقيقه من أهم الأمور في الشبكات العصبيه هي القدره على التعلم بمعني أن الشبكه بنفسها تقوم بتعديل الأوزان على حسب الأمثله التي قدمت لهذه الشبكه ، فكل ما تدخل المزيد من الأمثله للشبكه كل ما تعلمت الشكبه وصارت تقوم بالمهمه بشكل أفضل ،، لذلك طريقه تعديل الأوزان من أهم الأمور التي ينبغي لمصمم الشبكه أن يضعها في الأعتبار وقت تصمميمه الشبكه ،،
في الحقيقه هناك الكثير من أنواع الشبكات العصبيه ، لكن جميعهم يتشاركوا في عده أمور هي :
1) تتكون من مجموعه من الخلايا البسيطه set of simple processing unit
2) طريقه التوصيل Patten of Connectivity
3) طريقه لارسال الأوزان عبر الشبكه propagate singal
4) طريقه لحساب المدخل للخليه Combining input signal
5) طريقه لحساب المخرج للخليه Calculating output signal
6) طريقه لتعديل الاوزان بالشبكه Learning Rule to Adapt weight
1) مجموعه من الخلايا البسيطه :
كما ذكرنا أن الخليه تقوم باستقبال جميع الاشارات التي تأتي اليها ، ومن ثم تقوم باخراج الاشاره للخلايا الأخرى عبر الشبكه ، والخلايا التي تبدأ العمل بها (التي تستقبل الاشاره من البيئه environment) تسمى خلايا الادخال input unit . والخلايا التي تخرج المخرج في النهايه الى البيئه environment تسمى خلايا الاخراج .. يمكن أن تكون البيئه التي تستقبل الخليه منها الاشاره عباره عن مدخلات من ملف عادي pre-processed ودائما ما نستخدم هذه الطريقه لأننا في الحقيقه نقوم بعمل محاكي للواقع ، ولكن يمكن أن تكون هذه المدخلات قادمه من محسسات أو حتى رادار يتصل بالنظام وفي تلك الحاله قد نحتاج معالجه هذه المدخلات لأنها قد تكون مشوشه أو غير دقيقه فنقوم باستخدام Fuzzy gate تقوم بالتعامل مع تلك المدخلات غير الدقيقه ،، حاليا بما أننا نقوم فقط بعمل محاكيات بسيطه ، سوف يكون الادخال للشبكه في ملف عادي ، والاخراج سوف يكون على الشاشه .
2) طريقه أو نمط التوصيل Pattern of Connectivity :
هناك الكثير من أنواع الشبكات Model of Nets وكل منهم لديه توصيل معين للخلايا ، وبشكل عام هناك أحد الmodel يكون فيه أن كل خليه بالشبكه تتصل بالخلايا الأخرى الموجوده بالشبكه ، نوع أخر من الModel وهو أن الخلايا تقسم لمستويات layer كل من خليه في المستوى الأول تتصل بجميع الخلايا في المستوي التالي فقط ، وكل خليه في المستوى التالي تتصل بجميع الخلايا في المستوى الذي يليه وهكذا .. نوع أخر من الModel وهو أن يسمح بخليه في مستوى لاحق بأن تتصل بخليه في مستوى سابق Backward ، نوع أخر من الModel وهو بأنه يسمح للخليه بأن تتصل مع نفسها ، وغيرهم من الأنواع الكثيره من الModel .
وتوصف طريقه التوصيل في مصفوفه من بعدين بحيث كل خانه تمثل الوزن من الخليه i الى الخليه j . وفي حال كان هناك أكثر من مستوى Layer يمكن أن تكون هناك أكثر من مصفوفه ،، وبشكل عام مصفوفه الأوزان هذه يمكن أن نقول أنها صلب الشبكات العصبيه حيث أنها تمثل الذاكره للشكبه ، فبدونها لن تعرف الشبكه كيف تخرج النتيجه الفلانيه وبوجودها تستطيع الشبكه أن تقوم بالمهمه التي صممت من أجلها ..
الصور التاليه ـ توضح أحد أشكال الشبكات بالاضافه الى شكل مصفوفه الأوزان للModel المعين .
شكل أخر Feed-Forward ولكن لم نكمل كل التوصيلات بين الخلايا ، ولكنها بنفس المفهوم :
3) طريقه لارسال الأوزان عبر الشبكه propagate signal :
وهنا نقصد متي نقوم بعمليه تعديل بتحديث الخليه (حساب المدخلات لها بالاضافه الى حساب المخرج للخليه) ، ومتى نرسل اشاره من خليه لأخرى ، في بعض الModel يتم أختيار الخلايا في التحديث بشكل عشوائي ، ولكن في البعض الأخر يجب تحديث مجموعه من الخلايا قبل مجموعه أخرى بمعنى أنه بشكل متسلسل ..
4) طريقه لحساب المدخل للخليه Combining input signal :
عاده يتم حساب المدخل للخليه عن طريق ضرب المدخلات في الأوزان ويتم جمع الناتج ليكون هو المدخل للخليه j ، انظر الشكل التالي :
الان نقوم بجمع حاص بضرب كل مدخل مع الوزن المقابل له بالمعادله التاليه :
نعوض الأن بالمعادله لكي نحصل على :
أو باستخدام تمثيل المتجهات vector notation :
بالضرب في :
وينتج 0.25 .
أغلب الأحيان يستخدم مدخل جديد يسمى الbais في الشبكه (ولا أدري لماذا؟ ) ويعطي الوزن 1 دائما ، المهم يتم حساب المدخلات في حال كان ال bais موجود بالمعادله التاليه :
نفس المعادله ولكن بدئا من 0 :
ويكون الوزن الأول w0 دائما 1 .
5) طريقه لحساب المخرج للخليه Calculating output signal
بعد أن تم حساب المدخل للخليه ، وحتى تمرر الخليه الناتج للخليه التي تليها او للبيئه (في حال كانت هي أخر خليه في الشبكه output unit) سنقوم بحساب المخرج للخليه وهو ما يعرف بالتنشيط Activation ، هناك عده طرق أقصد دوال تنشيط Activation Function منها ما يخرج مخرج يكون رقم real محصور بين 0 و 1 ، ومنها ما يكون فقط أما 1 أو 1 (متقطع Discrete) ، أو -1 و 1 ، وهناك الكثير من دوال التنشيط منها Identity function و Binary Threshold function و Sigmoid Function ، نأخذ نظره بسيطه على من هذه الدوال والتي مهتما تكون في استقبال المدخل الذي حسبناه سابقا ومن ثم تقوم باخراج النتيجه ..
الداله Identity لا تقوم بعمل شيء حقيقه ، فقط تأخذ المدخل للخليه وتجعله هو المخرج لهذه الخليه .. وتقريبا جميع خلايا الأدخال يمكن أعتبارها على أنها تستخدم هذه الداله ، حيث أنها تستقبل المدخلات (سواء من ملف أو محسسات خارجيه) وتقوم فقط بتمرريها الى الخلايا التاليه ،، على العموم أغلب الكتاب والمؤلفين لا يعتبروا أن الخلايا في طبقه الأدخال جزء من الشبكه ،، اضافه الى أن أغلب الModel لا تعتمد على دوال خطيه كهذه ..
الداله Binary Threshold function تقوم بجعل المخرج محصور في قيمتين فقط ، وذلك بالأعتماد على قيمه ما حيث ننظر للمدخل فاذا كان مثلا أكبر من ال فيكون 1 واذا كان أصغر فيكون 0 .
الداله الثالثه Sigmoid وهي تجعل المخرج محصور بين عده قيم في المدى من 1 الى 0 ، ومعادلتها بهذا الشكل :
6) طريقه لتعديل الاوزان بالشبكه Learning Rule to Adapt weight
هناك طريقتين للتعليم وهم التعليم بموجه أو دليل Supervised بمعنى تقديم المخرج مع كل مثال نقدمه للشبكه ، والنوع الأخر وهو بدون موجه Unsupervised ولن نقدم للشبكه أي مخرج لأي مثال ،،
التعليم من غير موجه Unsupervised يستخدم في الشبكات التي تقوم بعمل تصنيف Classification ، بحيث نقدم للشبكه عده أمثله ومن ثم تقوم الشبكه بمعرفه ما يميز هذه الأمثله وتقوم بتقسيمها الى مجموعات ، وستضع الأمثله المتشابهه مع بعضها البعض في مجموعه واحده ،، ومن الأمثله على تطبيقات هذا النوع من التدريب هو في الData Mining فقد نحتاج الى البحث في كميه ضخمه من النصوص ، وقد لا نعلم عن ماذا نبحث بالضبط ، فنستخدم هذا النوع من التدريب وسوف يقوم بتنصيف هذه النصوص أو البيانات الى أقسام ويضع البيانات أو النصوص المتشابهه في القسم المناسب لهم،، شبكه الSOM أو ما تعرف بكونين Kohonen NN تستخدم هذا النوع من التدريب .. أيضا خورازميه Hebb تستخدم للتعليم من غير موجه ، الصوره التاليه توضح كيفيه تدريب الشبكه باستخدام التعليم من غير موجه :
في التعليم باستخدام موجه Supervised سوف نقوم بتقديم المخرج المعين لكل مثال نقدمه للشبكه ، وبالتالي تتعلم الشبكه (تعدل الأوزان) عن طريق معرفه الفرق بين المخرج الحالي والمخرج الهدف target output ، ومن أشهر خوارزميات التعلم بموجه طريقه ال Bakpropgation ، أيضا طريقه Delta Rule . والطريقه الأولى في الحقيقه تستخدم نسخه معدله من طريقه Delta Rule ،، أيضا يمكن تعليم الشبكه بدون موجه باستخدام الخوارزميه الجينيه Genetic Algorithm أيضا طريقه الSimulating Annealing . الصوره التاليه توضح كيفيه تدريب الشبكه باستخدام التعليم موجه :
Delta Rule
سنتطرق الأن لأشهر طريقه لتعديل الأوزان في النوع التعليم بموجه و هي Delta Rule وفكرتها تكون عن طريق معرفه الفرق بين المخرج الحالي للشبكه مع المخرج الأصلي (الذي من المفترض أن تكون الشبكه قد أخرجته) ومن ثم تقوم بضرب هذا الفرق في رقم يمثل لي معدل التعليم Learning rate بالاضافه الى ضربه مع المدخل لهذه الخليه ومن ثم نجمع الناتج للوزن القديم ، وهكذا يكون الوزن قد تم تعديله .. المعادله التاليه هي للتعليم باستخدام Delta Rule :
حيث o هو المخرج الحالي ، و t هو المخرج المستهدف أو الأصلي target .
mu هي معدل التعليم وهو رقم حقيقي عاده يكون 0.1 ، beta هي مقدر الخطأ الناتج من المعادله السابقه ، وx هو المدخل لهذه الخليه ،
نقوم بجمع الوزن القديم مع التعديل الجديد وبالتالى يتغير الوزن للخليه .
ملاحظه هذه الطرق لها عده مسميات منها :
Adaline Rule
Widrow-Hoff Rule
Least Mean Squares (LMS) Rule
Hebb Rule
تستخدم طريقه Hebb في تعليم الشبكات التي تستخدم التعليم من غير موجه ، ويتم تعديل الوزن عن طريق المعادله :
حيث x هو المدخل ، و o هو المخرج الحالي ، و mu هو معامل التعليم learning rate . ومن ثم يتم جمع هذا الناتج مع الوزن القديم :
حساب الخطأ في الشبكه العصبيه :
أثناء عملية تدريب الشبكه ، يجب أن نختبر الشبكه فاذا أخرجت القيم الصحيحه مباشره لجميع المدخلات فهذا يعني أن الأوزان الحاليه هي الأوزان المثاليه ولا تحتاج لتغيير ، لكن في أغلب الأحيان القيم المخرجه لن تكون بالضبط كما هي القيم المستهدفه target output (أتحدث عن التدريب بموجه) ولكن تكون هناك نسبه من الخطأ (نسبه سماح ) وبالطبع يجب أن تكون النسبه قليله ، والا في حال كبرت فيمكن أن تقدم للشبكه صوره شاب وتتعرف الشبكه على أنها صوره شجره !! والعكس أيضا ففي حال قللت نسبه الخطأ بشكل قليل جدا فيمكن أن لا تتعرف الشبكه على المثال التي قدمته والذي يختلف قليلا عن المثال الذي تعرفه الشبكه ،، لذلك نسبه الخطأ أو السماح في الشبكه يجب أن تكون متوسطه القيمه ،، وعندما نحسب الخطأ في الشبكه سوف نعرف أنها ما زالت بحاجه الى المزيد من التدريب (تغيير الأوزان) في حال كانت نسبه الخطأ كبيره ، ونستمر في عمليه التدريب إلى أن تقل درجه الخطأ للحد المعين الذي حددته أنت المصمم (حد السماحيه) ..
ويتم حساب الخطأ في الشبكه Root Mean Square RMS بالمعادله :
وذلك بحساب الفرق بين المخرج المثالي والحالي للمدخل الأول ، ومن ثم تربييعه ، وبعدها جمعه في sum والقيام بهذه العمليه لجميع المدخلات للشبكه ، بعدها نقوم بتقسيم sum على عدد المدخلات ونأخذ الجذر التربيعي للناتج وهكذا ينتج لدينا الRMS .
خلاصه :
تعرفت أخي القارئ الكريم ، أن الشبكه العصبيه ANN هي محاوله لمحاكاه عمل الشبكه العصبيه الموجوده في عقل الأنسان ، وذلك لحل مشاكل يصعب حلها بواسطه الطرق التقليديه ،،
كما تعرفت على مكونات الخليه (وزن ، حد) ، وعرفت أن الخليه تقوم باطلاق القيمه fire عندما تكون القيمه المدخله*وزن أكبر من قيمه الحد ، والا فلن تقوم بعمل هذا الfire .
كما تعلمت أن الشبكه العصبيه يجب أن تتمرن بحيث تتغير هذه الاوزان في كل مره حتى تحصل على النتيجه المطلوبه ، وبعدها تقوم بالتأكد ، لأنك بعد الأنتهاء لن تستطيع تدريبها مره أخرى ..
المصادر التي أقرأها وأستفيد منها :
Introduction to Neural Networks for Java, Second Edition
C++ Neural Networks and Fuzzy Logic
شكر جدا
الموضوع فعلا مفيد
ال bais إسمها biase و هي قيمة ال threshold للخلية, يتم تخزينها مع الأوزان لسهولة التعامل معها بهذه الحالة
مشكور على الموضوع
ممتاز رب يوفقك
اريد توضيح مفهوم الدكاء الإصطناعي نظريا و عمليا :
الشبكات العصبية الإصطناعية ANN
المنطق الغامض Fuzzy Logic
و المزج بينهما Neuro- Fuzzy
وهل المنطق الغامض يستطيع أن يحل محل الشبكات العصبية الإصطناعية ؟
هل المنطق الغامض يستطيع التنبأ و التصنيف و ……
лцпйз щждук тимв ыфй яавр
هل اصبح لديك اجوبة
جزاك الله خيرا و جعله في ميزان حسناتك, و الله استفدت كثيرا من الموضوع
اخوان جزاكم الله خيرا
مافائدة الطبقات المخفية؟
وكيف نحدد عدد الطبقات المخفية وهل يوجد لها حد معين؟
السلام عليكم ورحمة الله وبركاتة
hidden layer تستخدم لزيادة تعليم الشبكة وتم وضعها بالاساس لان الشبكة عندما كانت تحتوى على طبقة واحدة ـ single layer كانت تستخدم فى عمل تصنيف للبيانات التى يمكن الفصل بينها بخط مستقيم straight line إما اذا كانت البيانات لا يمكن فصلها بخط مستقيم فيجب ان نستخدم اكثر من طبقة layer
فى أمان الله
شكرًا جزيلاً , جزاك الله خير
لماذا نستخدم دالة sigmoidعندما نريد ان يكون المخرج 0 أو 1
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاتة
لان دالة الsigmoid
f(z)=1/(1+e(-z))
عندما تكون قيمة الz كبيرة فيكون e(-z) تقريبا مساوية للصفر وتكون f(z)=1/(1+0)=1
وعندما تكون قيمة الz صغيرة جدا فقيمة e(-z) تكون كبيرة جدا ويكون
f(z)=1/(1+very very big number)=0
ويكون شكل الgrpah للدالة sigmoid على هيئة حرف S
فى أمان الله
رائع اخ وجدى بالتوفيق وننتظر منكم المزيد
اريد مساعد في الذكاء الاصطناعي في كتابة معادلة من الدرجة الثانية باستخدام الشبكات العصبية؟
السلام عليكم
..راائع جدا شرحك بسيط وسهل وواضح تماما أحييك وأشكرك على جهدك، جعله الله في ميزان حسناتك ورفع بك درجات في العلم أكثر 😊
السلام عليكم
مشكور جدا عالموضوع الرائع
ممكن شرح خوارزمية الانتشار الخلفي back probagation وشرح overfitting ,underfitting
good
مجهود عظيم! وشرح واضح كافي ووافي..
استفدت منه جداً، جزاك الله خير والله يجعله في موازين حسناتك
كيف يمكن ان اعمل على تحسين الشبكة العصبية وتطويرها
صثغصثغصثغصثغصثغصثغ