Machine Learning Problem Set 04
Machine Learning Problem Set 04
در این تمرین می بایست برنامه ای بنویسید که با استفاده از شبکه عصبی چند لایه حالات مختلف صورت افراد را تشخیص دهد .در واقع در
اینجا از شبکه عصبی به عنوان یک شناساگر استفاده خواهد شد .هدف نهایی بدست آوردن ماکزیمم تعداد epochخا و تعداد نورون های
لایه میانه برای آموزش بهینه با کمترین خطا می باشد.
می توانید از داده ها در لینک ارائه شده در کتاب و یا فایل ضمیمه شده ،استفاده نمایید .داده های شامل 426تصویر در اندازه 23*22می
باشد که در کل شامل 023پیکسل خواهد ب ود .برای استفاده از این داده ها می توانید با استفاده از نامی که برای هر یک از تصاویر انتخاب
شده مورد مد نظر برای دسته بندی را انتخاب نمایید .برای مثال می توانید هر یک از موارد ،عینک داشتن ،وجه صورت افراد و یا حالت چهره
شاد داشتن را ،مورد بررسی قرار دهی د .برای اینکه هر تصویر را به صورت داده ورودی شبکه در نظر گیرید هر تصویر را به صورت ستونی
ذخیره کنید .خروجی را نیز برای هر یک از داده ها ،با بررسی اسم آن (برای مثال عینک داشتن) به کمک دستور زیر مشخص نمایید:
if size(strfind(data(i).name,'sunglasses'))>0
;output(i) = 1
else
;output(i) = 0
end
در نهایت از 426داده حاصل 553تا به عنوان داده آموزشی در نظر بگیرید ،در هر گام نیز 53داده را نیز به عنوان داده ارزیاب در نظر گرفته
و آموزش را مورد ارزیابی قرار دهید و در آخر نیز 26داده باقی مانده را به عنوان داده های تست در نظر بگیرید.
.2ساختار شبکه
ساختار شبکه ،یک شبکه سه لایه با یک لایه پنهان حاوی چند نرون با تابع فعال ساز سیگموئید تک قطبی میباشد که در نهایت یک خروجی
را برای تشخیص دو یا چند نوع کلاس بر اساس انتخاب شما در مورد تصاویر ،به کار می گیرد .در لایه ورودی 043ورودی وجود خواهد داشت
که هر یک نشانگر یک وضعیت رنگ یک پیکسل در تصویر ورودی است .مقادیر لایه میانی نیز در ادامه در قالب تکرار روند آموزش و محاسبه
ی کمترین خطای میانگین بدست خواهید آورد .برای مثال در مثال تشخیص عینک ،تک نرون خطی لایه ی خروجی نیز میتواند یکی از
مقادیر صفر یا یک را اختیار کند که نشان دهنده داشتن یا نداشتن عینک در تصویر است.
.3نحوه بدست آوردن بیشترین epochبهینه
برای بدست آوردن بیشترین Epochبهینه روند آموزش شبکه عصبی با دادههای آموزشی و تست یکسان برای چند Epochمختلف تکرار
کنید و در هر تکرار خطای میانگین حاصله را با استفاده از دستور )( mseبر روی کل خطا ها بدست آورده و ذخیره کنید .در پایان Epoch
ی که کمترین میزان خطای میانگین را بدست می دهد برای آموزش نهایی انتخاب نمایید .برای این کار از تعداد epoch 53شروع کنید و با
گام های 5یا 03به تعداد epochها اضافه نمایید و تغییرات آن را برای انتخاب مقدار بهینه بررسی کنید.
برای بدست آوردن تعداد نرون های لایه میانی بهینه روند آموزش شبکه عصبی با دادههای آموزشی و تست یکسان و تعداد تکرار بیشینه بدست
آمده در قسمت قبل برای تعداد نورون های میانی مختلف تکرار نمایید و در هر تکرار خطای میانگین حاصله را ذخیره نمایید .در پایان تعداد
نرون لایه ی میانی ای که کمترین میزان خطای میانگین را بدست میدهد برای آموزش نهایی انتخاب کنید و گزارش کنید.
تمرین را در روز مقرر در سایت دانشگاه آپلود نمایید .دقت کنید که پس تاریخ و ساعت مقرر شده ،سامانه دانشگاه برای تمرین ارسالی شما
تاخیر را درج خواهد کرد .تمرین فوق را با نرم افزار متلب پیاده سازی نمایید و دقت کنید که فایل اصلی متلب که اجرای اصلی برنامه شما
روی آن قرار دارد ،حتما با نام mainذخیره شده باشد .تمام فایل های مربوط به برنامه خود را در پوشه ای جداگانه به نام
faceRecognitionگذاشته و در کنار این پوشه گزارش خود را نیز قرار دهید.
موفق باشید
الهام رحیمی