# مقدمة في الشبكات العصبية الاصطناعية
## الشبكات العصبية الاصطناعية Artificial Neural Networks

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

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

كما رأينا أن الشبكات العصبية تتكون من مجموعة من وحدات المعالجة ويسمى أحدها عصبون ، والشكل (1) يبين نموذجا لا خطيا وبسيطا للعصبون الاصطناعي :
كما أن للإنسان وحدات إدخال توصله بالعالم الخارجي وهي حواسه الخمس، فكذلك الشبكات العصبية تحتاج لوحدات إدخال . ووحدات معالجة يتم فيها عمليات حسابية تضبط بها الأوزان و نحصل من خلالها على ردة الفعل المناسبة لكل مدخل من المدخلات للشبكة . فوحدات الإدخال تكوّن طبقة تسمى طبقة المدخلات، و وحدات المعالجة تكوّن طبقة المعالجة وهي التي تخرج نواتج الشبكة. وبين كل طبقة من هذه الطبقات هناك طبقة من الوصلات البينية التي تربط كل طبقة بالطبقة التي تليها والتي يتم فيها ضبط الأوزان الخاصة بكل وصلة بينية، وتحتوي الشبكة على طبقة واحدة فقط من وحدات الإدخال ، ولكنها قد تحتوي على أكثر من طبقة من طبقات المعالجة.
نلاحظ من الشكل (2) أن العصبون يتألف من:
1 - إشارات الدخل ( Input ) : a1,a2,a2,….an 2- قوى الأوزان (Weights ) : Wj1, Wj2, Wj3,……Wjn حيث يعبر الوزن عن شدة الترابط بين عنصر قبله وعنصر بعده . 3 - عنصر المعالجة J : (Processing Element )
وهذا العنصر يقسم إلى قسمين :
* أ - الجامع (Adder ) لجمع الإشارات في الدخل الموزون .
* ب - تابع النقل أو تابع التفعيل (Activation Function ) :
وهذا التابع يحد من خرج العصبون لذا يسمى بتابع التخميد Squashing حيث يجعل الخرج ضمن المجال [0,1] أو ضمن المجال[-1,1] .
4 - الخرج (Output) (Xj ) .

## الوصف الرياضي للعصبون :

حيث : .الدخل اشارات: Xm------X1, X2 للنيرون المشبكة ألوزان: Wkm------Wk1, W k2 k .UK :الخرج الخطي للجامع.

## توابع التحويل

قلنا أن تابع التحويل يحد من خرج العصبون . ويجب أن يمتلك الخواص التالية:
* أن يكون تابعا مستمرا . * أن يكون قابلا للاشتقاق ومشتقه سهل الحساب .
* أن يكون انسيابيا غير متناقص.
وهناك ثلاثة أنواع لتوابع التفعيل:

### 1- تابع العتبة أو تابع الخطوة

يحد هذا التابع من خرج العصبون بحيث يصبح الخرج مساويا للواحد إذا كان الدخل أكبر أو مساويا الصفر , ويصبح الخرج مساويا الصفر إذا كان الدخل أصغر من الصفر.

### 2- التابع الخطوي الخطي أو تابع التطابق

يستخدم هذا التابع في العصبونات المستخدمة في المرشحات التلاؤمية الخطية .

### 3- التابع الأسيّ Sigmoid

يأخذ هذا التابع قيم الدخل المحصورة بين ∞ ــ و ∞ + ويجعل الخرج محصورا بين 0 و 1 ... وهو أكثر التوابع استخداما بسبب سهولة اشتقاقه وكثرة أنواعه . 4- التابع اللوغاريتمي:exp(-v^2)

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

معمارية الشبكة العصبية الاصطناعية, هي الطريقة التي ترتبط بها العصبونات مع بعضها البعض لتشكيل الشبكة ، وهذا يرتبط بخوارزمية التدريب . 1-4-3الشبكة ذات الطبقة الواحدة الأمامية : في الشكل (8) ترتبط كل مركبة من مركبات شعاع الدخل P بكل عصبون من خلال مصفوفة الوزن W .
كل عصبون يحوي وصلة جامع تقوم بجمع الدخل الموزون مع الإزاحة لتشكيل الخرج العددي للعصبون ، وفي النتيجة إن مركبات خرج طبقة العصبونات تشكل شعاع الخرج (مصفوفة من عمود واحد ) a . والعلاقة التي تعطي هذا الخرج :
مركبات شعاع الدخل تدخل إلى الشبكة من خلال مصفوفة الأوزان التالية:
مؤشرات السطر لعناصر هذه المصفوفة تدل على العصبون الهدف أما مؤشرات العمود على مركبات الدخل المصدر . أي أن المؤشرات في العنصر W1,2 تدل على أن هذا الوزن يتعلق بالعصبون الأول ، وأن مركبة الدخل لهذا العصبون هي المركبة الثانية .

