نمايش پست تنها
قديمي ۰۶-۱۴-۱۳۸۹, ۱۱:۵۵ قبل از ظهر   #8 (لینک دائم)
Astaraki Female
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Wink

نحوه ی پیاده سازی این نوع از شبکه در مجموعه ی Matlab

نرم افزار مطلب، یکی از نرم افزارهای قوی و جامع در ارتباط روشهای یادگیری، از جمله شبکه های عصبی می باشد که برای بسیاری از کابردها می توان از آن استفاده نمود. در این بخش قصد داریم توضیحات مختصری در ارتباط با نحوه ی پیاده سازی شبکه های SOM در این نرم افزار ارائه نمائیم.
ساختار لایه ی رقابتی که در نرم افزار مطلب از آن استفاده می شود به فرم ذیل می باشد:
برای ساخت یک شبکه ی عصبی رقابتی به فرم ذیل عمل می شود:
برا این کار از دستور newc استفاده می شود.
كد:
net = newc(PR,S,KLR,CLR)
بعد از اجرای دستور شبکه ی ایجاد شده در متغیر خروجی net قرار می گیرد و پارامترهای ورودی آن عبارتند از PR که یک ماتریس R*2 می باشد که در آن R تعداد ورودی ها بوده و برای هر ورودی دو مقدار حداقل و حداکثر را نمایش می دهد، پارامتر S بیانگر تعداد نورونها می باشد، پارامتر KLR نرخ یادگیری کوهونن (پیش فرض برابر 0.01 ) را نشان می دهد و در نهایت پارامتر CLR نرخ یادگیری Coscience (پیش فرض برابر 0.001) را ارائه می کند. در ذیل نمونه ای از اجرای تابع ارائه شده است:
كد:
p = [.1 .8  .1 .9; .2 .9 .1 .8]
p =
0.1000    0.8000    0.1000    0.9000
0.2000    0.9000    0.1000    0.8000
net = newc([0 1; 0 1],2);
با اجرای تابع فوق یک شبکه ی SOM دارای دو نورون با دو ورودی ایجاد می شود، به صورت پیش فرض وزن اتصالات با استفاده از تابع midpoint مقداردهی اولیه می شود، که برابر مرکز محدوده ی دو ورودی شبکه تنظیم می گردد
كد:
wts = net.IW{1,1}
wts =
    0.5000    0.5000
    0.5000    0.5000
برای مقداردهی اولیه ی مقادیر Biases نیز از تابع initcon استفاده می شود که برای شبکه ی بالا به صورت ذیل مقدار دهی می گردد:
كد:
biases =
    5.4366
    5.4366
بعد از ایجاد شبکه برای آموزش آن از توابع متفاوتی می توان استفاده نمود، از جمله این توابع عبارتند ازLearnK که بر اساس قانون یادگیری کوهونن عمل می کند و به روز رسانی وزن ها در آن برای واحد i ام که برنده است به صورت ذیل انجام می گیرد:

برای تعیین مقادیر Bias نیز از قانون یادگیری learncon استفاده می شود که استفاده از این قانون به نوعی پیاده سازی الگوریتم وجدان پیشنهادی دسینو می باشد که برای پرهیز از ایجاد نورون های مرده استفاده می شود. بعد از آشنایی با توابع مورد استفاده جهت آموزش شبکه در ادامه با نحوه ی آموزش شبکه آشنا می شویم.
برای آموزش شبکه ایجاد شده از دستور
كد:
net2=train(net1,p)
استفاده می شود که در آن P همان بردارهای ورودی آموزشی هستند و net2 نیز شبکه ی آموزش داده شده است. البته، برخی پارامتر های قابل تنظیم نیز وجود دارد از جمله net.trainFcn که تابع آموزش را تعیین می کند و به صورت پیش فرض برابر trainr می باشد در ضمن پارامتر net.trainParam.epochs که جهت تنظیم تعداد حداکثر Epochها از آن استفاده می شود.
در پایان بعد از آموزش نیز جهت آزمایش شبکه نیز می توان از دستور
كد:
a=sim(net,p)
استفاده نمود.
علاوه بر دستور newc که در بالا مختصری مورد بررسی قرار گرفتن دستور دیگری نیز وجود دارد که شبکه ی SOM دیگری را با قابلیهای بیشتر ایجاد می کند که در ادامه به بررسی آن می پردازیم.
این شبکه جدید دارای ساختار ذیل می باشد:
برای ایجاد این شبکه از دستور newsom استفاده می شود

