تابع ضرر(Loss Function) در شبکه عصبی چیست و چه کاربردی دارد؟

تا اینجا در دوره آشنایی با شبکه های عصبی، به این نتیجه رسیدیم که شبکه عصبی به دنبال یک سری وزن ها(W) و انحراف(b) هست تا بتواند یک سری خط مرزی بین انواع مختلف(مثلا پراید و اتوبوس) رسم کند تا بتواند تفاوت آن ها را درک کند. این کار با استفاده از قانون ضرب و توابع فعال سازی انجام می شد. در این درس آرام آرام به سمت آموزش در شبکه عصبی می رویم. این نکته را بدانیم که.پایه آموزش در شبکه های عصبی تابع ضرر است.

تابع ضرر(Loss Function) یا تابع هزینه(Cost Function) در واقع میزان خطای هر بار اجرای شبکه عصبی را برای داده های آموزشی نمایش می دهد. اجازه دهید یک بار دیگر به شکل زیر نگاه کنیم. این شکل در دروس گذشته بسیار مورد استفاده بود:

 

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

در شبکه های عصبی این کار با تکرار(Iterate) انجام می شود. به گونه ای که چندین بار این جدول بالا، به الگوریتم داده شده و هر بار الگوریتم باید مقدار وزن و بایاس خود را آپدیت کند. در اولین بار اجرای الگوریتم شبکه عصبی، این الگوریتم یک سری مقدار وزن و انحراف اولیه را به بردار وزن ها(W) و انحراف(b) میدهد تا این بردارها یک سری مقدار اولیه داشته باشند. سپس در هر بار اجرا، شبکه عصبی خطای خود را محاسبه می کند و توسط آن مقادیر وزن ها و انحراف را به هنگام(Update) می کند. این محاسبه خطا باید توسط تابع هزینه یا تابع ضرر محاسبه شود. در واقع شبکه با مشاهده مقدار ضرری که در هر بار اجرا داشته است، یاد میگرد که چه مقدار بایستی وزن ها و انحراف را به هنگام(Update) کند.

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

همان طور که میبینید، در دور اول، شبکه توانسته است ۴ تا از ۷ ماشین را درست پیش بینی کند(که میتوان گفت بر اساس شانس بوده است). حال شبکه میتواند بفهد که مقدار خطایش ۳ از ۷ است. یعنی ۳ تا از ۷ ماشین را غلط ارزیابی کرده است. اگر از دروس قبل یادتان باشد، گفتیم اگر خروجی شبکه ۰ بود پراید و اگر خروجی شبکه ۱ بود یعنی منظور شبکه عصبی اتوبوس است. حال با یک فرمول ساده میتوانیم خطا را حساب کنیم. فرمول مانند شکل زیر است:

به تصویر بالا با دقت نگاه کنید. در بسیاری از مقالات و دروس شبکه عصبی، مقدار واقعی را برابر y، و مقداری که شبکه تشخیص داده است را ´y می نامند. اگر این دو مقدار را برای هر کدام از نمونه ها از هم دیگر کم کنیم و قدر مطلق بگیریم، خروجی برای هر کدام از نمونه ها مقدار اختلاف بین تشخیص شبکه و مقدار واقعی را بیان میکند. حال این مقادیر اختلاف را با یکدیگر جمع میکنیم تا مقداری کلی اختلاف به دست بیاید. مثلا در اینجا عدد ۳ به دست آمده است. هر چقدر این عدد نهایی بالاتر باشد به این معنی است که شبکه عصبی خطای بیشتری در آن دور(Iteration) دارد. یعنی باید وزن ها و انحراف را به مقداری بیشتری به هنگام سازی(Update) کند. با هر بار به هنگام سازی وزن ها و انحراف یک دور تمام شده و دور بعد شروع می شود. با تغییرات مختلفی که شبکه عصبی در وزن ها و انحراف می دهد در واقع به دنبال پیدا کردن مقدار بهینه برای وزن ها و انحراف است تا بتواند مرزهای مختلف را بین طبقه های متفاوت(مثلا پراید یا اتوبوس) پیدا کند. در واقع کار اصلی شبکه عصبی کم کردن این تابع ضرر تا جای ممکن است. طبیعتا ایده آل برای شبکه عصبی مقدار ۰ است ولی در دروس بعدی به میبینیم که این کار(به صفر رساندن مقدار تابع ضرر) در دنیای واقعی، غیر قابل اجرا است.

 

منابع این بحث و اطلاعات بیشتر

» وب سایت NeuralNetworkAndDeepLearningK

در صورت تمایل به یادگیری بیشتر، منابع بالا در نظر گرفته شده است. می توانید با خواندن این منابع، به یادگیری خود در این زمینه عمق ببخشید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *