نحوه ي پیاده سازي شبکه SOM در متلب (بخش اول)پنجشنبه 09, ژانویه 2020
نحوه ي پیاده سازي شبکه SOM در متلب
در ادامه آموزش های سایت همیارپروژه درباره شبکه خودسازمانده با نحوه پیاده سازی شبکه های خودسازمانده در متلب آشنا خواهیم شد . با ما همراه باشید.
نرم افزار متلب (مطلب):
نرم افزار مطلب، یکی از نرم افزارهاي قوي و جامع در ارتباط روشهاي یادگیري، از جمله شبکه هاي عصبی میباشد که براي بسیاري از کابردها می توان از آن استفاده نمود. در این بخش قصد داریم توضیحات مختصري در ارتباط با نحوه ي پیاده سازي
شبکه هاي SOM در این نرم افزار ارائه نمائیم.
ساختار لایه ي رقابتی که در نرم افزار مطلب از آن استفاده می شود به فرم ذیل می باشد:
نحوه ساخت یک شبکه ي عصبی رقابتی:
برا این کار از دستور newc استفاده می شود.
net = newc(PR,S,KLR,CLR)
بعد از اجراي دستور شبکه ي ایجاد شده در متغیر خروجی net قرار می گیرد و پارامترهاي ورودي آن عبارتند از PR که یک ماتریس R * 2 می باشد که در آن R تعداد ورودي ها بوده و براي هر ورودي دو مقدار حداقل و حداکثر را نمایش می دهد،
پارامتر S بیانگر تعداد نورونها می باشد، پارامتر KLR نرخ یادگیري کوهونن (پیش فرض برابر ۰٫۰۱ ) را نشان می دهد و در نهایت پارامتر CLR نرخ یادگیري Coscience (پیش فرض برابر ۰٫۰۰۱) را ارائه می کند. در ذیل نمونه اي از اجراي تابع ارائه شده
است:
p = [.1 .8 .1 .9; .2 .9 .1 .8]
p =
۰٫۱۰۰۰ ۰٫۸۰۰۰ ۰٫۱۰۰۰ ۰٫۹۰۰۰
۰٫۲۰۰۰ ۰٫۹۰۰۰ ۰٫۱۰۰۰ ۰٫۸۰۰۰
net = newc([0 1; 0 1],2);
با اجراي تابع فوق یک شبکه ي SOM داراي دو نورون با دو ورودي ایجاد می شود، به صورت پیش فرض وزن اتصالات با استفاده از تابع midpoint مقداردهی اولیه می شود، که برابر مرکز محدوده ي دو ورودي شبکه تنظیم می گردد
wts = net.IW{1,1}
wts =
۰٫۵۰۰۰ ۰٫۵۰۰۰
۰٫۵۰۰۰ ۰٫۵۰۰۰
براي مقداردهی اولیه ي مقادیر Biases نیز از تابع initcon استفاده می شود که براي شبکه ي بالا به صورت ذیل مقدار دهی می گردد:
biases =
۵٫۴۳۶۶
۵٫۴۳۶۶
بعد از ایجاد شبکه براي آموزش آن از توابع متفاوتی می توان استفاده نمود، از جمله این توابع عبارتند از LearnK که بر اساس قانون یادگیري کوهونن عمل می کند و به روز رسانی وزن ها در آن براي واحد i ام که برنده است به صورت ذیل انجام
می گیرد:
تعیین مقادیر Bias:
براي تعیین مقادیر Bias نیز از قانون یادگیري learncon استفاده می شود که استفاده از این قانون به نوعی پیاده سازي الگوریتم وجدان پیشنهادي دسینو می باشد که براي پرهیز از ایجاد نورون هاي مرده استفادهمی شود. بعد از آشنایی با توابع
مورداستفاده جهت آموزش شبکه در ادامه با نحوه ي آموزش شبکه آشنا میشویم. براي آموزش شبکه ایجاد شده از دستور net2=train(net1,p) استفاده می شود که در آن p همان بردارهاي ورودي آموزشی هستند و net2 نیز شبکه ي آموزش داده
شده است. البته، برخی پارامتر هاي قابل تنظیم نیز وجود دارد از جمله net.trainFcn که تابع آموزش را تعیین می کند و به صورت پیش فرض برابر trainr می باشد در ضمن پارامتر net.trainParam.epochs که جهت تنظیم تعداد حداکثر Epoch ها از آن
استفاده می شود. در پایان بعد از آموزش نیز جهت آزمایش شبکه نیز می توان از دستور a=sim(net,p) استفاده نمود.
علاوه بر دستور newc که در بالا مختصري مورد بررسی قرار گرفتن دستور دیگري نیز وجود دارد که شبکه ي SOM دیگري را با قابلیهاي بیشتر ایجاد می کند که در ادامه به بررسی آن می پردازیم.
این شبکه جدید داراي ساختار ذیل می باشد:
دستور newsom:
براي ایجاد این شبکه از دستور 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 فاصله ي همسایگی در مرحله ي همگرایی را نشان می دهد. در ادامه برخی از توضیحات تکمیلی در ارتباط با
پارامترهاي ارسالی به تابع ارائه می شود.براي شبکه عصبی ایجاد شده می توان از انواع مختلفی توپولوژي استفاده نمود، توپولوژیهاي قابل تعریف عبارتند از:
:که به فرم ذیل است. Gridtop (1
:که به فرم ذیل است. Hextop (2
که به فرم ذیل است. Randtop (3
همچنین چهار نوع تابع فاصله ي مختلف وجود دارد که می تواند مورد استفاده قرار گیرند. اولین آنها تابع dist است که همان فاصله ي اقلیدسی می باشد، دومی تابع linkdist می باشد که عبارتست از تعداد اتصالات یا مراحلی که باید در توپولوژي
طی شود تا از یک نورون به نورون دیگر برسیم که قصد تعیین فاصله ي بین آن دو را داریم، سومی تابع boxdist است که شکل ذیل نحوه ي محاسبه ي آن را در توپولوژي grid نشان می دهد، چهارمین و آخرین آنها mandist می باشد که همان فاصله
manhattan را محاسبه می کند.
سایر پارامترهاي ارسالی در آموزش شبکه موثر می باشند که در ادامه آموزش ها به توضیح مختصري از آنها می پردازیم. از شما مخاطبین عزیز سایت همیارپروژه دعوت می کنم که برای انجام پروژه متلب خود آموزش های ما را دنبال نمایید.
سپاس از همراهی شما با آموزش های سایت همیارپروژه
دیدگاهتان را بنویسید