كد:
net = newsom(PR,[D1,D2,...],TFCN,DFCN,OLR,OSTEPS,TLR,TND)
بعد از اجرای تابع فوق نیز، شبکه ی ایجاد شده در خروجی ارائه می گردد، و پارامترهای ارسالی به تابع عبارتند از، PR که یک ماتریس R*2 می باشد که در آن R تعداد ورودی ها بوده و برای هر ورودی دو مقدار حداقل و حداکثر را نمایش می دهد، Di اندازه ی لایه ی بـعد iام را نشان می دهد، TFCN تابع توپولوژی مورد استفاده را نشان می دهد، DFCN تابع فاصله ی مورد استفاده را نشان می دهد، OLR نرخ یادگیری در فاز Ordering یا مرتب سازی را نشان می دهد، OSTEPS گامهای (Steps) مرحله ی مرتب سازی را نشان می دهد، TLR نرخ یادگیری مرحله ی Tuning یا همگرایی را نشان می دهد و در نهایت TND فاصله ی همسایگی در مرحله ی همگرایی را نشان می دهد. در ادامه برخی از توضیحات تکمیلی در ارتباط با پارامترهای ارسالی به تابع ارائه می شود.
برای شبکه عصبی ایجاد شده می توان از انواع مختلفی توپولوژی استفاده نمود، توپولوژیهای قابل تعریف عبارتند از:
1) Gridtop که به فرم ذیل است.

2) Hextop که به فرم ذیل است.


3) Randtop که به فرم ذیل است.

همچنین چهار نوع تابع فاصله ی مختلف وجود دارد که می تواند مورد استفاده قرار گیرند. اولین آنها تابع dist است که همان فاصله ی اقلیدسی می باشد، دومی تابع linkdist می باشد که عبارتست از تعداد اتصالات یا مراحلی که باید در توپولوژی طی شود تا از یک نورون به نورون دیگر برسیم که قصد تعیین فاصله ی بین آن دو را داریم، سومی تابع boxdist است که شکل ذیل نحوه ی محاسبه ی آن را در توپولوژی grid نشان می دهد، چهارمین و آخرین آنها mandist می باشد که همان فاصله manhattan را محاسبه می نماید.

سایر پارامترهای ارسالی در آموزش شبکه موثر می باشند که در ادامه به توضیح مختصری از آنها می پردازیم. همانگونه که در بخش توضیحات شبکه ی SOM ارائه شد، این شبکه به پیشنهاد آقای کوهونن در دو مرحله آموزش داده می شود، در مرحله ی اول فاز Ordering است که در آن سعی می شود با قدم های بزرگ یک ترتیب کلی در وزن همه ی نورون ها ایجاد شود از این رو پارامترهای OLR که نرخ یادیگری این فاز است معمولا مقدار بزرگی است (0.9) و در مرحله ی بعد که مرحله ی همگرایی است، TLR مقدار کوچکتری را دارا می باشد (0.02) تا با تغییرات کوچک در وزن ها به نوعی تنظیم نهایی و دقیق تری در وزن ها ایجاد می شود. برای آموزش این شبکه نیز از دستور train استفاده می شود.

ويرايش شده توسط Astaraki; ۰۶-۱۴-۱۳۸۹ در ساعت ۱۱:۵۸ قبل از ظهر
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
aimaryam (۰۶-۱۴-۱۳۸۹), m.esmaeli86 (۱۱-۱۴-۱۳۹۲), R_Ebadi (۰۸-۲۲-۱۳۹۱), sahar.z (۰۲-۲۹-۱۳۹۰), sina_ali (۰۲-۱۹-۱۳۹۱), tina_ss (۰۵-۲-۱۳۹۲), ya mahdi (۰۴-۲۴-۱۳۹۱)