تبلیغات
سیگنال >> سایت تخصصی مهندسی برق - شبکه عصبی چیست ؟

شبکه عصبی چیست ؟

تاریخ:جمعه 10 آبان 1387-02:17

 قبل از اینکه شبکه های عصبی را از دید بیولوژیکی و مصنوعی مورد بررسی قرار دهیم اشاره به این نقطه ضروری است که بعضی از محققین معتقدند آنچه که شبکه های عصبی مصنوعی به آن رسیده است مدیون مدلی است که از روی شبکه های عصبی بیولوژیکی بر داشته است اما برخی دیگر معتقدند که قدرت حسابگری آن باعث پیشرفت آن گردیده است اگرچه بیشتر بحث ما مربوط به قدرت حسابگری این مدل می شود ولی ادائه مدل بیولوژیکی آن می تواند باعث درک عمیقتر شبکه های عصبی شود


Dendrite هایی که تعداد آنها زیاد است سیگنالها را از سایر سلولهای عصبی دریافت می کنند سیگنال ها نـوعـی تحریک های الکتریکی می باشد که در طول فاصله بین عصب ها (Synoptic Gap) به وسیله واکنشهای شیمیایی ایجاد میشود Soma (بدنه یک موجود زنده) یا همان بدنه سلول عصبی سیگنالهای دریافتی را جمع می کند زمانی که یک مقدار مناسبی از سیگنالهای ورودی دریافت شده اند سلول اصطلاحا آتش می کنند به عبارتی سلول به نوبه خود سیگنالی توسط Axon به سلولهای مجاور خود ارسال می کند و یا آتسش نمی کند از این رو یک حالت باینری برای یک سلول در نظر گرفته شده است اما با این حال فرکانس آتش یک سلول میتواند بر اساس سیگنالهای دریافتی در زمانهای مختلف فرق می کند.
براساس مطالب ذکر شده فوق می توان چندین ویژه گی را که سلول های عصبی مصنوعی باید داشته باشد به صورت زیر تعریف کرد.
1)سلولها (پردازشگرها) سیگنال های زیادی را دریافت می کنند.
2)سیگنال ها ممکن است با توجه به فاصله سلول ها از یکدیگر (از این به بعد به جای فاصله بین سلولها از عبارت وزن های موجود بین آنها استفاده خواهیم کرد) دستخوش تغیراتی گردند.
3)واحدهای پردازشگر سیگنالهای دریافتی جمع می کنند.
4)هر واحد پردازشگر می تواند سیگنال هایی را ایجاد و منتشر کند.
5)خروجی یک واحد پردازشگر ممکن است به چندین پردازشگر دیگر منتقل شود.
6)پردازش سیگنالهای در یافتی (جمع کردن آنها) به صورت محلی صورت می گیرد یعنی هر پردازشگر فقط سه کار انجام می دهد دریافت ، جمع و ارسال سیگنال ها
7)حافظه با آن صورت که قبلا متصور آن بودیم (مانند Hard Disk) وجود ندارد بلکه حافظه موجود به ضورت زیر توزیع شده است
الف)حافظه بلند مدت همان فاصله بین سلولهای عصبی محسوب می شود
ب)حافظه کوتاه مدت سیگنال هایی است که واحدهای پردازشگر به هم ارسال می نماید
Cool فاصله بین سلولهای عصبی ممکن است بر اساس تجربیات مختلف تغییر پیدا کند
9)سیگناها ممکن است تحریک کننده و یا خنثی کننده باشند

شبکه های عصبی مصنوعی: یک شبکه عصبی مصنوعی بر اساس مدل ذکر شده در بخش قبلی دارای ویژه گی های زیر است
1)پردازش اطلاعات در بخشهایی به نام یونیت (Unit) یا نود (Node) انجام می گیرد.
2)سیگنال ها بین این واحدها و در امتداد لینک های ارتباطی برقرار می شود.
3)به هر یک از این لینک های ارتباطی یک وزن نسبت داده می شود.
4)هر واحد پردازشگر تابع فعال سازی (Activation Function) را روی سیگنال های دریافتی اش جهت ایجاد خروجی اعمال می کند.
هر شبکه عصبی به وسیله سه مشخصه زیر مشخص می شود
1)الگوی ارتباطی بین واحدهای پردازشگر یا نرون ها (به این الگو معماری شبکه اطلاق می شود)
2)روش تعیین وزنهای منتسب به هر یک از لینک های ارتباطی (به عبارتی نحوه یادگیری و یا الگوریتم آموزش)
3)نوع تابع فعالساز مورد استفاده
هر نرون یک حالت داخلی دارد که اصطلاحا به آن سطح فعالیت (Activity Level) گفته می شود این حالت داخلی تابعی از ورودی هایی است که نرون دریافت کرده است به طور معمول یک نرون نتیجه فعالیت خودش را به سایر نرون هایی که متصل است (در جهت لینک های ارتباطی) به صورت سیگنال ارسال می کنند توجه به این نقطه مهم است که یک نرون در واحد زمان تنها می تواند یک سیگنال در واحد زمان ایجاد کند ولی با این حال سیگنال ارسال شده می تواند به چندین نرون برود

 
برای مثال نرون Y (در شكل دوم پست قبل) را در نظر می گیریم از سه نرون دیگر به نام های X3, X2 , X1  سیگنال دریافت می کند اگر سطح فعالیت این نرون ها را به ترتیب x3 , x2 , x1 و همچنین فاصله بین آنها ونرون Y را w3 , w2 , w1 در نظر بگیریم آنگاه ورودی نرون Y بر اساس آنچه گفته شد به صورت زیر محاسبه می شود.

   
Yin = x1w1+x2w2+x3w3


