
مختلفي از شبكهها وجود دارد. در اين بين شبكهاي وجود دارد كه گره را به عنوان يك نرون مصنوعي در نظر ميگيرد. در اصطلاح، اين چنين شبكههايي را شبكه عصبي مصنوعي60 يا به اختصار ANNمينامند.
ميتوان يک نرون عصبي انسان و عملکرد آن را توسط مدلهاي رياضي، مدلسازي کرد. شکل(3-1) ساختار يک نرون طبيعي را نشان ميدهد.
شکل 3 1 ساختار نرون طبيعي انسان
هر نرون طبيعي از سه قسمت اصلي تشکيل شده است :
بدنه سلول61؛
دندريت62؛
آکسون63؛
دندريتها به عنوان مناطق دريافت سيگنالهاي الکتريکي، شبکههايي تشکيليافته از فيبرهاي سلولي هستند که داراي سطح نامنظم و شاخههاي انشعابي بيشمار ميباشند. دندريتها سيگنالهاي الکتريکي را به هسته سلول منتقل ميکنند. بدنه سلول انرژي لازم را براي فعاليت نرون فراهم کرده و بر روي سيگنالهاي دريافتي عمل ميکند، که با يک عمل ساده جمع و مقايسه با يک سطح آستانه مدل ميگردد. آکسون بر خلاف دندريتها از سطحي هموارتر و تعداد شاخههاي کمتري برخوردار ميباشد .آکسون طول بيشتري دارد و سيگنالهاي الکتروشيميايي دريافتي از هسته سلول را به نرونهاي ديگر منتقل ميکند. محل تلاقي يک آکسون از يک سلول به دندريتهاي سلولهاي ديگر را سيناپس ميگويند .توسط سيناپسها ارتباطات مابين نرونها برقرار ميشود. به فضاي مابين آکسون و دندريتها فضاي سيناپسي گويند. در حقيقت دندريتها به عنوان ورودي نرون و آکسون به عنوان خروجي و فضاي سيناپسي محل اتصال اين دو ميباشد. زماني که سيگنال عصبي از آکسون به نرونها و يا عناصر ديگر بدن مثل ماهيچهها ميرسد، باعث تحريک آنها ميشود. نرونها از هر يک از اتصالات ورودي خود يک ولتاژ کم دريافت ميکند(توسط سيگنال عصبي ورودي) و آنها را با هم جمع ميزند .اگر اين حاصل جمع به يک مقدار آستانه رسيد اصطلاحاً نرون آتش ميکند و روي آکسون خود يک ولتاژ خروجي ارسال ميکند که اين ولتاژ به دندريتهايي که به اين آکسون متصلند رسيده و باعث يک سري فعل و انفعالهاي شيميايي در اتصالات سيناپسي ميشود و ميتواند باعث آتش کردن نرونهاي ديگر شود .تمامي فعاليتهاي مغزي انسان توسط همين آتش کردنها انجام ميشود.
شکل(3-2) يک نرون عصبي مصنوعي را نشان ميدهد.
شکل 3 2 ساختار يک نرون مصنوعي
سيگنالهاي ورودي x_1 تا x_n معادل سيگنالهاي عصبي ورودي و وزنهايw_i1 تاw_in معادل مقادير اتصالات سيناپسي وروديهاي نرون ميباشند که جمعاً ورودي نرون را تشکيل داده است.
مدلسازي شبکه عصبي
در يک شبکه عصبي نمونه، اطلاعات و پارامترهاي ورودي، هرکدام به شکل يک سيگنال الکتريکي تحريکي به کانالهاي ورودي مدل رياضي سلول عصبي وارد ميشوند. مدل رياضي يک سلول عصبي را يک پرسپترون64 مينامند. هر يک از کانالهاي ورودي(شبيه اتصالات دندريتها) داراي يک ضريب عددي هستند که وزن سيناپسي ناميده ميشود. شدت تحريک الکتريکي در اين ضريب ضرب ميشود و به جسم سلولي ميرسد. اگر مجموع تحريکات رسيده شده به جسم سلولي کافي باشد، نرون شليک ميکند و در مسيرهاي خروجي(شبيه آکسونها) جريان الکتريکي ثابتي را ايجاد ميکند. تحريکات لايه ورودي65 سلولها به يک يا چند لايه واسط ميرود که به نام لايههاي مخفي66 موسوم هستند. ادامه جريان تحريکات در اين لايهها(توسط همان وزنهاي سيناپسي) طوري هدايت ميشود که پيچيدگيهاي تأثيرات جريان ورودي را شبيهسازي ميکند. سپس تحريکات به لايه خروجي67 ميروند که هدف نهايي ما است.
به هنگام مدل كردن نرونها، از پيچيدگيهاي آنها صرف نظر ميشود و تنها به مفاهيم پايهاي بها داده ميشود، چرا كه در غير اين صورت رويكرد مدلسازي بسيار دشوار خواهد شد. در يك نگاه ساده، مدل يك عصب بايد شامل وروديهايي باشد كه در نقش سيناپس انجام وظيفه كنند. اين وروديها در وزنهايي ضرب ميشوند تا قدرت سيگنال را تعيين كنند. نهايتاً يك عملگر رياضي تصميمگيري ميكند كه آيا نرون فعال شود يا خير و اگر جواب مثبت باشد، ميزان خروجي را مشخص میسازد. بنابراين شبكه عصبي مصنوعي با استفاده از مدل ساده شده عصب واقعي به پردازش اطلاعات ميپردازد. با توجه به اين توضيحات، ميتوان مدل سادهاي براي توصيف يك نرون(يك گره در شبكه عصبي مصنوعي) پيشنهاد كرد. جداي از سادهسازيهاي اعمال شده، تفاوت اصلي اين مدل با واقعيت در اين است كه در شبكه واقعي، وروديها سيگنالهاي زماني هستند حال آن كه در اين مدل، اعداد حقيقي ورودياند.
در مدل ارائه شده در شكل(3-2)، تنوعهاي بسياري وجود دارد. از جمله اين كه وزنهاي يك شبكه عصبي، كه مقدار خروجي را منتقل ميكنند، ميتوانند مثبت يا منفي باشند. از طرفي، توابع مورد استفاده براي آستانهگذاري ميتوانند بسيار متنوع باشند. از جمله مشهورترين اين توابع ميتوان به تابعهايي نظير سیگموئید68، آرکتانژانت69 و آرکسینوس70 اشاره كرد. اين توابع بايد پيوسته و هموار بوده و مشتقپذير باشند. همچنين تعداد گرههاي ورودي ميتواند متغير باشد. البته با زياد شدن تعداد اين گرهها، به وضوح تعيين وزنها را با مشكل روبرو ميكند. لذا بايد به دنبال روشهايي براي حل اين موضوع باشيم. روند تعيین وزنهاي بهينه و تنظيم مقادير آنها عمدتاً به صورت بازگشتي انجام ميشود. بدين منظور شبكه را با استفاده از قواعد و دادهها آموزش داده و با استفاده از قابليت يادگيري شبكه، الگوريتمهاي متنوعي پيشنهاد ميگردد كه همگي سعي در نزديك كردن خروجي توليد شده توسط شبكه به خروجي ايدهآل و مورد انتظار دارند.
شبکههاي پرسپترون چند لايه71
شبکههايي که از يک نرون ساخته شدهاند داراي محدوديتهايي ميباشند .اين شبکهها توانايي پيادهسازي توابع غيرخطي را ندارند .به عنوان مثال توسط اين شبکهها نميتوان تابع XOR را پيادهسازي نمود .براي حل اين مشکل شبکههاي ديگري پيشنهاد میشود که در اینجا به يکي از آنان که بيشترين کاربرد را دارد و در این تحقیق نیز از آن استفاده شده است، اشاره میشود.
مدل عمومي شبکههاي پرسپترون، شبکه جلو رونده(پيش خور)72 با روال تعليم انتشار به عقب73 است. شبکههاي جلو رونده شبکههايي هستند که وروديهاي لايه اول نرونهاي آن به لايههاي بعدي متصل بوده و در هر سطح اين مسئله صادق بوده تا به لايه خروجي برسد .روال انتشار به عقب بدين معني است که پس از مشخص شدن خروجي شبکه، ابتدا وزنهاي لايه آخر تصحيح شده و بعد به ترتيب اوزان لايههاي قبلي تصحيح ميشوند. شبکههاي پرسپترون از يک لايه ورودي، تعدادي لايه پنهان و يک لايه خروجي تشکيل شده است .
در اين شبکهها شرايط زير وجود دارد :
نرونهاي هر لايه تنها به نرونهاي لايه بعدي متصل ميباشند.
هر نرون به تمامي نرونهاي لايه بعد متصل است.
نرونهاي لايه ورودي عملي را انجام نميدهند و اوزان آنها ثابت و برابر يک ميباشد.
اين نرونها(نرونهاي لايه ورودي) فاقد تابع فشرده سازي ميباشند.
انتشار عملگر رو به جلو است.
تمامي نرونها به غير از لايه ورودي جمعکننده بوده و هر نرون ميتواند تابع فشردهسازي مستقلي داشته باشد.
هر نرون ميتواند داراي تورش مستقل باشد.
آموزش شبكه به روش پس انتشار خطا
به طور كلي شبكههاي عصبي مصنوعي از لحاظ يادگيري بر دو دستهاند:
شبكههاي با وزن ثابت؛
شبكههاي با وزن متغير(شبكههاي يادگيرنده)؛
خود شبكههاي يادگيرنده نيز به دو دستهاند:
شبكههاي يادگيرنده با سرپرست74؛
شبكههاي يادگيرنده بدون سرپرست75؛
در شبكههاي باسرپرست، در فاز آموزش از نمونههايي استفاده ميگردد كه خروجي ايدهآل(مطلوب) متناظر با آنها از پيش موجود میباشد. به عبارت ديگر در اينگونه شبكهها، نمونههاي داده ورودي، برچسب دارند.
در شبكههاي بدون سرپرست، بر اساس يك معيار(مثلاً فاصله) و بر اساس نوعي رقابت، خروجي مورد نظر در كلاس جداگانه قرار ميگيرد. با توجه به اين كه شبكه عصبي، مدل سادهشده اعصاب بدن است، درست به مانند آنها قابليت يادگيري دارد. به عبارت ديگر، شبكه با استفاده از اطلاعاتي كه از ورودي و توسط سرپرست خود دريافت ميكند، قادر به فراگيري روند موجود در الگوهاست. لذا به طور مشابه با انسان، روند يادگيري در شبكه عصبي نيز از مدلهاي انساني الهام گرفته است بدين صورت كه مثالهاي بسياري را به دفعات بايستي به شبكه ارائه نمود تا بتواند با تغيير وزنهاي شبكه، خروجي مورد نظر را دنبال كند.
به منظور آموزش شبكه و اصلاح وزنها تا رسيدن به يك خطاي معنادار، روشهاي بسيار زيادي وجود دارد. يكي از مشهورترين اين روشها، الگوريتم پس انتشار خطا76 است كه در ادامه توضيح داده ميشود.
الگوريتم پس انتشار خطا
اين الگوريتم كه در سال 1986 توسط روملهارت و مككليلاند پيشنهاد گرديد، در شبكههاي عصبي پيشخور(جلو رونده)77 مورد استفاده قرار ميگيرد. پيشخور(جلو رونده) بودن به اين معنا است كه نرونهاي مصنوعي در لايههاي متوالي قرار گرفتهاند و خروجي(سيگنال) خود را رو به جلو میفرستند. واژه پسانتشار نيز به معناي اين است كه خطاها به سمت عقب در شبكه تغذيه ميشوند تا وزنها را اصلاح كنند و پس از آن، مجدداً ورودي مسير پيشسوي خود تا خروجي را تكرار كند. روش پس انتشار خطا از روشهاي با سرپرست است به اين مفهوم كه نمونههاي ورودي برچسب خوردهاند و خروجي مورد انتظار هر يك از آنها از پيش دانسته است. لذا خروجي شبكه با اين خروجيهاي ايدهآل مقايسه شده و خطاي شبكه محاسبه ميگردد. در اين الگوريتم ابتدا فرض بر اين است كه وزنهاي شبكه به طور تصادفي انتخاب شدهاند. در هر گام خروجي شبكه محاسبه شده و بر حسب ميزان اختلاف آن با خروجي مطلوب، وزنها تصحيح ميگردند تا در نهايت اين خطا، مينيمم شود. در الگوريتم پس انتشار خطا، تابع تحريك هر عصب به صورت جمع وزندار وروديهاي مربوط به آن عصب در نظر گرفته ميشود. بدين ترتيب با فرض اين كه w وزنهاي متناظر بين لايه ورودي و لايه بعد باشد ميتوان نوشت:
(3 8)
A_j (x ̅,w ̅ )=∑_(i=0)^n▒〖x_i w_ji 〗
به وضوح ميتوان ديدكه خروجي تابع تحريك عصب فقط به ورودي و وزنهاي متناظر بستگي دارد. با فرض اينكه تابع خروجي، سيگموئيد باشد ميتوان خروجي عصب j ام را به صورت زير نوشت:
(3 9)
O_j (x ̅,w ̅ )=sgm(A_j (x ̅,w ̅ ))=1/(1+e^(A_j (x ̅,w ̅ ) ) )
آنچنان كه پيش از اين نيز بيان شد، هدف فرايند آموزش، رسيدن به خروجي مطلوب(يا نزديك به مطلوب) است. بدين ترتيب ابتدا بايد تابع خطاي هر نرون را تعريف كرد. اين خطا از اختلاف خروجي واقعي شبكه و خروجي مورد انتظار به صورت زير به دست ميآيد:
(3 10)
E_j (x ̅,w ̅,d_j )=〖(O_j (x ̅,w ̅ )-d_j)〗^2
انتخاب مربع تفاضل بين خروجي واقعي(O_j) و خروجي مطلوب(d_j) از چندين جنبه قابل بحث است:
اولا:ً با استفاده از توان دوم، مقدار خطا همواره مثبت خواهد بود؛
ثانياً: اگر قدرمطلق اختلاف بين خروجي واقعي و مطلوب از يک بيشتر باشد، توان دوم منجر به بزرگتر شدن اين عدد ميشود و بالعكس اگر قدرمطلق اختلاف بين خروجي واقعي و مطلوب از يک كمتر باشد، توان دوم منجر به كوچكتر شدن آن ميگردد. بر اين اساس ميتوان خطاي كلي شبكه را به فرم مجموع خطاي تكتك نرونهاي لايه خروجي نوشت. لذا داريم:
(3 11)
E(x ̅,w ̅,d ̅ )=∑_j▒〖E_j (x ̅,w ̅,d_j ) 〗=∑_j▒〖(O_j (x ̅,w ̅ )-d_j)〗^2
روند شبيه سازي مسائل
به منظور شبيهسازي يك طبقهبندي مسئله با استفاده از شبكههاي عصبي به روش باسرپرست(یعنی با فرض در اختيار داشتن دادههاي مطلوب) اولين كار انتخاب ابعاد شبكه است. در لايه ورودي بايد به تعداد ابعاد هر الگوي ورودي، نرون قرار دهيم. بنابراين اندازه لايه ورودي را بعد دادههاي ورودي تعيين ميكند. در لايه خروجي نيز به وضوح بايد به تعداد كلاسها، نرون داشته باشيم. در حالت ايدهآل، با آمدن ورودي مربوط به يك كلاس انتظار داريم نرون مربوط به آن كلاس مقدار یک و مابقي نرونها مقدار صفر را به خود بگيرند. امّا در عمل با توجه به تابع سيگموئيد مورد استفاده،