## الشبكة ذات الطبقات المتعددة الأمامية :

الشبكة العصبونية يمكن أن تتألف من عدة طبقات وفي هذه الحالة يكون لكل طبقة صفوفة وزن W, وشعاع إزاحة b وشعاع خرج a . ومن أجل التمييز يضاف رقم الطبقة كدليل علوي لكل من المتحولات المستعملة من خلال الشبكة المبينة مركبة الدخل ، عصبون في الطبقة الأولى ، عصبون في الطبقة الثانية ، وهكذا بنفس الأسلوب . ومن الملاحظ أيضا أن خرج كل طبقة متوسطة هو دخل للطبقة التي تليها وبذلك تعتبر كل طبقة في هذه الشبكة كأنها شبكة ذات طبقة وحيدة .الطبقة التي تعطي الخرج تسمى طبقة الخرج ، أما الدخل فلا يعتبر طبقة ، وبقية الطبقات تسمى الطبقات الخفية . يمكن أن نرسم الشبكة الثلاثية المبينة في الشكل السابق باستخدام الرسم المختصر التالي :
الشبكات متعددة الطبقات هي شبكات ذات فعالية كبيرة وخاصة الشبكات بطبقتين فهي مستخدمة بشكل كبير جداً. حيث تستطيع هذه الشبكات من حل العديد من المشاكل المعقدة ولكن تدريبها يستغرق وقتا أطول . يرمز إلى هذا النوع بالشكل : ( m – n1 – n2 …..q) حيث تشير m إلى عدد المداخل وتشير n1 إلى عدد النيرونات في الطبقة الأولى وهكذا .... و q عدد عقد الخرج. كما في المثال المبين في الشكل (11) حيث يشار إلى هذه الشبكة بالرمز ( 10 – 4 – 2):
لأن لها 10 عقد في الدخل . و 4 عقد في الطبقة الخفية . و 2 عقدة في الخرج .

## الشبكات ذات التغذية الخلفية

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

## طرق تعليم الشبكة العصبونية

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

#### التعليم المراقب (بواسطة معلم) Supervised Learning of ANN’s

تقوم كل طرق التعليم أو التدريب بواسطة معلم للشبكات العصبية الاصطناعية على فكرة عرض البيانات التدريبية أمام الشبكة على هيئة زوج من الأشكال وهما الشكل المدخل input والشكل المستهدف target

#### التعليم غير المراقب ( بدون معلم ) Unsupervised learning

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

## خوارزميات تعليم الشبكة

إن الأوزان تمثل المعلومات الأولية التي ستتعلم بها الشبكة ، لذا لا بد من تحديث الأوزان خلال مرحلة التدريب ، ومن أجل هذا التحديث تستخدم عدة خوارزميات مختلفة حسب نوع الشبكة. من أهم هذه الخوارزميات خوارزمية الانتشار العكسي Back Propagation Algorithm التي تستخدم في تدريب الشبكات العصبونية كاملة الارتباط وذات التغذية الأمامية ومتعددة الطبقات وغير الخطية، وتعتبر هذه الخوارزمية تعميم لطريقة التدريب بنمط تصحيح الخطأ. ويتم تنفيذ هذه الخوارزمية من خلال مرحلتين رئيسيتين هما :
* مرحلة الانتشار الأمامي Feed forward Propagation
* مرحلة الانتشار العكسي Back Propagation

#### أولاً : مرحلة الانتشار الامامي