Y در حالت کلی (اگر Y،n تا سیگنال دریافت کند)      
Y = ∑i=1xiwi

همان طور که گفته شد خروجی هر نورون تابعی از ورودی های آن است بنابراین:

تابع فعالساز   
(Yout = y = f(Yin

مثال: با فرض اینکه تابع فعالساز مورد استفاده در شبکه عصبی زیر به این صورت زیر می باشد آنگاه خروجی شبکه عصبی چه خواهد بود؟


 

Yin=1*2+1*1+(-1)*(-1)=2+1+1=4
Yout=f(4)=1


مثال:


 

Yin=1*2+1*(-1)+(-1)*1+1*1+2-1-1+1=1
Yout=f(1)= -1


مثال: با توجه به تابع فعالساز خروجی نرونهای Z2 , Z1 را به دست آورید


 

Yin=1*(-1)+1*(-1)+(-1)*1= -1-1-1 = -3
Yout=f(-3)= -1
Z1-in = (-1)*2 = -2        Yout=f(-2)= -1
Z2-in = (-1)*(-1) = 1        Yout=f(1)= 0
 
نکته 1) معمولا هر شبکه عصبی از چند لایه تشکیل می شود اولین لایه از شبکه عصبی یا همان ورودی را جز لایه های شبکه عصبی به شمار نمی آورند زیرا این لایه در محاسبات شبکه شرکت ندارد به عبارتی لایه ورودی همان جایی است که شبکه عصبی اطلاعات را از یک محیط بیرونی دریافت می کند آخرین لایه شبکه عصبی لایه خروجی نام دارد و سایر لایه ها به لایه های داخلی و یا به اصطلاح لایه های مخفی معروف هستند.
نکته 2) معمولا همه نرون ها یک لایه از یک تابع فعالساز استفاده می کنند.
نکته 3) در اکثر شبکه های عصبی نرون های هر لایه یا به همه نرون های لایه بعدی خود متصل اند و یا به هیچ کدام از آنها متصل نیستند.

مثال: شبکه عصبی زیر را با توابع فعالساز گفته شده در نظر گرفته و خروجی آن را محاسبه کنید.



Y1-in=1*1+2*1+2*2+(-1)*1=1+2+4-1=6                     f(6)=1
Y2-in=1*2+2*1+2*1+(-1)*2=2+2+2-2=4                     f(4)=1
Y3-in=1*(-1)+2*(-1)+2*(-1)+(-1)*2=-1-2-2-2=-7        f(-7)=0
Z1-in=1*1+1*2+0*(-1)=1+2+0=3                                 f(3)=1
Z2-in=1*(-1)+1*1+0*1=-1+1+0=0                                f(0)=0
Win=1*1+0*(-1)=1+0=1                                               f(1)=0

 

میزان کردن وزنها: یکی از پارامترهای مهم تمایز شبکه های عصبی نحوه میزان کردن وزنهای بین نرونها است به عمل میزان کردن یا تنظیم کردن وزنها اصطلاحا آموزش شبکه عصبی گویند.
انواع روشهای آموزش: دو نوع روش آموزش وجود دارد آموزش با معلم وآموزش بدون معلم
در اکثر شبکه های عصبی یک سری الگوی آموزشی به عنوان ورودی به شبکه عصبی داده می شود در هر مرحله از آموزش یک الگو خروجی مورد نظر نیز به شبکه عصبی گفته می شود بنابراین شبکه عصبی بر اساس الگوریتم های آموزشی اش وزنهای بین نرونها را تنظیم می کند به این روش آموزشی که هم الگوی آموزشی و هم الگوی هدف (target = t) به شبکه داده می شود آموزش با معلم گفته می شود به عنوان مثال


