ماهي الشبكات العصبية الاصطناعية ؟ (الذكاء اصطناعي)
قبل أن أتحدث عن الشبكة العصبية الاصطناعية لابد أن نتعرف علي الشبكة العصبية البشرية. الخلية العصبية هي الوحدة الأساسية لبناء الجهاز العصبي في الكائن الحي ويوجد مليارات الخلية العصبية في جسم الكائنات و تتفرع الى زوائد أمشاج تعمل على نقل الشعور بالإحساس وردود الأفعال من والى المخ.
ويعد التعلم واكتساب وحفظ المعرفة من الوظائف الأساسية للخلية العصبية بجانب الجمع معالجة وتوزيع الإشارات الكهربائية التي تمثل السيالة العصبية.
ومن اهم الصعوبات التي تواجه الباحثين في مجال الذكاء الاصطناعي هو التواصل الى صنع اله او جهاز قادر على التعلم واكتساب معرفه تساعد على حل المشكلة التي يواجها في المستقبل.
لذا فقط سعى بعض العلماء في محاوله محاكاه الجهاز العصبي وبالأخص الخلايا العصبية في الكائن الحي وذلك من خلال بناء نموذج لخلايا عصبيه اصطناعيه لها خواص مشابهه للخلية العصبية البشرية.
ماهي الشبكة العصبية الاصطناعية؟
الشبكة العصبية الاصطناعية هي تقنيات حسابيه مصممه لمحاكاة الطريقة التي يؤدي بها الدماغ البشرية مهمه معينه ولذلك عن طريق معالجه ضخمه موزعه على التوازي ومكونة ،من وحدات معالجه بسيطة هذه الوحدات ما هي الا عناصر حسابيه تسمى عقد (Nodes او Neurons) والتي لها خاصيه عصبيه من حيث انها تقوم بتخزين المعرفة العملية والمعلومات التدريبية لتجعلها متاحه للاستقدام ولذلك عن طريق ضبط الاوزان.
تعتبر الشبكة العصبية الصناعية نظام قابل للتكيف (adaptive system) حيث تتغير بنيتها اعتمادا على المعلومات التي تعبر من خلالها في ما يسمى بمرحلة التعلم.
يكمن الاستخدام العملي لهذا الشبكات في امكانيه تطبيق خوارزميات مصممه لتغيير وزن او( قوه ) الروابط التي تربط الخلية العصبية الاصطناعية ببعضها لإنتاج زي العصبي معين فعل او رد فعل معين.
مقارنه الخلية العصبية البشرية والخلية العصبية الاصطناعية
كما راينا قد قام العلماء باقتراح بناء نظام يحاكي العملية الموجودة في الخلية العصبية عند الانسان فلو نظرنا الى الشكل التالي
نجد الشبكه تتكون من المدخلات (Input vector)وهنا تمثل بال(X¹,X²,X³......Xn). ويمكن ان نتخيل انها تمثل التفرعات العصبية (Dendrites) للعصب البشري والتي يتم من خلالها السيالة العصبية من أعضاء الحس الى جسم الخلية العصبية اي مجموعه الإشارات المدخلة للخلية وهنا تكون اما يوجد اشاره أي واحد او لا يوجد اشاره (0).
الوزن (Weights) :
وهو يمثل درجه الوزن الإشارة المدخلة حيث يعبر الوزن عن شده الترابط بين عنصر قبل وعنصر بعده.
تتابع التنشيط (Activation Function) :
وهنا يكمن العمل الحقيقي للخلية العصبية
أي مثلا هنا يتم جمع الاوزان للإشارات المدخلة ومقارنتها مقيمه معينه للحد او العتــــبة (Threshold) فاذا كان مجموعه اوزان الإشارات يزداد عن تكون الإشارة المخرجة هي واحد واذا كان اقل يكون الناتج صفر
مفهوم الشبكة في الشبكات العصبية الصناعية:
كما راينا ان الشبكات العصبية تتكون من مجموعه من وحدات المعالج ويسمى إحداها خليه عصبيه والشكل التالي يبين نموذج لا خطيا وبسيطة للأعصاب الاصطناعية
كما ان الانسان وحدات ادخال توصله بالعالم الخارجي وهي حواس الخمسة فكذلك الشبكة العصبية تحتاج لوحدات ادخال ووحدات معالجه يتم فيها عمليات حسابيه تضبط بها الاوزان ونحصل من خلالها على رد الفعل المناسب لكل مدخل من المدخلات للشبكة. فوحدات الادخال تكون طبقه تسمى طبقه المدخلات وحدات المعالجة تكون طبقه المعالجة وهي التي تخرج نواتج الشبكة وبين كل طبقه من هذا الطبقات هناك طبقه من المواصلات البينية التي تربط كل طبقه الطبقة التي تليها والتي يتم فيها ضبط الاوزان الخاصة بكل وصله بينية وتحتوي الشبكة على طبقه واحده فقط من وحدات الادخال ولكنها قد تحتوي على اكثر من طبقه من طبقات المعالجة.
نلاحظ من الشكل السابق أن العصبون يتألف من:
1- إشارات الدخل: Input:
a1, a2, a2,….an
2- قوى الأوزان Weights:
Wj1, Wj2, Wj3, ......Winحيث يعبر الوزن عن شدة الترابط بين عنصر قبله وعنصر بعده
3- عنصر المعالجة Processing Element :( J)
وهذا العنصر يقسم إلى قسمين:
أ - الجامع (Adder) لجمع الإشارات في الدخل الموزون.
ب - تابع النقل أو تابع التفعيل: (Activation Function)
وهذا التابع يحد من خرج العصبون لذا يسمى بتابع التخميد Squashing حيث يجعل الخرج ضمن المجال [0,1] أو ضمن المجال
[-1,1].
4-الخرج (Xj): (Output)
اذا في الشبكة كنموذج رياضي تمثل داله (x)f
وهي عباره عن مجموعه من الدوال أخرى (x)gi واللاتي بدورها قد تكون عباره عن مجموعه أخرى من الدوال وهكذا لهذا الطريقة يكون تمثيلها بشبكة من المتغيرات ترتبط بعضها البعض باسهم تدل على موثوقية كما بالشكل :
ويمكن النظر الى هذا الشبكة من الاتجاهين .
الاولي وظيفيه حيث نبدأ من المعطى x وننتقل عبر الشبكة وصولا الى f وتستخدم هذا الطريقة تعاد لحل المشكلات التي نرى فيها للوصول الى امثله الحل(optimization problems)
الثانية احتمالية حيث نبدأ من متغير عشوائي f والذي يعتمد على التغيرات التي تسبقه (g.h) وصولا الى (x) وتستخدم هذا الطريقة في نموذج الرسوم البيانية في الإحصاء.
تدريب في الشبكات العصبية الاصطناعية:
بفرض وجود عدد من المشاكل المراد حلها ومجموعه من الحلول f فإن مبدأ التعلم في الشبكات العصبية الاصطناعية يعني استخدام عدد من الملاحظات من البيئة المحيطة قد تكون هذا الملاحظات عباره عن بيانات تخزينها من تجارب سابقه لإيجاد خوارزميات معينه (تصل من خلالها الى إيجاد التابع *f الذي يعبر عن الحل الأمثل) والتي وبواسطة يمكن حل المشكلة بأفضل طريقه ممكنه (أي انه لا يوجد حل له تكلفة قليل من تكلفه الحل الأمثل *f).
ويقوم اعمل الخوارزميات التي تبني عليها الشبكة العصبية الاصطناعية على البحث في في فضاء الحلول F لإيجاد (*f) وهذا يقودنا الى ضرورة تعريف داله التكلفة(cost function)، وهي عباره عن مقياس لمعرفه مدي جوده الحل هذا وقد تعبر التكلفة عن كميه الوقت او المدى استخدام المعالج او الذاكرة او اي مصدر اخر لحل المشكلة.
تطبيقات على الشبكات العصبية الاصطناعية (الذكاء الاصطناعي)
يوجد الكثير من تطبيقات الشبكات العصبية الاصطناعية في مجال مختلفة ونلاحظ ان تطبيقاتها تعتمد على كثيرا على مبدا التعلم .
ومن أهميه مجالات التعريف على الأنماط (Parrern Recognition)، وأيضا التعرف على الأصوات(speech Recognition) صناعة الرجل الالي (robotics) التحكم(controlling) ومجالات التخصص الطبي.
اليه تعرف الشبكة ال (back propagation)على الاحرف العربية
مقدمه عن شبكات ال(back propagation):
تم انشاء الشبكات ال(back propagation) لحل مشكله التصنيف من خلال الشبكات العصبية متعددة الطبقات بدلا من الشبكات ال(perceptron) التي تتعامل مع شبكات ذات الطبقة الواحدة ومن اهم التطبيقات خوارزميات (backpropagation) وهي
( Pattern Classification ) التي هي صلب المقال وبين الشكل التالي شبكه عصبيه متعددة الطبقات وتطبيقات خوارزميه(back propagation).
The Back-propagation Algorithm
ان الاوزان تمثل المعلومات الأولية التي تتعلم بها الشبكة لذا لابد من تحديث هذه الاوزان خلال مرحله التدريب ومن اجل هذا التحديث وسوف نستخدم خوارزميات مختلفة حسب نوع الشبكة ومن هذا الخوارزميات خوارزميه الانتشار العكسي
(The Back-propagation Algorithm) التي تستخدم في تدريب الشبكات العصبية ذاتيه التغذية الامامية ومتعددة الطبقات وغير الخطية يتم تنفيذها خوارزمية من خلال مرحلتين
الأولى مرحله الانتشار الامامي Feed Forward Back Propagation :
في هذه المرحلة لا يحدث أي تعديل الاوزان الشبكية وتبدا هذه المرحلة بعرض الشكل المدخل الى الشبكة حيث تختص كل عنصر معالجه من طبقه عناصر الادخال لاحد مكونات الشعاع الذي يمثل الدخل وتسبب قيم مكونات شعاع الداخل استثاره لوحدات طبقه الدخل ويعطب ذلك انتشار امامي لتلك الاستثارة عبر بقيه طبقات الشبكة
المرحة الثانية الانتشار العكسي Back Propagation :
وهي مرحله ضبط اوزان الشبكة انك خوارزميات الانتشار العكسي القياسية هي الخوارزمية الانحدار التدريجي
(algorithm gradient descent) والتي تسمح للأوزان الشبكة ان تتحرك على الجانب السلبي من تابع الأداء.
ان ادور الانتشار العكسي يعود الى الطريقة التي يتم بها حساب الميل في طبقات الشبكة المتعددة الـلاخطية حيث يتم في احد مراحل التعليم اعاده انتشار الإشارة من الخرج الى الدخل بشكل عكسي حيث يتم خلالها ضبط اوزان الشبكة ويمكن تمثيل الخوارزمية لتكرار واحده كما يلي
(Xk+1=Xk-ak*gk)
حيث Xk: شعاع الاوزان والانزياحات الحالية
معدل التعلم:ak
الميل الحالي:gk
الفكرة العامة عن المشروع
الغرض من هذا المشروع هي بناء شبكه عصبيه من النوع(back propagation) للتعرف على الاحرف الأبجدية العربية والتي عددها 28 حرف وكل حرف سوف يمثل بمصفوفه منطقيه ابعادها (6×8) قيم كل منهما (1 او 0).
شعاع الداخل
من اجل كل حرف سوف ننشئ شعاع دخل(1*48) بقيم (0 او1) كما يلي
شعاع الخرج:
الخرج هو عباره عن شعاع خرج (1×28) حيث يتم تعيين القيمة (1) لموقع الحرف في الأبجدية كما بالشكل:
البنيه الهندسية للشبكة العصبية:
تتألف هذه الشبكة من 48 عصب في شبكه الدخل و10 أعصاب في الشبكة الخفية بالإضافة الى 28 عصب في شبكه الخرج اما توابع التفعيل فهي logsig لكل من طبقتي الخارج الخفية.
أما بيانات التدريب والهدف منها تم تعيينها باستخدام تابع prprob الذي يقوم بتعريف مشكله التعرف على الاحرف الهجائية العربية المرسومة بشكل خاطئ
Alphabets - 48×28 Matrix of 6×8 bit maps for each letter.
Targets - 28×28 target vector.
خطوات انشاء الشبكة على برنامج MATLAB :
كتابه التعليمات اللازمة لإنشاء الشبكة في برنامج الـ (MATLAB )والمعبرة عن الاشكال السابقة :
- انشاء الانتشار الخلفي بتابع تعلمه goal=0.001 و traingdx وذلك من اجل 500 دوره:
net-newff(minmax (Letters),[10 28],{ 'logsig','logsig'},'traingdx');
net.trainParam.epochs=500 ;
net.trainParam.show=1 ;
net.trainParam.goal=0.001 ;
- أما عملية تدريب الشبكة فتتم وفق التعليمة التالية:
[net,tr]=train(net,Letters, target);
- أما عملية اختبار الشبكة للتعرف على حرف مدخل من بيانات التدريب نفسها ستكون:
N=Letters(:,L) ;
figure,plotchar2(N);
output=compet(output);
answer-find(compet(output==1));
figure, plotchar2(Letters(:,answer));
- عملية اختبار الشبكة للتعرف على حرف مشوه (صورة
مشوهة):
noisyN= N+randn(48,1)*0.2;
output=sim(net,noisyN);
output=compet(output);
answer=find(compet(output==1));
figure, plotchar2(Letters(:,answer));
عمليه ادخال حرف من MATLAB وإظهار النتيجة:
نبدأ أولاً بحرف ال (س) :
يتم استدعاء التابع showLetter (C،' L`) في نافذه الأوامر
حيث تمثل الحرف المدخل والسي تمثل الحالة التي يكون فيها الحرف مشوه ام عادي
ملاحظات:
C=1 : يتم من خلال عرض الحرف المدخل
C=2 :يتم من خلالها تشويه الحرف المدخل من لوحه المفاتيح
C=3 :تقوم الشبكة لمعالجه الحرف المشوه ثم اظهار الحرف المشوه له في المصفوفة (letters)
نبدأ بعرض الحرف الذي تم أدخالة من خلال كتابه التعليمة ('س',1) showLetter في نافذه الأوامر ثم سيكون الخرج حرف طبيعي كما بالشكل :
نقوم بتدريب الشبكة على توليد حرف مشوه وذلك من خلال الاستدعاء داله تولد قيم مصفوفه عشوائية :
noisyN= N+randn(48,1)*0.2 ;
سيتم ذلك من خلال كتابه التعليمة ('س',2) showLetter في نافذه الأوامر ثم سيكون الخرج حرف مشوه ويكون الناتج كما بالشكل:
وعــندما نطلب من الشبكة إظهار الحرف بدون تشوه الحرف الأقرب للحرف المشوه سيتم ذلك من خلال كتابه التعليمة
('س',3) showLetter في نافذه الأوامر ثم سيكون الخرج حرف سليم بلا تشوه كما بالشكل
عمليه ادخال صوره من MATLAB ,متابعة النتيجة :
ليكن الحرف(ث)
الفكرة هنا استدعاءshowLetter (C، ' L ' ) التابع في نافذه الأوامر:
حيث تمثل صوره الحرف المدخل تمثل الحالة التي تقوم بمعالجه الصورة المدخلة .
فعندما تكون الحالة الاولي عندها سيقوم البرنامج ما كلاب بإيجاد الحرف الذي يطابق الحرف المرسوم في الصورة وعندها سيكون الناتج بعد استدعاء تابع الاظهار (N) figure,plotchar2 هي صوره الحرف تماماً.
اما في حالة الثانية ستقوم الشبكة بأخذ الصورة ومقارنتها مع المصفوفة المدخلة (Letters) ثم اجياد الحرف الذي يطابق تقريبا الحرف المرسوم في الصورة وهنا قد لا يكون الناتج بعد التدريب الأول مطابقا للحرف الموجود في الصورة لذلك علينا اعاده تدريب الشبكة حتى تتعرف على الحرف المرسوم في الصورة.
استدعاء التابع know (C، ' L ' ) في حاله الأولى:
استدعاء التابع know (C، ' L ' ) في الحالة الثانية
وهنا كان الناتج بعد تدريب الأول هو الحرف (ظ) لأن شكله قريب من الشكل الحرف (ث) اما بعد تدريب الشبكة للمرة الثانية فكان الناتج هو الحرف (ث)
know( 'ث . jpg' , 2) ;
ناتج التدريب الأول :
بعد التدريب الثاني :
Summary:
لقد قمنا في هذا المشروع المتواضع بإنشاء شبكه عصبيه من النوع (backpropagation) ومن ثم قمنا بتدريب الشبكة للتعرف على الاحرف الابجدية العربية في الحالتين:
الحالة الأولى: نقوم بإدخال الحرف المناسب الى الشبكة ثم تشويه الحرف وبعدها تقوم الشبكة بالتعرف على الحرف المشوه واظهاره بصورته الصحيحة.
الحالة الثانية: أقوم بإدخال صوره الحرف الى الشبكة والتي من خلال توابع التدريب تستطيع التعرف على الحرف الذي يمثل الحرف المرسوم في الصورة.
كما تحدثنا وبشكل مختصر عن عن الشبكات العصبية وانواعها واليه عمل الشبكة وكيفيه تدريبها للوصول الى الهدف المراد منها واهم التطبيقات على هذا الشبكات ثم قمنا بالحديث عن النوع المستخدم في هذا البحث وهو شبكات الـ(backpropagation) ثم بيننا خطوات عمليه انشاء الشبكة وكيفيه ادخال البيانات من خلال نافذه الأوامر(Command window) في MATLAB
تابعنا في يوتيوب من هنا
موضوع كبير ومعلومات شيقا احسن اخي
ردحذفمثال سهل وبسيط وفهمني الذكاء الاصطناعي
ردحذفلكم جدير الشكر جميعاً داعين المولي التوفيق للإسراء محتوي التكنولوجيا حصري ينال إعجابكم ديماً
ردحذف