انگیزه از شبکه عصبی ساخت مدلی است که بتوانیم با آن بر پایه یک ورودی، خروجی را پیش بینی کنیم. نخستین گام در شبکه عصبی، ساخت معماری یا ساختار نورون های شبکه است. در نوشته های پیش رو در آموزش فریم ورک Keras، خواهیم گفت که نخستین گام ساخت شبکه عصبی و سپس فاز یادگیری است که در برگیرنده ساخت یک مدل است. پس از آنکه مدل ساخته شد، سپس باید به کمک آن مدل، پیش بینی هایی را انجام دهیم.

مفاهیم و واژگان در یادگیری ماشین

گام های یادگیری ماشین

آماده سازی داده ها

نخستین گام، فراهم کردن و آماده سازی داده (Data Preparation) است. داده ها باید به گونه شماره ای (Numerical) مانند داده های حقیقی (Real Number) باشند. همچنین شاید داده ها به گونه داده های طبقه ای (Categorical)، مانند رشته های Male و Female برای جنسیت باشند. بنابراین در اینجا داده ها دیگر شماره نیستند، بنابراین بر پایه نیازمندی های شبکه عصبی، این داده های طبقه ای، باید به شماره ها نگاشت داده شوند. در این باره، روش های کدگذاری (Encoding) گوناگون مانند One-Hot هست که در پیوند زیر آموزش داده شده است.

  • ورودی شبکه های عصبی باید شماره ای باشد.
  • شبکه های عصبی و فریم ورک هایی مانند Keras، بردارها (Vector) را در ورودی دریافت می کنند.
  • کدگذاری One-Hot& شیوه ای است که داده های رسته ای (یا طبقه ای – Categorical) را به شماره ها نگاشت می دهد. همچنین برگشتی آن یک بردار خواهد بود.
  • کدگذاری One-Hot می تواندبرای مسئله های طبقه بندی دودویی و چندتایی به کار گرفته شود.

ماتریس تصویر چگونه در حافظه ذخیره می شود

ایجاد آرایه ها بوسیله ماژول NumPy

تغییر بعدهای آرایه NumPy

اسلایس بندی آرایه های NumPy

یکی دیگر از کارهایی که در آماده سازی داده ها انجام می شود، نرمال سازی (Normalization) داده ها است که مفهومی ریاضی و در زمینه آمار است. در نرمال سازی همه شماره ها به میان 0 تا 1 نگاشت داده می شوند. برای نمونه گمان کنید که مجموعه داده ای از ماتریس تصویرها داریم. هر درایه ماتریس شماره ای میان 0 تا 255 است که یک پیکسل تصویر را نشان می دهد. بنابراین برای نرمال سازی و نگاشت مقدار همه پیکسل میان 0 تا 1، مقدار همه پیکسل را بر بزگترین شماره، یعنی شماره 255 تقسیم می کنیم.

وزن ها و خطاها و تابع هزینه

همانگونه که گفتیم وزن ها به گونه در آغاز به گونه تصادفی برگزیده (انتخاب) می شوند و مقدار آنها تاثیر مثبتی بر روی خروجی ها دارد. اگر گمان کنیم، پاسخ های درست با y نشان داده شود و پاسخ ارزیابی و برگشتی شبکه عصب با ŷ نشان داده شود، پس توقع ما این است که خروجی شبکه عصبی به گونه ŷ=y یا ŷ بسیار نزدیک به y باشد. اندازه فاصله میان ŷ با y یک خطا است و اگر این خطاها زیاد باشند، پس شبکه عصبی به درستی کار نکرده و از این رو در شبکه های عصبی، باید وزن ها بروز رسانی (Update) شوند.

گمان کنید که در مسئله طبقه بندی دودویی دو کلاس 0 و 1 داریم که کلاس 0 برای بانوان و 1 برای آقایان است. یک گروه از ورودی ها تازه را به مدل ساخته شده می دهیم و توقع داریم پیش بینی های درست انجام شوند ولی در برگشتی، برای یک سطر که توقع داریم برگشتی باید کلاس 0 باشد، ولی کلاس 1 برگشت داده شده است. توجه کنید نباید انتظار داشته باشید که پاسخ (ŷ) برابر با مقدار درست (y) باشد، بلکه پاسخ نزدیک به مقدار درست هستند.