آموزش بدون معلم: شبکه های خود سازمان ده الگوهای ورودی را بدون اینکه هیچ اطلاعاتی در مورد آنها داشته باشند در کلاس های مشابه جای می دهند بدین ترتیب یک مجموعه از الگوها به عنوان ورودی به شبکه داده می شود هیچ چیزی در مورد اینکه این الگو مربوط به کدام کلاس یا دسته است به او گفته نمی شود و این خود شبکه عصبی است که وزن های بین نرونهااش را بر اساس تنظیم می کند.


معرفی چند تابع فعالساز: همان طور که قبلا نیز گفتیم کار اصلی هر یک از نرونهای مصنوعی جمع ورودیهای وزن دار شده و اعمال تابع (تابع فعالساز) بر روی آنها برای ایجاد خروجی است برای واحدها ورودی تابع فعالساز یک تابع همانی است.


معمولا برای همه نرونهای یک لایه یک نوع تابع فعالساز در نظر گرفته می شود با این حال در نظر گرفتن توابع فعالساز متفاوت برای نرونهای یک لایه مشکلی ندارد در بیشتر موارد سعی می شود توابع فعالسازی را انتخاب کنند که خطی نباشد به عبارتی برای دست یافتن به مزایای شبکه های چند لایه در مقایسه با شبکه های تک لایه استفاده از توابع فعالساز غیر خطی ضرروری می باشد.

به طور معمول شبکه های تک لایه از یک تابع فعالساز تک پله ای برای تبدیل ورودی ها به خروجی ها استفاده می کنند تابع پله ای باینری یکی از توابع شمرده می شود که به تابع آستانه (threshold) نیز معروف است.


یکی دیگر از توابع مهم و کارآمد فعالساز ، تابع فعالساز Sigmoid (منحنی آن به شکل S می باشد) یکی از انواع این تابع ، تابع logistic sigmoid نام دارد که دامنه آن 0 و 1 است.


می توان با تغییر در تابع logistic sigmoid دامنه آن را از 0 و 1 به -1 و 1 تغییر داد به تابع logistic sigmoid ای که دامنه آن از -1  و 1است تابع bipolar sigmoid خواهیم گفت


بایاس Bias : در فارسی به معنای متمایل کردن به یک طرف یا تحت تائثیر قرار دادن است در شبکه های عصبی برای تنظیم کردن شبکه (به طوری که خواهیم دید) به کار می رود برای اینکه شبکه مورد نظر Bias دار بشود کافی است جز x0 = 1 را به بردار ورودی یا همان بردار اضافه کنیم

شبکه عصبی Mc-Culloch-Pitts: شاید بتوان گفت که شبکه عصبی Pitts اولین شبکه عصبی بود که معرفی گردید این شبکه عصبی چندین اصول اساسی را برای شبکه های عصبی که هم اکنون مورد استفاده قرار می گیرند معرفی کرد.

مشخصه های یک شبکه عصبی از نوع Pitts را می توان به صورت زیر خلاصه کرد

1)نوع فعالیت این شبکه باینری است به عبارتی در هر لحظه از زمان یک نرون در آن شبکه یا آتش می کند (خروجی 1 می دهد) یا آـش نمی کند (خروجی 0 می دهد).
2) نحوه اتصال نرون ها مستفیم و وزن دار است.
3) مسیر انتقال از یک نرون به نرون دیگر در صورتی تحریک کننده است که وزن بین آن مثبت باشد در غیر این صورت (در صورتی که منفی باشد) باز دارنده است همچنین تمامی اتصالات تحریک کننده ای به یک نرون وارد می شود وزن یکسانی دارند.
4) هر یک از نرونها یک مقدار آستانه ثابت دارند(threshold)  به طوری که اگر مقدار ورودی از آن مقدار آستانه بیشتر شود آنگاه نرون آتش می کند.
5) هر گاه به یک نرون اتصالی که وزن آن منفی و غیر صفر باشد وصل شود مانع از آتش کردن آن خواهد شد .
6) در این شبکه مفهوم بایاس (Bias) معرفی نشده است.

معماری شبکه Pitts




برای درك بهتر و راحتر مثلهایی كه درباره شبكه های عصبی زده میشود از توابع AND و OR و... است

نمونه ای از کاربرد های شبکه های pitts: در زیر کاربرد شبکه مذکور را در پیاده سازی توابع منطقی نظیر AND یا OR و ... نشان داده می شود در مثالهای مطرح شده مقدار آستانه هر یک از نرونها برابر 2 فرض شده است