لا يحصل فيها أي تعديل للأوزان المشبكية و تبدأ هذه المرحلة بعرض الشكل المدخل للشبكة ، حيث تخصص كل عنصر معالجة من طبقة عناصر الإدخال لأحد مكونات الشعاع الذي يمثل الدخل ، وتسبب قيم مكونات متجهة الدخل استثارة لوحدات طبقة الإدخال ويعقب ذلك انتشار أمامي لتلك الاستثارة عبر بقية طبقات الشبكة
ثانيا : مرحلة الانتشار العكسي ====
وهي مرحلة ضبط أوزان الشبكة . إن خوارزمية الانتشار العكسي القياسية هي خوارزمية الانحدار التدريجي gradient descent algorithm والتي تسمح لأوزان الشبكة أن تتحرك على الجانب السلبي من تابع الأداء . إن دور الانتشار العكسي يعود إلى الطريقة التي يتم بها حساب الميل لطبقات الشبكة المتعددة اللاخطية ، حيث يتم في أحد مراحل التعليم إعادة انتشار الإشارة من الخرج إلى الدخل بشكل عكسي ، ويتم خلالها ضبط أوزان الشبكة ، ويمكن تمثيل الخوارزمية لتكرار واحد كما يلي : Xk+1= Xk - αk * gk حيث : Xk : شعاع الأوزان و الإنحيازات الحالية
αk : معدل التعلم gk : الميل الحالي
هناك طريقتان لحساب الانحدار التدريجي :
* أولاً : النظام التزايدي Incremental mode :
يتم وفق هذه الطريقة حساب الميل ومن ثم تعدل الأوزان بعد كل دخل يعطى للشبكة.
* ثانياً : نظام الدفعة الواحدة Batch mode :
وفق هذا النمط تزود الشبكة بكل أشعة الدخل قبل القيام بعملية تحديث الأوزان وبالتالي يمكن أن نقول أن الأوزان والانحيازات في هذه الطريقة تعدل بعد تزويد الشبكة بكامل مجموعة التدريب حيث أن الميول المحسوبة في كل مثال تدريبي تضاف لبعضها البعض لتحديد التغيرات في الأوزان والانحيازات .

## إنشاء الشبكة Network Creation

إن أول خطوة في تدريب الشبكة هو إنشاء الشبكة وذلك باستخدام عدة توابع . كل تابع مخصص لإنشاء أحد أنواع الشبكات العصبونية ذات الصفات المتميزة ، وبما أننا نريد إنشاء شبكة أمامية فسوف نستعمل التابع newff الذي يحتاج إلى أربعة محددات دخل وهي :
* مصفوفة تحتوي على القيم الصغرى والعظمى لكل عنصر من عناصر شعاع الدخل ويمكن أن يستعاض عنها بـminmax(p) الذي يقوم بتحديد أصغر وأكبر قيمة في مجال الدخل.
* مصفوفة تحتوي على عدد العصبونات في كل طبقة من طبقات الشبكة .
* مصفوفة تحتوي على أسماء توابع التفعيل لكل طبقة .
* اسم تابع التدريب المستخدم .
مثال :
إن هذه التعليمة تقوم بإنشاء شبكة أمامية ذات الإنتشار العكسي ، حيث يقع مجال الدخل بين القيمتين 0 و 5 ، وتتألف هذه الشبكة من طبقتين خفيتين وطبقة خرج ، الطبقة الخفية الأولى تحوي عشرة عصبونات بينما الطبقة الخفية الثانية تحوي ستة عصبونات ، أما طبقة الخرج فتتألف من عصبوني خرج ، وتوابع التفعيل لهذه الطبقات هي tansig للطبقة الخفية الأولى ، و logsig للثانية ، و purlin لطبقة الخرج ، أما تابع التدريب المستخدم في هذه الشبكة هو traingd .

#### تابع التدريب traingd وبارامتراته

التابع هو تابع تدريب تدريجي من النمط Batch mode الذي تكلمنا عنه قبل قليل.هناك عدة بارامترات للتابع traingd وهذه البارامترات يمكن تعديلها، وهي:
* معدل التعلم tr : يعمل على تحديد سرعة تغير الميل والانحيازات .
* Show : أمر لإظهار حالة التدريب .
* Epoch : بارامتر لإيقاف عملية التدريب ، حيث تتوقف الشبكة عن التدريب إذا بلغ عدد التكرارات عدد ال epochs المحدد.
* Goal : لتحديد قيمة الخطأ الأصغري .
* min_grad : الميل الأصغري الذي يقف عنده التدريب .
إن البارامترات السابقة تتحدد بشكل افتراضي عند إنشاء الشبكة ولكن يمكن التحكم بها وإعادة تحديدها.

### قيم الأوزان الابتدائية Initializing weights

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

### التدريب : training

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