کمینه مجموع مربعات در رگرسیون خطی

ارزیابی الگوریتم طبقه بندی در Scikit-Learn

تابع هزینه میانگین مربع خطا

یکی از تابع های هزینه (Cost Function) تابعی به نام میانگین مربع خطا (Mean Squared Error) یا ESR است که بر پایه معادله زیر، میزان خطا، از میانیگن، محاسبه مربع (توان 2) فاصله میان مقدار پیش بینی شده ŷ با مقدار درست (واقعی) y بدست می آید. توجه کنید یک مجموعه داده دارای چندین نمونه هست که هست، پس مربع فاصله مقدار پیش بینی شده با مقدار درست، به ازای هر کدام از این i نمونه انجام می شود.

تابع هزینه میانگین مربع خطا

یکی از تابع های هزینه (Cost Function) تابعی به نام میانگین مربع خطا (Mean Squared Error) یا ESR است که بر پایه معادله زیر، میزان خطا، از میانیگن، محاسبه مربع (توان 2) فاصله میان مقدار پیش بینی شده ŷ با مقدار درست (واقعی) y بدست می آید. توجه کنید یک مجموعه داده دارای چندین نمونه هست که هست، پس مربع فاصله مقدار پیش بینی شده با مقدار درست، به ازای هر کدام از این i نمونه انجام می شود.

بهینه سازی – Optimization

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

گردایان کاهشی

گرادیان یک ابزار سودمند و کارآمد برای تنظیم پارامترهای مدل انگیزه (هدف) کمینه کردن هزینه است، به ویژه اگر اطلاعات زیادی داشته باشید. به یاد داشته باشید، در شبکه های عصبی مصنوعی و یادگیری ژرف، وزن های نورون ها و بایاس پارامترهای هستند. بنابراین انگیزه از گرادیان کاهشی، پیدا کردن مقدارهایی برای پارامترهای شبکه عصبی است، به گونه ای که اندازه هزینه کاهش پیدا کند. یعنی یافتن پارامترها با کمترین هزینه انگیزه گرادیان کاهشی است.

گرادیان کاهشی تصادفی

گرادیان کاهشی تصادفی (Stochastic Gradient Descent) روشی مبتنی بر تکرار برای بهینه‌ سازی یک تابع مشتق‌ پذیر به نام تابع هدف (تابع هزینه یا Cost Function) است که یک تقریب تصادفی از روش گرادیان کاهشی می‌باشد. در حقیقت گرادیان کاهشی تصادفی الگوریتمی در اختیار ما قرار می‌دهد که طی چند حلقهٔ تکرار مقدار کمینه یک تابع و مقادیری را که با ازای آن‌ها تابع کمینه (Minimum) مقدار خود را می‌گیرد، بدست بیاوریم. تفاوت گرادیان کاهشی تصادفی با گرادیان کاهشی استاندارد در این است که برخلاف گرادیان کاهشی استاندارد که برای بهینه‌سازی تابع هدف از تمام داده‌های آموزشی استفاده می‌کند، گرادیان کاهشی تصادفی از گروهی از داده‌های آموزشی که به‌طور تصادفی انتخاب می‌شود برای بهینه‌سازی استفاده می‌کند. این روش در مسائل آماری و یادگیری ماشین کاربرد فراوانی دارد.

پیش بینی

پس از ساخت مدل، دیگر زمان پیش بینی است که گروهی از داده های تازه به مدل فرستاده می شوند. توجه کنید این داده ها تازه هستند و داده هایی که با آنها یادگیری انجام شده، نباید دوباره به کار گرفته شوند. از این رو، بیشتر زمان ها، مجموعه داده های نخستین (اولیه) را به دو دسته داده یادگیری (Training Data) و داده های آزمایش (Test Data) تفسیم می کنند تا با داده های یادگیری مدل ساخته شود و سپس با داده های آزمایش، مدل ارزیابی شود.