الذكاء الصناعي و الشبكات العصبية
الشبكات العصبية
يمكن اعتبار الشبكات العصبية علماً جديداً يسعى لإنتاج حاسبات تعمل بنفس فكرة العقل البشري، فكما ذكرنا في الباب الأول من هذا الكتاب فإن العقل البشري ينفذ العمل من خلال ملايين من الخلايا العصبية والتي تتفرع بدورها إلى الملايين، من الزوائد العصبية ومن خلال هذه الخلايا العصبية يتم تخزين المعرفة عن العالم الخارجي في العقل البشري،. فالشبكات العصبية تسعى أن تنتج أجهزة وأنظمة تحاكي بها فكرة عمل العقل البشري، حيث تتكون الشبكة العصبية من جهاز يحتوي على عدة معالجات مع عدة ذاكرات مرتبطة مع بعضها البعض بصورة متوازية مما يجعلها تقوم بتنفيذ المهام بنفس فكرة الخلايا العصبية في العقل البشري.
قد بدأت بعض جوانب هذه الشبكات ترى النور حيث نجد بعض الأجهزة التي تحتوي على معالج ضخم يحتوي على عدد من وحدات المعالجات البسيطة (أو عدة معالجات موزعة على التوازي بدلا من المعالج الذي يحتوي على الوحدات)، بحيث تقوم بتخزين المعرفة العملية لتجعلها متاحة للمستخدم وذلك عن طريق ضبط الأوزان، وقد قدمت الشبكات العصبية بعض الحلول والتطبيقات في عدة مجالات نذكر منها :
-
تمييز الأنماط والتعرف على الصور .
-
القدرة على التعرف على الصور المشوهة .
-
إكمال الصور التي فقدت جزءاً منها، مثل الصور المرسلة بواسطة الأقمار الصناعية .
-
عمليات التصنيف إلى عدد من الفئات. مثل تصنيف الحيوانات إلى أليفة و مفترسة .
لو أخذنا مثالاً على عملية التعرف على الكائنات الحية، و قمنا ببرمجة برنامج بالطريقة التقليدية للتعرف على هذه الحيوانات فإن ذلك سيكون صعباً للغاية فضلاً عن كونه محدود القدرات، فالتطبيقات التقليدية تمر بعدة مراحل تتطلب في معظمها وجود الإنسان، و تتطلب برنامجاً ضخماً للتعرف على كل حيوان على حده. بينما في الشبكات العصبية فإن الشبكة تتبع نفس الطريقة التي يتعلم بها الإنسان وذلك عن طريق عرض صور الحيوانات وضبط الأوزان حتى يتم تخزين المعرفة بصورة صحيحة في ذاكرة الحاسوب، ومع تكرار الصور و تنوعها تتعل الشبكة وتصبح قادرة على إعطاء إجابات صحيحة، وكل ذلك لا يتطلب كتابة برنامج ضخم كما في التطبيقات التقليدية .
1.1 مكونات الشبكة العصبية
كما أن للإنسان وحدات إدخال توصله بالعالم الخارجي وهي حواسه الخمس، فكذلك الشبكات العصبية تحتاج لوحدات إدخال، ووحدات معالجة يتم فيها عمليات حسابية تضبط بها الأوزان و تحصل من خلالها على ردة الفعل المناسبة لكل مدخل من المدخلات للشبكة (شكل رقم 5-1).
فوحدات الإدخال تكوّن طبقة تسمى طبقة المدخلات، و وحدات المعالجة تكوّن طبقة المعالجة وهي التي تخرج نواتج الشبكة. وبين كل طبقة من هذه الطبقات هناك طبقة من الوصلات البينية التي تربط كل طبقة بالطبقة التي تليها والتي يتم فيها ضبط الأوزان الخاصة بكل وصلة بينية، وتحتوي الشبكة على طبقة واحدة فقط من وحدات الإدخال ولكنها قد تحتوي على أكثر من طبقة من طبقات المعالجة، شكل رقم (5-1).
2.1 كيف تعمل الشبكة العصبية
هناك أنواع مختلفة من الشبكات العصبية ولكل نوع طريقة عمل خاصة. وحتى نقف على كيف تعمل الشبكة العصبية سنتناول فكرة عمل واحدة من هذه الشبكات وهي الشبكة البرسبترون (perceptron network) والتي تستخدم في التطبيقات التي تحتاج إلى تصنيف الأنماط ( Pattern Classification ) إلى فئتين فقط، أي التي يمكن فصل أنماطها بيانياً بواسطة خط مستقيم، وتسمى هذه النوعية من الأنماط “الأنماط القابلة للفصل خطياً”.
وتتكون هذه الشبكة من طبقة المدخلات وطبقة واحدة أو طبقتين من طبقة المعالجة بحيث لا تزيد طبقة المعالجة، عن طبقتين، بالإضافة إلى إنه يتم ضبط الأوزان لطبقة واحدة فقط من طبقات الوصلات البينية التي تربط بين الطبقات السابقة، لتبقى الطبقة الأخرى (إن وجدت) ثابتة الأوزان. والفكرة التي تعمل وفقها هذه الشبكة أو كيفية تعليم هذه الشبكات العصبية تتلخص في تتبع مرحلتين هما :
-
مرحلة التعليم
-
مرحلة الاختبار
مرحلة التعليم :
هي المرحلة التي يتم فيها ضبط أوزان الوصلات البينية حتى تصل إلى أوزان قادرة على إعطاء إجابات صحيحة، ويتم ذلك عن طريق قيام وحدات المعالجة بثلاث عمليات رئيسية :
عملية جمع الأوزان Weighted Sum :
تقوم كل وحدة معالجة بعملية الجمع لكل وزن مدخل لها و الملحق بالوصلة البينية التي تربط بينها وبين الوحدة الموجودة في الطبقة التي تسبقها، مضروباً في القيمة الخارجة من تلك الوحدة، وهو على الصيغة :
حيث w ji هو الوزن الملحق بالوصلة البينية التي تربط وحدة المعالجة j بالوحدة i الموجودة في الطبقة التي تسبقها، و a i هي القيمة الخارجة من الوحدة i ، و Sj هي ناتج عملية الجمع لكل وحدة معالجة j .
عملية التحويل (Transformation ) :
تتم هذه العملية في الطبقة الأخيرة من طبقات المعالجة حيث يتم تحويل ناتج عملية الجمع المذكور في العملية السابقة إلى أحد القيم التي يفترض أن تكون ضمن نواتج الشبكة المرغوب بها. فمثلاً لو كانت الشبكة ستتعلم كيف تصنف الأعداد إلى فردي وزوجي، على أن تعطي كل عدد فردي القيمة 0 و كل عدد زوجي القيمة 1، فإن قيمة Sj وهو ناتج عملية الجمع لن يعطي القيمة 0 أو 1 غالباً، لذا لا بد من تحويل هذا الناتج إلى إحدى هاتين القيمتين، وذلك عن طريق قاعدة التحويل والتي يحددها المبرمج. فمثلاً تكون القاعدة كالتالي :
if Sj> 0 then Xj=1 if Sj<=0 then Xj=0
حيث Xj هي القيمة الخارجة من وحدة المعالجة j .
عملية ضبط أوزان الشبكة (weights adjustment) :
بعد إتمام عملية التحويل يتم مقارنة الناتج الذي تعطيه الشبكة مع الناتج الصحيح الذي يفترض أن تعطيه الشبكة، وذلك عن طريقة طرح الناتج الهدف(الصحيح) من ناتج الشبكة، فإذا كان ناتج الطرح مساوياً للصفر فهذا يعني أن الشبكة أخرجت ناتجاً صحيحاً، أما إن كان غير ذلك فالشبكة تحتاج لضبط أوزانها، وذلك من خلال قاعدة التعليم ( learning rule ) التالية:
wjinew = wjiold + C(tj – Xj)ai
حيث:
– wjinew هي قيمة الوزن الجديد الملحق بالوصلة البينية بين الوحدة j الوحدة i .
– و wjiold هي قيمة الوزن القديم الملحق بالوصلة البينية بين الوحدة j والوحدة i .
– و C هو معدل التعلم (learning rate) وهي قيمة ثابتة عادة ما تكون قيمة أقل من 1 .
– و tj هي القيمة الهدف للشبكة .
– و Xj هي القيمة التي أنتجتها الشبكة .
– و ai هي المخرج من الوحدة i .
3.1 مثال عملي على شبكة البيرسبترون Perceptron
حتى نوضح الجوانب السابقة سنتناول في هذا الجزء مثالاً مبسطاً عن الدالة المنطقية AND .
لنفرض أن لدينا شبكة من النوع Perceptron (الشكل 5-2) ونريد تعليمها كيف تطبق الدالة المنطقية AND ، و هذه الدالة تعطي القيمة 1 إذا كانت كل من قيمة المدخلين مساوية للواحد، وصفراً في الحالات الأخرى كما يوضح الجدول رقم (5-1).
حيث a1 و a2 ترمز للمدخلات، بينما Y ترمز للمخرجات.
وقاعدة التحويل هي :
if Sj >0 then Xj=1 if Sj<=0 then Xj=0
وسنفرض معدل التعلم بالقيمة C=0.5.
لتمثيل هذه الشبكة فإننا نحتاج لوحدتي إدخال لأن هناك مدخلين، ووحدة معالجة واحدة لأن هناك مخرجاً واحداً (الشكل 5-2).
من الرسم نجد أن هناك طبقة واحدة من الوصلات البينية وسنفرض لها قيم أوزان مختلفة على أن تكون في المدى من -0.5 إلى 0.5
w11=0.1
w12=0.3
سنبدأ الآن بالمدخل الأول ( a1,a2 ) ونطبق أول عميلة وهي عملية الجمع :
S= 0.0 × 0.1+ 0.0 × 0.3
S=0.0
* قيم المدخلات ( ) من الجدول رقم (5-1)
وحيث إن وحدة المعالجة هذه هي آخر وحدة معالجة فيجب تطبيق قاعدة التحويل :
S= 0.0 ” S<= 0.0
إذاً X=0
وبعد ذلك سنطبق عملية ضبط الأوزان، ولكن أولاً نتحقق مما إذا كان هناك حاجة لضبط الأوزان أم لا :
الناتج للمدخل الأول هو 0 ، والناتج الذي أخرجته الشبكة هو 0 ، وحاصل طرح هذين الناتجين هو 0 ، وهذا يدل على أن أوزان الشبكة ليست بحاجة إلى تعديل .
لننتقل إلى المدخل الثاني مستخدمين نفس الأوزان السابقة لأنه لم يتم تعديلها لعدم الحاجة لذلك :
نبدأ من جديد بتطبيق عملية الجمع :
S= 0.0 × 0.1 + 1.0 × 0.3
S=0.3
ثم قاعدة التحويل :
S= 0.3 ” S> 0.0
إذاً X=1
وبعد ذلك عملية ضبط الأوزان :
الناتج الهدف للمدخل الثاني هو 0 أيضاً، والناتج الذي توصلت له الشبكة هو 1 بطرح ناتج الشبكة من الناتج الهدف يعطي القيمة -1 وهي غير مساوية للصفر لذا لا بد من ضبط جميع أوزان الشبكة .
wjinew = wjiold + C(tj – Xj)ai
w11new = 0.1+ 0.5 × (-1) × 0.0 ” w11new =0.1
w12new =0.3+ 0.5 × (-1) × 1.0 ” w12new = -0.2
وبذلك نكون قد انتهينا من المدخل الثاني لنترك المدخل الثالث والرابع كتدريب مستخدمين الأوزان بعد تعديلها، متبعين نفس الخطوات السابقة.
مرحلة الاختبار :
اختبار الشبكة مشابه تماماً لعملية التعليم إلا أن الشبكة في هذه المرحلة لاتضبط أوزانها، وإنما فقط تقوم بعمليتي الجمع والتحويل ومقارنة الناتج الذي تنتجه الشبكة بالناتج الهدف. حيث يتم عرض فئة اختبار على الشبكة وتحتوي هذه الفئة على مجموعة من المدخلات والمخرجات المصاحبة لكل مدخل. ويفضل أن تكون فئة الاختبار مختلفة عن فئة التدريب .
فإذا استطاعت الشبكة اجتياز الاختبار وإعطاء إجابات صحيحة تصبح الشبكة جاهزة للاستخدام.