وظیفه شبکههای عصبی، یادگیری است. تقریباً چیزی شبیه یادگیری یک کودک خردسال. یادگیری در شبکههای عصبی رایج به شکل یادگیری تحت نظارت[۵۵] است. نوع دیگر یادگیری یعنی یادگیری بدون نظارت[۵۶] هم توسط شبکههای عصبی شبیهسازی شده است و کاربردهای کمتری دارد.
مفهوم شبکه
یکی از روشهای کارآمد در حل مسائل پیچیده، شکستن آن به زیرمسئلههای سادهتر است که هر کدام از این زیر بخشها به نحو سادهتری قابل درک و توصیف باشند. در حقیقت یک شبکه، مجموعهای از این ساختارهای ساده است که در کنار یکدیگر سیستم پیچیده نهایی را توصیف میکنند.
شبکهها انواع مختلفی دارند امّا همگی آنها از دو مؤلفه تشکیل میشوند:
مجموعهای از گرهها؛
هر گره در حقیقت واحد محاسباتی شبکه است که ورودیها را گرفته و بر روی آن پردازش انجام میدهد تا خروجی به دست آید. پردازش انجام شده توسط گره، میتواند از سادهترین نوع پردازشها نظیر جمعکردن ورودیها تا پیچیدهترین محاسبات را شامل شود. در حالت خاص، یک گره میتواند خود، شامل یک شبکه دیگر باشد.
اتصالات بین گرهها؛
این اتصالات نحوه گذر اطلاعات بین گرهها را مشخص میکند. در حالت کلی اتصالات میتوانند تکسویه[۵۷] یا دوسویه[۵۸] باشند. تعامل بین گرهها از طریق این اتصالات، سبب بروز یک رفتار کلی از سوی شبکه میگردد که چنین رفتاری به تنهایی در هیچ یک از اِلمانهای شبکه دیده نمیشود. جامع بودن این رفتار کلی بر عملکرد موجود در هر گره، سبب تبدیل شبکه به یک ابزار توانمند میشود. به عبارت دیگر، مجموعهای ساده از اِلمانها وقتی در قالب یک شبکه باشند میتوانند رفتاری از خود بروز دهند که هیچ یک از آن اِلمانها به تنهایی قادر به بروز چنین مشخصهای نبود.
شبکه عصبی مصنوعی
آنچنان که بیان شد انواع مختلفی از شبکهها وجود دارد. در این بین شبکهای وجود دارد که گره را به عنوان یک نرون مصنوعی در نظر میگیرد. در اصطلاح، این چنین شبکههایی را شبکه عصبی مصنوعی[۵۹] یا به اختصار ANNمینامند.
میتوان یک نرون عصبی انسان و عملکرد آن را توسط مدلهای ریاضی، مدلسازی کرد. شکل(۳-۱) ساختار یک نرون طبیعی را نشان میدهد.
شکل ۳‑ ۱ ساختار نرون طبیعی انسان
هر نرون طبیعی از سه قسمت اصلی تشکیل شده است :
بدنه سلول[۶۰]؛
دندریت[۶۱]؛
آکسون[۶۲]؛
دندریتها به عنوان مناطق دریافت سیگنالهای الکتریکی، شبکههایی تشکیلیافته از فیبرهای سلولی هستند که دارای سطح نامنظم و شاخههای انشعابی بیشمار میباشند. دندریتها سیگنالهای الکتریکی را به هسته سلول منتقل میکنند. بدنه سلول انرژی لازم را برای فعالیت نرون فراهم کرده و بر روی سیگنالهای دریافتی عمل میکند، که با یک عمل ساده جمع و مقایسه با یک سطح آستانه مدل میگردد. آکسون بر خلاف دندریتها از سطحی هموارتر و تعداد شاخههای کمتری برخوردار میباشد .آکسون طول بیشتری دارد و سیگنالهای الکتروشیمیایی دریافتی از هسته سلول را به نرونهای دیگر منتقل میکند. محل تلاقی یک آکسون از یک سلول به دندریتهای سلولهای دیگر را سیناپس میگویند .توسط سیناپسها ارتباطات مابین نرونها برقرار میشود. به فضای مابین آکسون و دندریتها فضای سیناپسی گویند. در حقیقت دندریتها به عنوان ورودی نرون و آکسون به عنوان خروجی و فضای سیناپسی محل اتصال این دو میباشد. زمانی که سیگنال عصبی از آکسون به نرونها و یا عناصر دیگر بدن مثل ماهیچهها میرسد، باعث تحریک آنها میشود. نرونها از هر یک از اتصالات ورودی خود یک ولتاژ کم دریافت میکند(توسط سیگنال عصبی ورودی) و آنها را با هم جمع میزند .اگر این حاصل جمع به یک مقدار آستانه رسید اصطلاحاً نرون آتش میکند و روی آکسون خود یک ولتاژ خروجی ارسال میکند که این ولتاژ به دندریتهایی که به این آکسون متصلند رسیده و باعث یک سری فعل و انفعالهای شیمیایی در اتصالات سیناپسی میشود و میتواند باعث آتش کردن نرونهای دیگر شود .تمامی فعالیتهای مغزی انسان توسط همین آتش کردنها انجام میشود.
شکل(۳-۲) یک نرون عصبی مصنوعی را نشان میدهد.
شکل ۳‑ ۲ ساختار یک نرون مصنوعی
سیگنالهای ورودی تا معادل سیگنالهای عصبی ورودی و وزنهای تا معادل مقادیر اتصالات سیناپسی ورودیهای نرون میباشند که جمعاً ورودی نرون را تشکیل داده است.
مدلسازی شبکه عصبی
در یک شبکه عصبی نمونه، اطلاعات و پارامترهای ورودی، هرکدام به شکل یک سیگنال الکتریکی تحریکی به کانالهای ورودی مدل ریاضی سلول عصبی وارد میشوند. مدل ریاضی یک سلول عصبی را یک پرسپترون[۶۳] مینامند. هر یک از کانالهای ورودی(شبیه اتصالات دندریتها) دارای یک ضریب عددی هستند که وزن سیناپسی نامیده میشود. شدت تحریک الکتریکی در این ضریب ضرب میشود و به جسم سلولی میرسد. اگر مجموع تحریکات رسیده شده به جسم سلولی کافی باشد، نرون شلیک میکند و در مسیرهای خروجی(شبیه آکسونها) جریان الکتریکی ثابتی را ایجاد میکند. تحریکات لایه ورودی[۶۴] سلولها به یک یا چند لایه واسط میرود که به نام لایههای مخفی[۶۵] موسوم هستند. ادامه جریان تحریکات در این لایهها(توسط همان وزنهای سیناپسی) طوری هدایت میشود که پیچیدگیهای تأثیرات جریان ورودی را شبیهسازی میکند. سپس تحریکات به لایه خروجی[۶۶] میروند که هدف نهایی ما است.
به هنگام مدل کردن نرونها، از پیچیدگیهای آنها صرف نظر میشود و تنها به مفاهیم پایهای بها داده میشود، چرا که در غیر این صورت رویکرد مدلسازی بسیار دشوار خواهد شد. در یک نگاه ساده، مدل یک عصب باید شامل ورودیهایی باشد که در نقش سیناپس انجام وظیفه کنند. این ورودیها در وزنهایی ضرب میشوند تا قدرت سیگنال را تعیین کنند. نهایتاً یک عملگر ریاضی تصمیمگیری میکند که آیا نرون فعال شود یا خیر و اگر جواب مثبت باشد، میزان خروجی را مشخص میسازد. بنابراین شبکه عصبی مصنوعی با بهره گرفتن از مدل ساده شده عصب واقعی به پردازش اطلاعات میپردازد. با توجه به این توضیحات، میتوان مدل سادهای برای توصیف یک نرون(یک گره در شبکه عصبی مصنوعی) پیشنهاد کرد. جدای از سادهسازیهای اعمال شده، تفاوت اصلی این مدل با واقعیت در این است که در شبکه واقعی، ورودیها سیگنالهای زمانی هستند حال آن که در این مدل، اعداد حقیقی ورودیاند.
در مدل ارائه شده در شکل(۳-۲)، تنوعهای بسیاری وجود دارد. از جمله این که وزنهای یک شبکه عصبی، که مقدار خروجی را منتقل میکنند، میتوانند مثبت یا منفی باشند. از طرفی، توابع مورد استفاده برای آستانهگذاری میتوانند بسیار متنوع باشند. از جمله مشهورترین این توابع میتوان به تابعهایی نظیر سیگموئید[۶۷]، آرکتانژانت[۶۸] و آرکسینوس[۶۹] اشاره کرد. این توابع باید پیوسته و هموار بوده و مشتقپذیر باشند. همچنین تعداد گرههای ورودی میتواند متغیر باشد. البته با زیاد شدن تعداد این گرهها، به وضوح تعیین وزنها را با مشکل روبرو میکند. لذا باید به دنبال روشهایی برای حل این موضوع باشیم. روند تعیین وزنهای بهینه و تنظیم مقادیر آنها عمدتاً به صورت بازگشتی انجام میشود. بدین منظور شبکه را با بهره گرفتن از قواعد و دادهها آموزش داده و با بهره گرفتن از قابلیت یادگیری شبکه، الگوریتمهای متنوعی پیشنهاد میگردد که همگی سعی در نزدیک کردن خروجی تولید شده توسط شبکه به خروجی ایدهآل و مورد انتظار دارند.
شبکههای پرسپترون چند لایه[۷۰]
شبکههایی که از یک نرون ساخته شدهاند دارای محدودیتهایی میباشند .این شبکهها توانایی پیادهسازی توابع غیرخطی را ندارند .به عنوان مثال توسط این شبکهها نمیتوان تابع XOR را پیادهسازی نمود .برای حل این مشکل شبکههای دیگری پیشنهاد میشود که در اینجا به یکی از آنان که بیشترین کاربرد را دارد و در این تحقیق نیز از آن استفاده شده است، اشاره میشود.
مدل عمومی شبکههای پرسپترون، شبکه جلو رونده(پیش خور)[۷۱] با روال تعلیم انتشار به عقب[۷۲] است. شبکههای جلو رونده شبکههایی هستند که ورودیهای لایه اول نرونهای آن به لایههای بعدی متصل بوده و در هر سطح این مسئله صادق بوده تا به لایه خروجی برسد .روال انتشار به عقب بدین معنی است که پس از مشخص شدن خروجی شبکه، ابتدا وزنهای لایه آخر تصحیح شده و بعد به ترتیب اوزان لایههای قبلی تصحیح میشوند. شبکههای پرسپترون از یک لایه ورودی، تعدادی لایه پنهان و یک لایه خروجی تشکیل شده است .
در این شبکهها شرایط زیر وجود دارد :
نرونهای هر لایه تنها به نرونهای لایه بعدی متصل میباشند.
هر نرون به تمامی نرونهای لایه بعد متصل است.
نرونهای لایه ورودی عملی را انجام نمیدهند و اوزان آنها ثابت و برابر یک میباشد.
این نرونها(نرونهای لایه ورودی) فاقد تابع فشرده سازی میباشند.
انتشار عملگر رو به جلو است.
تمامی نرونها به غیر از لایه ورودی جمعکننده بوده و هر نرون میتواند تابع فشردهسازی مستقلی داشته باشد.
هر نرون میتواند دارای تورش مستقل باشد.
آموزش شبکه به روش پس انتشار خطا
به طور کلی شبکههای عصبی مصنوعی از لحاظ یادگیری بر دو دستهاند:
شبکههای با وزن ثابت؛
شبکههای با وزن متغیر(شبکههای یادگیرنده)؛
خود شبکههای یادگیرنده نیز به دو دستهاند:
شبکههای یادگیرنده با سرپرست[۷۳]؛
شبکههای یادگیرنده بدون سرپرست[۷۴]؛
در شبکههای باسرپرست، در فاز آموزش از نمونههایی استفاده میگردد که خروجی ایدهآل(مطلوب) متناظر با آنها از پیش موجود میباشد. به عبارت دیگر در اینگونه شبکهها، نمونههای داده ورودی، برچسب دارند.
در شبکههای بدون سرپرست، بر اساس یک معیار(مثلاً فاصله) و بر اساس نوعی رقابت، خروجی مورد نظر در کلاس جداگانه قرار میگیرد. با توجه به این که شبکه عصبی، مدل سادهشده اعصاب بدن است، درست به مانند آنها قابلیت یادگیری دارد. به عبارت دیگر، شبکه با بهره گرفتن از اطلاعاتی که از ورودی و توسط سرپرست خود دریافت میکند، قادر به فراگیری روند موجود در الگوهاست. لذا به طور مشابه با انسان، روند یادگیری در شبکه عصبی نیز از مدلهای انسانی الهام گرفته است بدین صورت که مثالهای بسیاری را به دفعات بایستی به شبکه ارائه نمود تا بتواند با تغییر وزنهای شبکه، خروجی مورد نظر را دنبال کند.
به منظور آموزش شبکه و اصلاح وزنها تا رسیدن به یک خطای معنادار، روشهای بسیار زیادی وجود دارد. یکی از مشهورترین این روشها، الگوریتم پس انتشار خطا[۷۵] است که در ادامه توضیح داده میشود.
الگوریتم پس انتشار خطا
این الگوریتم که در سال ۱۹۸۶ توسط روملهارت و مککلیلاند پیشنهاد گردید، در شبکههای عصبی پیشخور(جلو رونده)[۷۶] مورد استفاده قرار میگیرد. پیشخور(جلو رونده) بودن به این معنا است که نرونهای مصنوعی در لایههای متوالی قرار گرفتهاند و خروجی(سیگنال) خود را رو به جلو میفرستند. واژه پسانتشار نیز به معنای این است که خطاها به سمت عقب در شبکه تغذیه میشوند تا وزنها را اصلاح کنند و پس از آن، مجدداً ورودی مسیر پیشسوی خود تا خروجی را تکرار کند. روش پس انتشار خطا از روشهای با سرپرست است به این مفهوم که نمونههای ورودی برچسب خوردهاند و خروجی مورد انتظار هر یک از آنها از پیش دانسته است. لذا خروجی شبکه با این خروجیهای ایدهآل مقایسه شده و خطای شبکه محاسبه میگردد. در این الگوریتم ابتدا فرض بر این است که وزنهای شبکه به طور تصادفی انتخاب شدهاند. در هر گام خروجی شبکه محاسبه شده و بر حسب میزان اختلاف آن با خروجی مطلوب، وزنها تصحیح میگردند تا در نهایت این خطا، مینیمم شود. در الگوریتم پس انتشار خطا، تابع تحریک هر عصب به صورت جمع وزندار ورودیهای مربوط به آن عصب در نظر گرفته میشود. بدین ترتیب با فرض این که w وزنهای متناظر بین لایه ورودی و لایه بعد باشد میتوان نوشت: