شبکه عصبی
مبحث شبکه های عصبی مربوط به شبیه سازی قوه یادگیری در انسان و پیاده سازی آن به صورت الگوریتم های کامپیوتری می باشد. قوه یادگیری در انسان عبارت از فراگیری الگوهای اطراف خود توسط تکرار می باشد.
مغز به عنوان یک سیستم پردازش اطلاعات با ساختار موازی از ملیونها نرون تشکیل شده است.بافتهایی که عصب نامیده میشوند اجتماعی از نرون ها هستند که اطلاعات و پیامها را از یک قسمت بدن به قسمت دیگر منتقل می کنند.
نرون بیولوژیکی
شکل 1 – نرون بیولوژیکی
نرون های بیولوژیکی از چهار قسمت اساسی تشکیل شده اند :
1- دندریت : اطلاعات را دریافت و به هسته سلول می رساند
2- بدنه سلول : اطلاعات دریافتی را پردازش می کند
3- اکسون : اطلاعات هسته سلول را به نرون های دیگر منتقل می کند
4 – سیناپس: محل تلاقی یک اکسون از یک نرون به دندریتهای نرون دیگر را سیناپس میگویند
معماری شبکه عصبی مصنوعی
نرون مصنوعی : کوچکترین واحد پردازشگر اطلاعات است.ورودیهای نرون توسط یک نوع ارتباط به نام وزن به نرون وارد می شوند
شکل 2- نرون تک لایه با یک ورودی شکل 3 – نرون تک لایه با R ورودی
P : ورودی ، W : وزن ورودی ،b : بایاس ،f : تابع تحریک ،a : خروجی
بایاس : یکی از وزن های ورودی نرون می باشد که مقدار ورودی اش همواره یک است
نرون مدل سازی شده ورودی های خود را محاسبه می کند .ابتدا اولین ورودی را در ضریب وزنی مربوط به خط ارتباطی آن ورودی ضرب می کند سپس همین عمل را برای ورودی دوم و سایر ورودی ها تکرار می کند در نهایت تمام مقادیر را جمع می کند . در صورتی که مجموع مقادیر از حد آستانه بالاتر رود ، نرون تولید خروجی می کند (فعال می شود)
∑ wipi=w1p1+w2p2+…+wnpn
a = f( ∑ wipi + bi )
B و w دو پارامتر تنظیم شونده در نورون ها می باشند . ایده اصلی شبکه های عصبی این است که با تغییر مقادیر w و b ،شبکه یک رفتار یا تصمیم را اتخاذ کند
تابع های مورد استفاده در شبکه های عصبی :
شکل 4 – تابع های محرک
تابع محرک f میتواند خطی یا غیر خطی باشد.
یک تابع محرک بر اساس نیاز خاص حل یک مساله انتخاب میشود
انواع شبکه از نظر تعداد لایه :
شبکه تک لایه : شبکه های تک لایه قادر به حل مسایل ساده هستند ولی با شبکه های چند لایه هر مثالی را می توان حل کرد(شکل هایی که تا کنون دیدیم از نوع تک لایه بودند)
شبکه چند لایه :یک شبکه چند لایه دارای لایه های زیر می باشد
1. لایه ورودی : دریافت اطلاعات خامی که به شبکه تغذیه شدهاست.
2. لایههای پنهان : عملکرد این لایهها به وسیله ورودیها و وزن ارتباط بین آنها و لایههای پنهان تعیین میشود. وزنهای بین واحدهای ورودی و پنهان تعیین میکند که چه وقت یک واحد پنهان باید فعال شود.
3. لایه خروجی : عملکرد واحد خروجی بسته به فعالیت واحد پنهان و وزن ارتباط بین واحد پنهان و خروجی میباشد.
شکل 5 – شبکه سه لایه
برخی از کاربرد شبکه های عصبی :
طبقه بندی ,شناسایی و تشخیص الگو
پردازش سیگنال
مدلسازی و کنترل
مسائل مالی ، بیمه ،امنیتی ،بازار بورس و وسایل سرگرم کننده
ساخت وسایل صنعتی ،پزشکی و امور حمل و نقل
آموزش شبکه
1 -یادگیری نظارت نشده یا بدون ناظر
در این نوع یادگیری هیچ سیگنالی که اطلاعات را در مورد مطلوبیت جواب شبکه به خود شبکه وارد نماید وجود ندارد. به عبارت دیگر به شبکه گفته نمی شود که خروجی هدف چه است و یا اینکه جواب شبکه چقدر مطلوب است.در این حالت شبکه با دریافت اطلاعات ورودی و شاخص های موجود در ورودی ها ، ارتباط موجود بین الگوهای ورودی را پیدا کند و در خروجی کد کند.
شکل – 6
1.یادگیری نظارت شده یا با ناظر:
در این نوع اموزش به الگوریتم یادگیری مجموعه ای از زوج داده که به داده های یادکیری موسوم هستند داده می شود.هر داده یادگیری شامل ورودی به شبکه و خروجی هدف است.پس از اعمال ورودی به شبکه خروجی شبکه با خروجی هدف مقایسه میگردد و سپس خطای یادگیری محاسبه شده و از آن جهت تنظیم پارامتر های شبکه(وزن ها) استفاده می گردد به گونه ای که اگر دفعه بعد به شبکه همان ورودی را دادیم خروجی شبکه به خروجی هدف نزیک گردد.
شکل – 7
چگونگی جداسازی الگوها توسط شبکه عصبی
کلاس بندی به معنای جداسازی چند الگو از یکدیگر است
فرض کنید یک رباتی داریم که میخواهد دو میوه سیب و موز را از هم جدا کند برای اینکار از محور مختصات دو بعدی استفاده می شود و میوه ها بر اساس رنگ و اندازه در صفحه مختصات قرار می گیرند.
ربات جداکننده میوه بر اساس رنگ و اندازه میوه آن ها را در یک صفحه مختصات ، کلاس بندی می کند ، از این پس ربات مقادیر رنگ و اندازه میوه برداشته شده را در محور مختصات قرار داده تا بفهمد میوه در کدام کلاس باید قرار گیرد
شکل – 8کلاس بندی
این دو کلاس توسط خطی از یکدیگر جدا شده اند ، برنامه این ربات دیگر نیاز ندارد تمام اندازه الگو های خود را در جایی ذخیره کند بلکه با دانستن سه عدد معین که ظرایب معادله خط در صفحه هستند براحتی می تواند الگو ها را شناسایی کند ، کافی است الگو ها را توسط سنسور های خود اندازه گیری کرده و آن را در معادله خط قرار دهد
در صورتی که فقط ظرایب معادله را در نظر بگیریم برداری بدست می آید که به آن وزنهای شبکه عصبی گفته می شود
X2 + X1 – 0.5 = 0
[w0 w1 w2]=[-0.5 1 1]
هنر یک شبکه عصبی این است که با روش تکرار وزن ها را به دست آورد
انواع شبکه های عصبی :
1 – پرسپترون
2 – هاپفیلد
3 – همینگ
4 – کوهنن
5 – شبکه عصبی انتشار رو به عقب
6 – شبکه عصبی کارپنتر و گروسبرگ
پرسپترون :
این نوع شبکه عصبی در حل مساله ها بسیار سریع و قابل اطمینان است . قاعده یادگیری این شبکه تکرار است و وزنهای خود را به شیوه تکرار بدست می آورد . شبکه با کلاس های خطی تربیت می شود
مجموع حاصل ضربهای ورودی در وزن :Yin
: یک عدد کوچک معمولا 0.2 ، کمیت ناحیه ای را نشان می دهد که در آن ناحیه الگوها را نمی توان کلاس بندی کردѲ
شبکه می تواند به صورت باینری یا بایپولار تربیت شود
در حالت باینری اطلاعات مورد پردازش 0 یا 1 می باشد در حالت بایپولار اطلاعات مورد پردازش 1 یا 1- می باشد و
در شکل زیر یک شبکه پرسپترون می بینید که از تابع محرک آستانه ای دو مقداره متقارن استفاده کرده است
شکل 9 – پرسپترون
مراحل کار الگوریتم :
- وزنها را با صفر ، α را با 0.1 و Ѳ را با 0.2 مقدار دهی می کنیم
- یک حلقه که شرط خاتمه آن عدم تغییر وزن هاست(به ازای n الگوی ورودی باید حداقل یک وزن تغییر کند در غیر این صورت الگوریتم به پایان می رسد)
- یک حلقه است که به تعداد الگوی ورودی مراحل زیر خود را تکرار می کند
- ماتریسی به تعداد n سطر(الگوهای ورودی) و به تعداد m+1 ستون (m تعداد نرون های ورودی)ایجاد می کنیم . بردار فضای هدف(t) را با n عنصر ایجاد میکنیم(هر الگو دارای یک مقدار هدف است)
شکل 10 – ماتریس گیت and به همراه خروجی هدف
تابع تحریک شبکه به صورت زیر است
1 IF yin > Ѳ
Y= 0 IF -Ѳ <= yin <= Ѳ
-1 IF yin < Ѳ
معادله خطوط جداکننده پرسپترون به صورت زیر است
W2x2 + w1x1 + b = ±Ѳ
وزن ها از روش تربیتی زیر استفاده می کنند
Wi(new)=wi(old) + α . t .xi
B(new)=b(old) + α .t
مقدار هدف(مقدار هدف کلاس الگو را مشخص می کند) . αسرعت تربیت است و مقدارش بین 0 و 1 (به یک نزدیک شود سرعت بالا رفته و دقت پایین می آید)
وزن ها از روش تربیتی زیر استفاده می کنند
Wi(new)=wi(old) + α . t .xi
B(new)=b(old) + α .t
مقدار هدف(مقدار هدف کلاس الگو را مشخص می کند) . αسرعت تربیت است و مقدارش بین 0 و 1 (به یک نزدیک شود سرعت بالا رفته و دقت پایین می آید)
شبکه هاپفیلد :
شبکه هاپفیلد از معماری بازگشتی استفاده می کند
این شبکه دارای یک لایه از نرون های ورودی به نرون های ورودی است (نرون های ورودی همان نرون های خروجی اند)
در نویزگیری از الگو ها و تبدیل به نمونه اصلی استفاده می شود
شکل 11 – شبکه هاپفیلد شکل 12 – برطرف شدن نویز توسط هاپفیلد
در این شبکه الگویی را که برای تربیت انتخاب شده با S و الگوی ناشناس ورودی را با X نمایش می دهیم
مراحل کار الگوریتم :
- ورودی را به صورت باینری دریافت کرده و سپس با فرمول زیر آن را به بایپولار تبدیل می کنیم
Sbipolar = 2S – 1
برای بدست آوردن وزن ماتریس S را در ترانهاده خودش ضرب کرده و مقادیر قطر اصلی آن را صفر می کنیم
W = Sbipolar * SbipolarT
- خروجی را معادل ورودی در نظر می گیریم یعنی Y = X
- به تعداد نرون های ورودی مرحله بعد انجام شود (حلقه)
- Yini = xi + ∑ xj . Wji
شکل 13 – خروجی نرون x
5 . Y i = 1 yin i >=0
0 yin i <0
X=y
Yini = xi + ∑ xj . Wji
- در صورتی که تغییری در خروجی دیده نشود الگوریتم پایان یافته تلقی می شود .
از این الگوریتم برای برطرف کردن نویز از الگو استفاده می شود