تابع AND


تابع OR


تابع AND NOt


تابع XOR

یکی ار کارهای بسیار ساده ای که شبکه عصبی می تواند انجام دهد عبارت است از دسته بندی الگوها در مسئله دسته بندی الگوها هر الگوی ورودی (بردار ورودی) یا بر یک دسته ای(کلاس) تعلق دارند و یا ندارند برای دسته بندی با استفاده از شبکه های عصبی فرض می کنیم که مجموعه ای از الگو های ورودی را در اختیار داریم که گروه و دسته ای که به آن تعلق دارند مشخص است در ساده ترین حالت می توان این دسته بندی را با این سوال که آیا الگوی ورودی به دسته مورد نظر تعلق داد یا نه مشخص کرد.
معماری: ساده ترین معماری را که می توان برای یک شبکه دسته بندی کنند ساده در نظر گرفت بصورت زیر است


قبل از اینکه درباره شبکه های خاص بحث گردد بهتر است برخی از مواردی را که در مورد همه شبکه های طبقه بندی کننده یا دسته بندی کننده ساده می باشد ذکر گردد خروجی مطلوب برای یک لایه خروجی yes است اگر الگوی ورودی به شبکه عصبی متعلق به دسته مورد نظرش باشد و No است اگر الگوی ورودی متعلق به دسته مورد نظرش نباشد


شبکه عصبی  HEBB: یکی از ساده ترین قوانین آموزش شبکه های عصبی به نام قانون HEEB مشهور است HEEB براساس اینکه یادگیری در اثر تغییرات قدرت وزن ها به وجود می آید ، قانون خود را بنا نهاد

قانون HEBB: اگر دو نرونی که به هم متصل اند در آن واحد آتش کنند آنگاه وزن میان آن دو نرون بایستی افزایش یابد می توان اطن قانون را جهت افزایش قدرت یادگیری بصورت زیر توسعه داد اگر دو نرونی که بهم متصل اند همزمان آتش کنند و یا همزمان خاموش باشند آنگاه وزن میان آن دو نرون بایستی افزایش یابد
اگر نمایش داده ها به فرم (1- و 0 و 1) آنگاه به سادگی می توان قانون  به روز کردن وزن بین دو نرون را بصورت زیر بیان کرد


ضرب خروجی ها در هم:    


الگوریتم یادگیری HEBB:

گام صفر: همه وزنها را با یک مقدار ثابتی مقدار دهی کن (مثلا به همه آنها مقدار صفر را قرار بده)
گام یک: برای هر زوج الگوی ورودی هدف (s : t) گام های 2 تا 4 را تکرار کن
گام دو: الگو iام را به شبکه اعمال کن (xi = si)
گام سوم: خروجی را برای هر نرون Y محاسبه کن (جمع ورودی ها و سپس اعمال تابع فعالساز)
گام چهارم: وزنها را بر طبق الگوریتم به روز کن

wi(new) = wi(old) + xiy
wi = xiy∆ 
                       
wi(new) = wi(old) + ∆wi



 


مثال: پیاده سازی تابع منطقی AND با استفاده از شبکه عصبی HEBB 

وردی باینری و خروجی باینری

نکته : در این شبکه عصبی از Bias نیز استفاده می شود


جواب مسئله تمام نقاطی است که حوالی 1 است


w1 = x1y                             ∆w2 = x2y∆ 
                   
مجموع وردی ها        b = 1*y = y                        y = x1w1 +x2w2 + b∆
x2 = (-x1w1 – b) / w2            x2 = -(w1 / w2)x1 – b / w2
x2 = -(1/1)x – 1/1 = -x – 1



مشاهده می شود که خط جدا کننده حاصل از اولین مرحله از آموزش خط مناسب نیست
هدف: پیدا کردن خط راستی است که مشخص کننده مرز بین الگوهای با جواب صفر و الگوهای با جواب یک باشد
برای رسیدن به جواب این مثال آموزش را دوباره تکرار می کنیم


x2 = -(w1 / w2)x1 – b / w2               x2 = -(2/2)x – 2/2 = -x – 1


مشاهده می شود که با تکرار آموزش اتفاقی در خط جدا کننده نیفتاد این بدان معناست که تکرار های بعدی نیز نمی توانند شبکه را بخوبی آموزش دهند.
دلیل: اینکه بعد از آموزش مجدد شبکه تغییری در خط جدا کننده صورت نگرفت بخاطر نمایش باینری هدف (خروجی) است

 

 






داغ کن - کلوب دات کام
نظرات() 
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر
نظرات پس از تایید نشان داده خواهند شد.