شبکه به صورت MPL سه لایه (ورودی، خروجی و یک لایه مخفی) پیاده ساز ی شده است . تعداد نرونها در لایه ورودی 450 (به تعداد عناصر بردار ویژگی)، در لایه مخفی 50 و در لایه خروجی 32عدد (به تعداد حروف فارسی) است.


تابع فعال سازی همه نرونهای لایه مخفی ولایه خروجی به این صورت است.(این تابع در نرم افزار MATLAB با پارامتر logsig معرفی می شود). تابع فعال سازی نرونهای ورودی، تابع خطی همانی است زیرا می خواهیم خروجی آنها، حاصل جمع وزندار ورودیها باشد.در حالت ایده آل، می خواهیم با اعمال هرحرف ورودی، نرون خروجی متناظر با آن، مقدار یک و بقیه نرونها مقدار صفر داشته باشند. مثلاٌ اگر حرف ورود ی "ج " بود، خروجی نرون ششم لایه خروجی برابر با یک و بقیه خروجیها صفر باشند. با اعمال این ورودیها به شبکه، خروجی های لایه ورودی به لایه مخفی و خروجیهای این لایه به لایه خروجی می رود . خروجی های شبکه مقداری حقیقی بین صفر و یک دارند (مقدار تابع logsig بین صفر و یک است). با توجه به اینکه کدام خروجی بیشترین مقداررا دارد، حروف ورود ی تشخیص داده می شود(مثلاٌ اگر خروجی نرون ششم لایه خروجی بیش از مقدار خروجی سایرنرونهای این لایه بود، حرف ورودی "ج " تشخیص داده می شود).
برای آموزش شبکه از الگوریتم Backpropagation با learning rate دینامیک و بهره گیری از ممان استفاده کرده ایم (این الگوریتم در نرم افزار MATLAB با پارامتر traingdx مشخص می شود). سایر پارامترهای الگوریتم یادگیری عبارتند از:
• ثابت ممان (a) برابر با 95%
• تعداد گذاره های الگوریتم (epochs) برابر با 5000
• تابع خطای SSE کمتراز2%
باید توجه داشت که نمی توان مقادیرSSE وepochs را به میزان زیادی تغییرداد زیرا افزایش تعداد گذرها سبب طولا نی تر شدن زمان یادگیری می شود وافزایش مقدارخطا ی مجاز، هر چند ممکن است به همگرایی شبکه کمک کند ولی سبب افزایش درصد تشخیص اشتباه خواهد گشت[1].

برای آموزش شبکه دو نکته را در نظر گرفته ایم:
آموزش، تدریجی انجام می شود . یعنی ابتدا الگوریتم را با 20 بردارورودی اجرا می کنیم . پس از اتمام یادگیری، 20 بردار دیگر را به 20 بردار قبلی اضافه می کنیم و مجدد اٌ الگوریتم را با این 40 ورودی اجرا می نماییم وهر بار چند بردار به مجموعه قبلی می افزاییم تا بردارهای ورودی به تعداد قابل توجهی برسند . سپس کل بردارها را اعمال می کنیم. تفاوت آموزش تدریجی با روش عادی این است که دراین نوع آموزش پس از پردازش تعداد کمتری از ورودیها، وزنها تغییر می یابند.(گذرها کوتاه تر هستند). این مسأله بخصوص درمراحل اولیه الگوریتم که وزنها مقدار تصادفی دارند مفید است زیرا درزمان کوتاهی، وزنها به مقدارنهایی و مطلوب خود نزدیک می شوند.
در این پروژه ، پس از اینکه تعداد ورودیها به 140 می رسید، شکل نمی توانست همگرا شود و حتی پس از اعمال تغییرات و ساده سازیها نتوانستیم این عدد را بیش از 240 کنیم . این مشکل نشانگر آن است که بردارهای ورودی مناسبی به شبکه اعمال نکرده ایم . یعنی بین اعضای دو کلاس یکسان (مثلاٌ دو حرف یکسان که توسط دو فرد نوشته شده اند) تفاوت زیادی وجود دارد ولی گاهی بین اعضا ی دوکلاس متفاوت شباهت وجود دارد( مثلاٌ دوحرف " ن " و " ق " که توسط یک نفر نوشته شده اند).

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

تغییرات و ساده سازیها
برای رفع مشکل عدم همگرایی، تعداد نرونهای لایه مخفی را در چند مرحله افزایش دادیم تا به 150 نرون رسید . در این حالت نیز شبکه همگرا نشد . البته با توجه به تعداد نرونهای ورودی(450)،150 تعداد کمی است ولی ازآنجا که با افزایش نرونهای لایه مخفی، زمان وحافظه لازم برا ی یادگیری به شدت افزایش می یابد، این تعداد را بیش از این افزایش ندادیم .
اقدام دیگر، کم کردن تعداد کلاسها ی خروجی با حذف حروف مشابه بود . مثلا " از بین حروف "ب "، "پ " ، " ت " و "ث "، تنها حرف "ب " به عنوان ورودی اعمال شد و بردارها ی وروی بقیه این حروف، حذف گردیدند. با اینکار تفاوت بین کلاسها ی مختلف افزایش یافته و لذا امکان همگرایی شبکه بیشتر می گشت. در صورت موفقیت این کار، می توانستیم همانند کار انجام شده در [ 8]، با حذف نقطه ها وبنابراین لازم است تعداد نرونهای ورود ی(به عبارت دیگر، تعداد اعضا ی بردار ویژگی) کاهش یابد. استخراج شکل اصلی حروف (که معمولأ بزرگترین مولفه همبندی شکل حرف است) کار تشخیص توسط شبکه عصبی را آسان تر سازیم.

مطالب مشابه

تنظيم خروجيها روي صفحه نمايش ب

اگر مقدار يك متغير را بخواهيد بدانيد مي توانيد آن

آموزش كاربردي مباحث پيشرفته با

آموزش كاربردي مباحث پيشرفته با Matlab            

معادلات دیفرانسیل معمولی – کار

توابع ODE در متلب بمنظور حل معادلات دیفرانسیل معمو

ايجاد شبكه‌هاي عصبي با ابزار G

به طور كلي در نرم‌افزار MATLAB به سه روش مي‌توان ش

کارهای ریاضی با MATLAB

این فایل بسیار سودمند تقدیم به تمام مهندسان که به

تحلیل مدار و الکترونیک با استف

کتابی که مشاهده می کنید، شامل 12 فصل زیر است:

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید