چکیده: در سالیان اخیر شاهد حرکتی مستمر از تحقیقات صرفا تئوری به تحقیقات کاربردی بخصوص در زمینه پردازش اطلاعات ، برای مسائلی که برای آنها راه حلی موجود نیست و یا براحتی قابل حل نیستند بوده ایم.
با عنایت به این امر ، علاقه ای فزاینده ای در توسعه تئوریکی سیستمهای دینامیکی هوشمند مدل آزاد[2] -که مبتنی بر داده های تجربی میباشند – ایجاد شده است.
ANN ها جزء این دسته از سیستمهای مکانیکی قرار دارند که با پردازش روی داده های تجربی ، دانش یا قانون نهفته در ورای داده ها را به ساختار شبکه منتقل میکنند.به همین خاطر به این سیستمها هوشمند گفته میشود ، زیرا بر اساس محاسبات روی داده های عددی یا مثالها ، قوانین کلی را فرا میگیرند.این سیستمها در مدلسازی ساختار نرو-سیناپتیکی[3] مغز بشر میکوشند.
البته این سخن که" ANN ها در مدلسازی مغز بشر میکوشند" اغراق آمیز میباشد.دانشمندان هرچه بیشتر در مورد مغز بشر تحقیق میکنند و می آموزند ، بیشتر در می یابند که مغز بشر دست نیافتنی است.در حقیقت در مورد مغز و ساختار سیستم عصبی انسان اطلاعات زیادی بدست آمده است.
ولی پیاده سازی ساختاری با پیچیدگی مغز انسان بر اساس اطلاعاتی و تکنولوژی که امروزه وجود دارد غیر ممکن میباشد.
ما میتوانیم یک نرون عصبی انسان و عملکرد آنرا را توسط مدل های ریاضی ، مدلسازی کنیم.شکل1 ساختار یک نرون طبیعی را نشان میدهد.
کلمات کلیدی: شبکه عصبی، شبکه پرسپترون، معماری شبکه، شبکه بی سیم مقدمه: از قرن نوزدهم به طور همزمان اما جداگانه از سویی نروفیزیولوزیستها سعی کردند سامانه یادگیری و تجزیه و تحلیل مغز را کشف کنند و از سوی دیگر ریاضیدانان تلاش کردند تا مدل ریاضی بسازند که قابلیت فراگیری و تجزیه و تحلیل عمومی مسائل را دارا باشد.
اولین کوششها در شبیه سازی با استفاده از یک مدل منطقی توسط مک کلوک و والتر پیتز انجام شد که امروزه بلوک اصلی سازنده اکثر شبکههای عصبی مصنوعی است.
این مدل فرضیههایی در مورد عملکرد نورونها ارائه میکند.
عملکرد این مدل مبتنی بر جمع ورودیها و ایجاد خروجی است.
چنانچه حاصل جمع ورودیها از مقدار آستانه بیشتر باشد اصطلاحا نورون برانگیخته میشود.
نتیجه این مدل اجرای توابع ساده مثل AND و OR بود.
نه تنها نروفیزیولو?یستها بلکه روان شناسان و مهندسان نیز در پیشرفت شبیه سازی شبکههای عصبی تاثیر داشتند.
در سال 1958 شبکه پرسپترون توسط روزنبلات معرفی گردید.
این شبکه نظیر واحدهای مدل شده قبلی بود.
پرسپترون دارای سه لایه به همراه یک لایه وسط که به عنوان لایه پیوند شناخته شده میباشد، است.
این سامانه میتواند یاد بگیرد که به ورودی داده شده خروجی تصادفی متناظر را اعمال کند.
سامانه دیگر مدل خطی تطبیقی نورون میباشد که در سال 1960 توسط ویدرو و هاف (دانشگاه استنفورد) به وجود آمد که اولین شبکههای عصبی به کار گرفته شده در مسائل واقعی بودند Adalaline (Adaptive Linear Element) یک دستگاه الکترونیکی بود که از اجزای سادهای تشکیل شده بود، روشی که برای آموزش استفاده میشد با پرسپترون فرق داشت.در سال 1969 میسکی و پاپرت کتابی نوشتند که محدودیتهای سامانههای تک لایه و چند لایه پرسپترون را تشریح کردند.
نتیجه این کتاب پیش داوری و قطع سرمایه گذاری برای تحقیقات در زمینه شبیه سازی شبکههای عصبی بود.
آنها با طرح اینکه طرح پرسپترون قادر به حل هیچ مساله جالبی نمیباشد، تحقیقات در این زمینه را برای مدت چندین سال متوقف کردند.
با وجود اینکه اشتیاق عمومی و سرمایه گذاریهای موجود به حداقل خود رسیده بود، برخی محققان تحقیقات خود را برای ساخت ماشینهایی که توانایی حل مسائلی از قبیل تشخیص الگو را داشته باشند، ادامه دادند.
از جمله گراسبگ که شبکهای تحت عنوان Avalanch را برای تشخیص صحبت پیوسته و کنترل دست ربات مطرح کرد.
همچنین او با همکاری کارپنتر شبکههای ART (Adaptive Resonance Theory) را بنانهادند که با مدلهای طبیعی تفاوت داشت.
اندرسون و کوهونن نیز از اشخاصی بودند که تکنیکهایی برای یادگیری ایجاد کردند.
ورباس در سال 1974 شیوه آموزش پس انتشار خطا را ایجاد کرد که یک شبکه پرسپترون چندلایه البته با قوانین نیرومندتر آموزشی بود.
پیشرفتهایی که در سال 1970 تا 1980 بدست آمد برای جلب توجه به شبکههای عصبی بسیار مهم بود.
شبکه های عصبی مصنوعی (Artificial Neural Network) الگویی برای پردازش اطلاعات می باشند که با تقلید از شبکه های عصبی بیولو?یکی مثل مغز انسان ساخته شده اند.عنصر کلیدی این الگو ساختار جدید سیستم پردازش اطلاعات آن می باشد و از تعداد زیادی عناصر (نرون) با ارتباطات قوی داخلی که هماهنگ با هم برای حل مسائل مخصوص کار می کنند تشکیل شده اند.
شبکه های عصبی مصنوعی با پردازش روی داده های تجربی، دانش یا قانون نهفته در ورای داده ها را به ساختار شبکه منتقل می کند که به این عمل یادگیری می گویند.
اصولاً توانایی یادگیری مهمترین وی?گی یک سیستم هوشمند است.
سیستمی که بتواند یاد بگیرد منعطف تر است وساده تر برنامه ریزی میشود، بنابراین بهتر میتواند در مورد مسایل و معادلات جدید پاسخگو باشد.انسانها از زمانهای بسیار دور سعی بر آن داشتند که بیوفیزیولو?ی مغز را دریابند چون همواره مسئله هوشمندی انسان و قابلیت یادگیری ،تعمیم،خلاقیت،انعطاف پذیری و پردازش موازی در مغز برای بشر جالب بوده و بکارگیری این قابلیتها در ماشینها بسیار مطلوب می نمود.روشهای الگوریتمیک برای پیاده سازی این خصایص در ماشینها مناسب نمی باشند در نتیجه می بایست روشها مبتنی بر همان مدلهای بیولو?یکی باشد.ANN درست مثل انسانها با استفاده از مثالها آموزش می بیند، همانطور که یک بچه با دیدن انواع مختلف از یک حیوان قادر به تشخیص آن می باشد.
فصل اول معرفی شبکه های عصبی مصنوعی 1-1-معرفی در سالیان اخیر شاهد حرکتی مستمر از تحقیقات صرفا تئوری به تحقیقات کاربردی بخصوص در زمینه پردازش اطلاعات ، برای مسائلی که برای آنها راه حلی موجود نیست و یا براحتی قابل حل نیستند بوده ایم.
ولی پیاده سازی ساختاری با پیچیدگی مغز انسان بر اساس اطلاعاتی و تکنولوژی که امروزه وجود دارد غیر ممکن میباشد.ما میتوانیم یک نرون عصبی انسان و عملکرد آنرا را توسط مدل های ریاضی ، مدلسازی کنیم.شکل1 ساختار یک نرون طبیعی را نشان میدهد.
شکل 1-1- ساختار نرون طبیعی انسان نرون طبیعی از سه قسمت اصلی تشکیل شده است : 1.
بدنه سلول (Soma) 2.
دندریت(Dendrite) 3.
اکسون (Axon) دندریتها به عنوان مناطق دریافت سیگنالهای الکتریکی ، شبکه هایی تشکیل یافته از فیبرهای سلولی هستند که دارای سطح نامنظم و شاخه های انشعابی بیشمار میباشند .دندریتها سیگنالهای الکتریکی را به هسته سلول منتقل میکنند.
بدنه سلول انرژی لازم را برای فعالیت نرون فراهم کرده و برروی سیگنالهای دریافتی عمل میکند ، که با یک عمل ساده جمع و مقایسه با یک سطح آستانه مدل میگردد.
اکسون بر خلاف دندریتها از سطحی هموارتر و تعداد شاخه های کمتری برخوردار میباشد.
اکسون طول بیشتری دارد و سیگنالهای الکتروشیمیایی دریافتی از هسته سلول را به نرونهای دیگر منتقل میکند.محل تلاقی یک اکسون از یک سلول به دندریتهای سلولهای دیگر را سیناپس میگویند.توسط سیناپسها ارتباطات مابین نرونها برقرار میشود.به فضای مابین اکسون و دندریتها فضای سیناپسی گویند.در حقیقت دندریتها به عنوان ورودی نرون و اکسون به عنوان خروجی و فضای سیناپسی محل اتصال ایندو میباشد.
زمانیکه سیگنال عصبی از اکسون به نرونها و یا عناصر دیگر بدن مثل ماهیچه ها میرسد ، باعث تحریک آنها میشود.نرونها از هریک از اتصالات ورودی خود یک ولتاژ کم دریافت میکند ( توسط سیگنال عصبی ورودی ) و آنها را با هم جمع میزند.
اگر این حاصل جمع به یک مقدار آستانه رسید اصطلاحا نرون آتش میکند و روی اکسون خود یک ولتاژ خروجی ارسال میکند که این ولتاژ به دندریتهایی که به این اکسون متصلند رسیده و باعث یکسری فعل و انفعالهای شیمیایی در اتصالات سیناپسی میشود و میتواند باعث آتش کردن نرونهای دیگر شود.
تمامی فعالیتهای مغزی انسان توسط همین اتش کردنها انجام میشود.
دندریتها به عنوان مناطق دریافت سیگنالهای الکتریکی ، شبکه هایی تشکیل یافته از فیبرهای سلولی هستند که دارای سطح نامنظم و شاخه های انشعابی بیشمار میباشند .دندریتها سیگنالهای الکتریکی را به هسته سلول منتقل میکنند.
1-1-1- ایده اصلی شبکههای عصبی : یکی از مهمترین تفاوتهای حافظه انسان با حافظه کامپیوتر در نوع آدرس دهی این دو نوع حافظه میباشد.
در حافظه کامپیوتر اساس کار بر پایه آدرس خانههای حافظه یا آدرس اطلاعات بر روی حافظه دائم میباشد.
به عنوان مثال برای دستیابی به یک تصویر یا متن خاص، باید آدرس حافظه یا فایل مربوط به آن تصویر یا متن را داشته باشید.
اما با داشتن خود تصویر یا متن نمیتوانید به سادگی آدرس حافظه مربوطه را بیابید (البته به این معنی که این کار با یک قدم قابل انجام نیست، وگرنه میتوانید تصویر یا متن مورد نظر را با تمام موارد موجود در حافظه مقایسه کرده و در صورت تطبیق آدرس را بیابید.
ناگفته پیداست که انجام چنین کاری بسیار زمان بر و پر هزینه میباشد).
اما به سازوکار همین عمل در ذهن انسان دقت کنید.
با دیدن یک تصویر ناقص اغلب بلافاصله کامل آنرا به خاطر میآورید یا با دیدن تصویر یک شخص سریعا نام او را میگویید، یا با خواندن یک متن سریعا تمامی مطالب مربوط به آن را به ذهن میآورید.
در واقع ذهن انسان یک نوع حافظه آدرسدهی شده بر اساس محتواست (Content Addressable Memory).
همانگونه که از این نام مشخص است در این نوع حافظه، با دادن محتوای یک خانه حافظه، بلافاصله آدرس آن به عنوان خروجی داده میشود.
حال ببینیم که داشتن چنین حافظهای اصولا به چه کار میآید.
فرض کنید که حرف "A" قرار است توسط ماشین از میان مجموعهای از حروف شناسایی شود.
در حالت بسیار ساده فرض بر این است که شکل تمامی حروف الفبا در حافظه ماشین موجود است.
بنابراین ماشین خیلی ساده با مقایسه ورودی فعلی با اشکال موجود در حافظه تشخیص میدهد که حرف ورودی جاری "A" هست یا خیر.
اما همانگونه که پیشتر گفتیم در صورتی که الگوهای حروف موجود در حافظه بسیار زیاد باشد، مقایسه ورودی با تکتک الگوهای ذخیره شده عملا بسیار زمان بر است و مقدور نیست، بنابراین نیاز به حافظه آدرسدهی شده بر اساس محتوا خواهیم داشت به این ترتیب که این حافظه الگوی جاری را گرفته و بلافاصله پاسخ میدهد که آیا این الگو در حافظه موجود است یا خیر.
اندکی دقت در مثال اخیر نشان دهنده پیچیدگی مسائلی از این دست است.
تشخیص حرف "A" حتی به صورت چاپی هم توسط ماشین اساسا کار سادهای نیست.
دقت کنید به تنوع اشکال این حرف، سایز، خمیدگیها، دقت چاپگرها، ....
و پیچیدگی مسئله، زمانی چند برابر میشود که کار به تشخیص دستنویس حروف کشیده شود.
حال اگر حافظه آدرسدهی شده بر اساس محتوای ما، دارای این توانایی باشد که حتی اگر شکل حرف "A" کمی هم دچار اعوجاج شده باشد باز هم آنرا تشخیص دهد، حل مسئله تا حدود زیادی سادهتر شده است.
شبکههای عصبی دارای چنین خصلتی هستند.
حال ببینیم که ایده اصلی عملکرد این شبکهها چگونه است؟
هاپفیلد (HopField) در 1982 طرح اصلی حافظهای را ارائه کرد که دارای خصوصیات فوقالذکر باشد.
این حافظه یا شبکه عصبی دارای دو عنصر گره و یال میباشد.
هر گره دارای دو وضعیت فعال و غیرفعال است(صفر یا یک) و هر یال نیز دارای یک وزن میباشد (شکل زیر).
یالهای با وزن مثبت بین دو گره تا گره فعال دیگری را تحریک میکنند و یالهای با وزن منفی بین دو گره، گره فعال دیگری را غیر فعال میسازند.
نحوه عملکرد شبکه بدین صورت است که ابتدا یک گره به تصادف انتخاب میشود.
اگر یک یا بیشتر از همسایههای آن گره فعال بودند جمع وزندار یالهای منتهی به آن گرهها حساب میشود.
اگر این جمع مثبت بود گره فعال میشود و در غیر این صورت گره مذکور غیرفعال باقی خواهد ماند.
سپس مجددا یک گره دیگر به تصادف انتخاب شده و همین عملیات آنقدر تکرار میشود تا شبکه به یک حالت پایدار برسد.
بعنوان مثال اگر شبکه شکل 2 شروع به کار کند گره پایین سمت چپ گره بالایی خود را فعال خواهد کرد و این گره نیز به نوبه خود خواهد کوشید تا گره بالاتر از خود را فعال کند اما گره بالایی به دلیل سیگنال توقیفی (Inhibitory) ارسالی از گره بالای سمت راست تحریک نخواهد شد و این سیکل همینطور تا رسیدن به حالت پایدار ادامه مییابد.
نکته در اینجا است که این شبکه بیش از چهار حالت پایدار ندارد (شکل زیر).
یعنی از هر حالت ابتدایی که شروع کنیم نهایتا شبکه به یکی از این چهار حالت میل خواهد کرد.
تز اصلی هاپفیلد نیز در واقع همین بود که از هر حالت ابتدایی و با هر وزنی از یالها که شروع کنیم، شبکه در نهایت به حالت پایدار خواهد رسید.
با دقت در کل ایده این شبکه میتوان گفت که در واقع این شبکه به صورت نوعی حافظه عمل میکند، حافظهای که این چهار الگو را در خود ذخیره کرده است.
علاوه بر این شبکه فوق یک حافظه آدرسدهی شده بر اساس محتواست.
به این معنی که اگر از یکی ازین چهار حالت به صورت ناقص شروع به کار کنیم شبکه به سوی شبیهترین حالت میل خواهد کرد و این به این معناست که شبکه قادر به شناسایی یک الگوی ناقص است.
شکل زیر نشان میدهد که این شبکه در صورتی که از الگوی ناقص سمت چپ شروع به کار کند در نهایت به الگوی کامل سمت راست خواهد رسید(به خاطر دارید که هدف ما یافتن روشی بود که ما را از شکل پر اغتشاش حرف "A" به خود آن حرف برساند).
1-2-اجزای یک شبکه عصبی 1- ورودی ها: ورودیها که بابردارX نشان داده شدهاند میتوانند خروجی سایر لایهها بوده و با آنکه به حالت خام در اولین لایه و به صورتهای ذیل باشد: الف)دادههای عددی و رقمی ب) متون ادبی، فنی و… ج) تصویر و یا شکل 2-وزن ها: میزان تاثیر ورودی x بر خروجی y توسط مشخصه وزن اندازهگیری میشود.
3-تابع جمع: در شبکههای تک نرونی ، تابع جمع در واقع خروجی مسئله را تا حدودی مشخص میکنند و در شبکههای چند نرونی نیز تابع جمع میزان سطح فعالیت نرونj در لایههای درونی را مشخص میسازد.
4-تابع تبدیل: بدیهی است که تابع جمع پاسخ مورد انتظار شبکه نیست، تابع تبدیل عصوی ضروری در شبکههای عصبی محسوب میگردد.
انواع و اقسام متفاوتی از توابع تبدیل وجود دارد که بنا به ماهیت مسئله کاربرد دارنداین تابع توسط طراح مساله انتخاب می گردد و بر اساس انتخاب الگوریتم یادگیری پارامترهای مساله (وزن ها) تنظیم می گردد.
حافظه کوتاه مدت انسان جرقه های لحظه ای الکتریکی میباشند و حافظه بلند مدت به صورت تغییرات الکتروشیمیایی در اتصالات سیناپسی ذخیره میشود که عمدتا منجر به تغییر یونها میشود.همانگونه که گفته شد ما میتوانیم توسط مفاهیم ریاضی یک نرون طبیعی را مدل کنیم.شکل 1-2 یک نرون عصبی مصنوعی را نشان میدهد.
شکل 1-2- ساختار یک نرون مصنوعی سیگنالهای ورودی تا معادل سیگنالهای عصبی ورودی و وزنهای تا معادل مقادیر اتصالات سیناپسی ورودیهای نرون میباشند که جمعا ورودی نرون را تشکیل داده است.
تابع جمع کننده تمامی عملیات هسته سلول را انجام میدهد.در مورد تابع فعال سازی (فشرده سازی) صحبت خواهد شد.
خروجی نرون توسط تابع زیر مشخص میشود: به خصوصیات زیر در مورد مغز انسان توجه کنید : محاسبات کاملا به صورت توزیع شده وموازی انجام میشود.
"یادگیری" جایگزین برنامه ریزی از قبل میشود.
در مغز انسان یک ساختار ALU مشخص وجود ندارد.
ALU ، حافظه و کنترل همگی در یک ساختار درهم تنیده شبکه ای از تعداد بسیار زیادی نرون توزیع و پخش شده است.
مغز انسان توسط یک پروسه یادگیری می آموزد که در پاسخ به یک ورودی ، چه خروجی را تولید کرده و ارسال کند.
این فرآیند یادگیری در حقیقت توسط تنظیم اتصالات سیناپسی در نرونهای طبیعی و معادل آنها در ANN ها ،یعنی تنظیم وزنهای نرونهای مصنوعی انجام میشود.
در حقیقت در طراحی یک نرون مصنوعی فقط کافیست وزنهای را مشخص کنیم تا شبکه عصبی بتواند خروجی مورد نظر را از ورودی خاص تولید کند.
متدهای مختلف یادگیری وجود دارد که میتواند بر اساس زوج مرتبهای مقدار وزنها را بدست آورد.
1-3-تعریف شبکه های عصبی مصنوعی : یک ساختار شبکه ای از تعدادی عناصر مرتبط به هم به نام نرون که هر نرون دارای ورودیها و خروجیهایی است و یک عمل نسبتا ساده و محلی را انجام میدهد.شبکه های عصبی عموما عملکرد خود را طی یک پروسه یادگیری فرا میگیرد.
شبکه های عصبی کاربردهای عمده ای در تشخیص الگو ، گروه بندی ، پیش بینی یا برون یابی و ...
دارا میباشد.
1-4-معرفی مدل نرون ساده خطی: بر اساس ایده گرفته شده از نرونهای طبیعی ، میتوان مدل نرون مصنوعی را رائه کرد که بتواند ورودیها را باهم ترکیب کرده و یک خروجی از آنها به وجود آورد.
در ساده ترین حالت نرون ورودیهای وزن دار را با هم جمع میکند.
شکل 3 یک نرون ساده خطی را نشان میدهد.
شکل 1-3- : نرون ساده خطی میتوان شبکه عصبی را به صورت یک سیستم محرک / پاسخ در نظر گرفت.
مهم اینست که بدانیم تعلیم شبکه یعنی تنظیم پارامترهای آن به نحویکه رفتار محرک / پاسخ طبق خواسته باشد.
در حین تعلیم در واقع مجهولات ما وزنها(w) میباشند.
وزنها در غالب حافظه ها عمل میکنند و نحوه تولید پاسخ را مشخص میکنند.
درصورتیکه ورودیهای و خروجیهای متناظر موجود باشد ( به این زوج ورودی و خروجی مجموعه تعلیم گفته میشود) ، میتوان وزنها را بر اساس فرمول بدست آورد.
میتوانیم برای اینکه خروجی خاصی تولید شود از یک تابع به نام تابع فشرده سازی[9]استفاده کنیم.این مسئله در شکل4 نشان داده شده است.
شکل 1-4- : مدل نرون خطی به همراه تابع فشرده سازی تابع فشرده سازی(فعال سازی) رنج وسیعی از مقادیر ورودی را به مقدار خاصی نگاشت میکند.به عنوان مثال میتوانیم هرمقدار خروجی را به مقادیر باینری 0 و 1 نگاشت کنیم.
انواع مختلفی از توابع فشرده سازی در ANNها استفاده میشود.
ولی بیشترین استفاده را تابع فشرده سازی سیگمویددارد.
ادعا میشود که فرکانس آتش نرون طبیعی به صورت تابعی شبیه سیگموید میباشد.
البته دلایل دیگری برای استفاده از سیگموید وجود دارد.
از جمله : 1.
فشرده سازی میکند.
( رنج ورودی (-∞,+∞) و خروجی [0,1] میباشد ) 2.
تقریبا خطی ، افزایشی و مشتق پذیر است.
3.
در فرم بسته قابل نمایش است.
4.
مشتق گیری از آن ساده است.
1-5-تکنیکهای تعیین پارامترهای نرون خطی : بطور کلی دو روش برای تعیین پارامترهای نرون خطی یا به عبارت دیگر مشخص کردن مقادیر وزنها وجود دارد: 1.
تعیین مستقیم 2.
روالهای تکرار شونده 1 - تعیین مستقیم : فرض کنیم که b بردار پاسخهای دلخواه میباشد.
بنابر این : بدین صورت میتوان مقادیر wرا بدست آورد.
2 – روالهای تکرار شونده : نام دیگر این روش "گرادیان کاهنده" میباشد در ادامه به توضیح این روش می پردازیم : قبل از هر چیز بردار گرادیان را تعریف میکنیم: بردار گرادیان در واقع جهت تغییرات ماکزیمم در تابع f را نشان میدهد.
در روش کاهش گرادیان ، ابتدا مقادیر تصادفی برای وزنها انتخاب میشود و بر اساس این اوزان خروجیهایی از شبکه بدست می آید.در یک روال تکرار شونده محاسبه شده و در جهت آن حرکت خواهد شد.بدین معنی که را طوری تغییر میدهیم که اختلاف خروجی واقعی و خروجی مطوب کمینه شود.
حرکت در جهت متناظر با حرکت در جهت کاهش آن با شیب ماکزیمم میباشد.
خطای شبکه به ازاء وزنهای برابر است با : در واقع همان تابعی است که باید کمینه شود.پس : خطای خروجی برابر است با اختلاف مابین خورجی شبکه (0) و خروجی مطلوب (t).خطای یک ورودی برابر است با : و خطای کلی برابر است با : خطای میانگین مربع[12] برابر با : قاعده کلی ،بدست آوردن مشتق خطا نسبت به w میباشد تا بتوانیم تغییرات خطا نسبت به w را به صفر نزدیک کنیم.یعنی ما بدنبال پیدا کردن میباشیم که k مرتبه تکرار این روال است .به عبارتی دیگر : در نتیجه تصحیح وزن jام در مرحله kام از تکرار الگوریتم تعلیم به صورت زیر میباشد: که ، مشتق تابع فشرده سازی (اکتیواسیون) و α، نرخ یادگیری میباشد که عموما مابین 0 و 1 انتخاب میشود.
بدین صورت میتوان وزنهای هر نرون را بدست آورد و روند تعلیم شبکه را به اتمام رساند.
پس از تعلیم ، شبکه آماده تولید خروجی از ورودی متناظر میباشد.
1-6-تقسیم بندی شبکههای عصبی بر مبنای روش آموزش به چهار دسته تقسیم میشوند: 1.
وزن ثابت : آموزشی در کار نیست و مقادیر وزنها به هنگام نمیشود.
1-7-کاربرد شبکههای عصبی • بهینه سازی اطلاعات (کاهش حجم، تفکیک پذیری و فشرده سازی) • حافظههای تناظری 2.
آموزش بدون سرپرست : وزنها فقط بر اساس ورودیها اصلاح میشوند و خروجی مطلوب وجود ندارد تا با مقایسه خروجی شبکه با آن و تعیین مقدار خطا وزنها اصلاح شود.
وزنها فقط بر اساس اطلاعات الگوهای ورودی به هنگام میشوند.
هدف استخراج مشخصههای الگوهای ورودی بر اساس راهبرد خوشه یابی و یا دستهبندی و تشخیص شباهتها (تشکیل گروههایی با الگوی مشابه) میباشد، بدون اینکه خروجی یا کلاسهای متناظر با الگوهای ورودی از قبل مشخص باشد.
این یاد گیری معمولاً بر پایه شیوه برترین هم خوانی انجام میگیرد.
شبکه بدون سرپرست وزنهای خود را بر پایه خروجی حاصل شده از ورودی تغییر میدهد تا در برخورد بعدی پاسخ مناسبی را برای این ورودی داشته باشد.
در نتیجه شبکه یاد میگیرد چگونه به ورودی پاسخ بدهد.
اصولا هدف این است که با تکنیک نورون غالب نورونی که بیشترین تحریک آغازین را دارد برگزیده شود.
بنابر این در شبکههای بدون سرپرست یافتن نورون غالب یکی از مهمترین کارها است.
آموزش با سرپرست : به ازای هر دسته از الگوهای ورودی خروجیهای متناظر نیز به شبکه نشان داده میشود و تغییر وزنها تا موقعی صورت میگیرد که اختلاف خروجی شبکه به ازای الگوهای آموزشی از خروجیهای مطلوب در حد خطای قابل قبولی باشد.
در این روشها یا از خروجیها به وزنها ارتباط وجود دارد یا خلا به صورت پس انتشار از لایه خروجی به ورودی توزیع شدهاست و وزنها اصلاح میشوند.
هدف طرح شبکهای است که ابتدا با استفاده از دادههای آموزشی موجود، آموزش ببیند و سپس با ارائه بردار ورودی به شبکه که ممکن است شبکه آن را قبلا فراگرفته یا نگرفته باشد کلاس آن را تشخیص دهد.
چنین شبکهای به طور گسترده برای کارهای تشخیص الگو به کار گرفته میشود.
آموزش تقویتی : کیفیت عملکرد سامانه به صورت گام به گام نسبت به زمان بهبود مییابد.
الگوهای آموزشی وجود ندارد اما با استفاده از سیگنالی به نام نقاد بیانی از خوب و یا بد بودن رفتار سامانه بدست میآید (حالتی بین یادگیری با سرپرست و بدون سرپرست).
شبکههای عصبی مصنوعی دارای دامنه کاربرد وسیعی میباشند از جمله سامانههای آنالیز ریسک، کنترل هواپیما بدون خلبان، آنالیز کیفیت جوشکاری، آنالیز کیفیت کامپیوتر، آزمایش اتاق اورژانس، اکتشاف نفت و گاز، سامانههای تشخیص ترمز کامیون، تخمین ریسک وام، شناسایی طیفی، تشخیص دارو، فرآیندهای کنترل صنعتی، مدیریت خطا، تشخیص صدا، تشخیص هپاتیت، بازیابی اطلاعات راه دور، شناسایی مینهای زیردریایی، تشخیص اشیاء سه بعدی و دست نوشتهها و چهره و ...
در کل میتوان کاربردهای شبکههای عصبی را به صورت زیر دسته بندی کرد : تناظر (شبکه الگوهای مغشوش وبه هم ریختهرا بازشناسی میکند)، خوشه یابی، دسته بندی، شناسایی، بازسازی الگو، تعمیم دهی (به دست آوردن یک پاسخ صحیح برای محرک ورودی که قبلا به شبکه آموزش داده نشده)، بهینه سازی.
امروزه شبکههای عصبی در کاربردهای مختلفی نظیر مسائل تشخیص الگو که خود شامل مسائلی مانند تشخیص خط، شناسایی گفتار، پردازش تصویر و مسائلی از این دست میشود و نیز مسائل دسته بندی مانند دسته بندی متون یا تصاویر، به کار میروند.
در کنترل یا مدل سازی سامانههایی که ساختار داخلی ناشناخته یا بسیار پیچیدهای دارند نیز به صورت روز افزون از شبکههای عصبی مصنوعی استفاده میشود.
به عنوان مثال میتوان در کنترل ورودی یک موتور از یک شبکه عصبی استفاده نمود که در این صورت شبکه عصبی خود تابع کنترل را یاد خواهد گرفت.
1-8-معایب شبکههای عصبی با وجود برتریهایی که شبکههای عصبی نسبت به سامانههای مرسوم دارند، معایبی نیز دارند که پژوهشگران این رشته تلاش دارند که آنها را به حداقل برسانند، از جمله : • قواعد یا دستورات مشخصی برای طراحی شبکه جهت یک کاربرد اختیاری وجود ندارد.
• در مورد مسائل مدل سازی، صرفاً نمیتوان با استفاده از شبکه عصبی به فیزیک مساله پی برد.
به عبارت دیگر مرتبط ساختن پارامترها یا ساختار شبکه به پارامترهای فرآیند معمولاً غیر ممکن است.
• دقت نتایج بستگی زیادی به اندازه مجموعه آموزش دارد.
• آموزش شبکه ممکن است مشکل ویا حتی غیر ممکن باشد.
• پیش بینی عملکرد آینده شبکه (عمومیت یافتن) آن به سادگی امکان پذیر نیست.
1-9-ساختار یک شبکه عصبی ساده : شاید این سؤال ساده و ابتدایی به نظر برسد، اما واقعاً یک شبکه عصبی چیست؟
یک حدس کلی در اینباره آن است که یک شبکه عصبی به طور سنتی شبیه یک مغز کامپیوتری مینیاتوری تصور میشود که شامل سلولهای مستقلی است که میتوانند با یکدیگر ارتباط داشته باشند تا بتوانند یک مسئله بزرگتر را حل کنند.
با این حال از منظر کدنویسی، چگونه میتوان برنامهای نوشت که به اندازهای عمومی و جامع باشد که بتواند با مجموعهای از اجزای کوچک و منفرد یا نورونها، هر مسئلهای را که به آن واگذار میکنید، حل کند؟
در واقع آنچه در عمل اتفاق میافتد آن است که شما دو نوع شبکه خواهید داشت: شبکههایی که تلاش میکنند از نظر بیولوژیکی دقیق باشند و از نورونها یا گرههای مغز تقلید کنند و شبکههایی که روی یک وظیفه خاص متمرکزند.
شبکههای عصبی در حالتی متعادل دارای هر دو خصلت صحت بیولوژیکی و کاربردی بودن، هستند.
بدیهی است ایدهآلترین حالت، داشتن شبکهای است که به طور کامل کارکرد مغز را مدلسازی میکند.
در مقاله پیشرو (برگرفته از سایت codeproject.com) ضمن اشاره به ویژگیهای یک شبکه عصبی با ساختار یک نمونه ساده از این شبکهها آشنا میشویم.
1-10-ویژگیهای یک شبکهعصبی: Robert Callan در کتاب ماهیت شبکههای عصبی> مجموعهای از ویژگیهای یک شبکه عصبی را معرفی کرده است که در ادامه بررسی میشوند.
1-10-1- مجموعهای از واحدهای پردازشی ساده : یک شبکه عصبی از نورونها یا گرهها ساخته میشود.
این اجزا در واقع واحدهای پردازش سادهای محسوب میشوند، اما در صورتی که قابلیتهای نهفته بعضی از آنها را ببینید، میتوانید بپرسید اساساً گرهها از دید یک برنامهنویس یک کلاس محسوب میشوند که وظیفه انجام کار یا هدف خاصی را برعهده دارند.
مانند هر کلاسی در برنامهنویسی، وظیفه یا هدف براساس آنچه شما تعیین میکنید و از طریق کدها تعریف میشود.برای هدف ما با توجه به کدهای ضمیمه، در اینجا یک نورون مجموعهای از گرهها در سادهترین شکل خود است.
یعنی مجموعهای شامل چهارگره: دو گره برای ورودی، یک گره bias و یک گره شبکه که مثال در مورد بررسی نورون شامل یک گره Adaline است.
1-10-2- الگویی برای اتصال : این همان راهی است که شبکه ساخته شده و دادهها در آن جریان مییابد.
به عنوان مثال، یک شبکه از نوع (1) Adaline (سرنام Adaptive Linear Neuron) شامل دو گره ورودی، یک گره bias و یک گره Adaline است.
گره Adaline همان گرهی است که فراخوانی توابع اجرایی و یادگیری را برعهده دارد.
هیچ محدودیت مشخصی برای تعداد گرههایی که میتوانید در هر نورون داشته باشید و نیز در نحوه جاری شدن دادهها وجود ندارد.
داده در ابتدا در گرههای ورودی قرار دارد، اما با بزرگ شدن شبکه میتواند برای پردازش وارد گرههای دیگر شود.
1-10-3-قاعدهای برای انتشار سیگنالها در شبکه: این صرفاً عرف (Common sence) محسوب میشود.
شبکه مورد نظر از هر نوعی که باشد، نتایج مشخصی وجود دارد که میخواهیم به آنها دست پیدا کنیم.
این دستیابی از طریق پردازشدادهها در شبکهای که با آن سروکار دارد، به روشی خاص امکانپذیر است.
این روش میتواند انتقال داده به گره خروجی یا بازگرداندن یا گاهی جلو راندن آن در شبکه به منظور پردازش بیشتر باشد.
در هر حال، همچون هر برنامه کامپیوتری دیگر، گامهای مشخصی وجود دارند که باید پیموده شوند و معمولاً یکی از دو روش مذکور در نهایت منجر به کسب نتیجه صحیح میگردد.
1-10-4- قواعدی برای ترکیب سیگنالهای ورودی: این اساساً همان کاری است که قصد داریم روی دادههای وارد شده به شبکه عصبی انجام دهیم.
در این لحظه اینکه پاسخ چه خواهد بود، برای ما اهمیت چندانی ندارد.
در اینجا فقط میدانیم در وهلهِ نخست با اطلاعات چه کاری میخواهیم انجام دهیم.
این کار میتواند یک عملیات ریاضی یا مقایسه رشتهای از اشیا باشد.
1-10-5- قاعدهای برای تجمیع یک سیگنال خروجی: این خروجی لزوماً خروجی نهایی برنامه نیست، بلکه خروجی بخش خاصی از کدها است.
اگر به این خروجی از دید تابع نگاه کنیم، مقدار خروجی یک گره شبکه در واقع مقدار بازگشت تابع است.
این خروجی معمولاً یک مقدار عددی است.
اما همواره هم این طور نیست.
مثلاً شبکه Adaline میتواند به راحتی گزینه درست یا غلط را بازگرداند که به خودی خود ممکن است تناسبی با عملکرد صحیح یا غلط گره نداشته باشد.
1-10-6-یک قاعده یادگیری برای تغییر Weightها : یک Weight یا وزن مقداری است که به اتصال یا پیوند داده میشود و در فرآیند یادگیری سودمند است.
این مقدار به صورت بیدرنگ به وسیله تابع یادگیری بروز میشود و به طور طبیعی پشت این کار قاعده خاصی نهفته است.
در نظر داشته باشید هدف نهایی شبکه، یادگیری ارائه پاسخهای صحیح با توجه به دادههای آموزشی است که به آن داده میشود.
بنابراین به نظرمیرسد که یک قاعده کاملاً مناسب برای بروز کردن weightها میتواند تعیین تصادفی یک مقدار برای آن تا زمان رسیدن به جواب باشد.
از لحاظ تئوری این کار میتواند باعث طولانیتر شدن زمان کار شبکه در مقابل حالتی گردد که یک قاعده صریح و مشخص به آن داده شده باشد.
فصل دوم شبکه های پرسپترون چند لایه 2-1-مقدمه شبکه هایی که از یک نرون ساخته شده اند دارای محدودیتهایی میباشند.
این شبکه ها توانایی پیاده سازی توابع غیر خطی را ندارند.
به عنوان مثال توسط این شبکه ها نمیتوان تابع XOR را پیاده سازی نمود.
برای حل این مشکل شبکه های دیگری پیشنهاد شد که ما به یکی از آنان که بیشترین استفاده را دارد می پردازیم.
دلیل دیگر معرفی این نوع شبکه ، استفاده از آن در ابن تحقیق می باشد.مدل عمومی شبکه های پرسپترون ، شبکه جلو رونده با روال تعلیم انتشار به عقب است.
شبکه های جلو رونده شبکه هایی هستند که ورودیهای لایه اول نرونهای آن به لایه های بعدی متصل بوده و در هر سطح این مسئله صادق بوده تا به لایه خروجی برسد.
روال انتشار به عقب بدین معنی است که پس از مشخص شدن خروجی شبکه ، ابتدا وزنهای لایه آخر تصحیح شده و بعد به ترتیب اوزان لایه های قبلی تصحیح میشوند.در این موارد بیشتر توضیح داده میشود.شبکه های پرسپترون از یک لایه ورودی ، تعدادی لایه پنهان و یک لایه خروجی تشکیل شده است.در شکل 5 یک شبکه پرسپترون با یک لایه پنهان نشان داده شده است.