ویرگول
ورودثبت نام
مهدی مشایخی
مهدی مشایخی
خواندن ۷ دقیقه·۲ سال پیش

تابع هزینه - Cost Function - مهدی مشایخی

تابع هزینه چیست؟ چه کاربردی دارد؟ مهدی مشایخی
تابع هزینه چیست؟ چه کاربردی دارد؟ مهدی مشایخی

تابع هزینه در مباحث ماشین لرنینگ

تابع ضرر/هزینه چیست؟ «از دست دادن» در یادگیری ماشینی به ما کمک می‌کند تفاوت بین ارزش پیش‌بینی‌شده و ارزش واقعی را درک کنیم. تابعی که برای تعیین کمیت این اتلاف در مرحله آموزش به شکل یک عدد واقعی استفاده می شود، به عنوان "تابع ضرر" شناخته می شود. اینها در آن دسته از الگوریتم های یادگیری تحت نظارت که از تکنیک های بهینه‌سازی استفاده می کنند استفاده می شود. نمونه‌های قابل‌توجهی از این الگوریتم‌ها رگرسیون ،  رگرسیون لجستیک و غیره است. اصطلاحات تابع هزینه و تابع ضرر مشابه هستند.

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

اما چرا از تابع هزینه استفاده میکنیم؟

چرا به یک تابع هزینه نیاز داریم؟ سناریویی را در نظر بگیرید که در آن می خواهیم داده ها را طبقه‌بندی کنیم. فرض کنید جزئیات قد و وزن برخی از گربه ها و سگ ها را داریم. اجازه دهید از این 2 ویژگی برای طبقه‌بندی صحیح آنها استفاده کنیم. اگر این رکوردها را رسم کنیم، نمودار پراکندگی زیر را دریافت می کنیم:

نمودار پراکندگی برای قد و وزن سگ ها و گربه های مختلف
نمودار پراکندگی برای قد و وزن سگ ها و گربه های مختلف


نقاط آبی گربه و نقاط قرمز سگ هستند. در زیر چند راه حل برای مشکل طبقه‌بندی بالا آورده شده است.

راه حل های احتمالی برای مشکل طبقه‌بندی ما
راه حل های احتمالی برای مشکل طبقه‌بندی ما


اساساً هر سه طبقه‌بندی‌کننده دقت بسیار بالایی دارند، اما راه‌حل سوم بهترین است زیرا هیچ نقطه‌ای را اشتباه طبقه‌بندی نمی‌کند. دلیل اینکه همه نقاط را کاملاً طبقه‌بندی می کند این است که خط تقریباً دقیقاً در بین دو گروه قرار دارد و به هیچ یک از گروه ها نزدیکتر نیست. اینجاست که مفهوم تابع هزینه مطرح می شود. تابع هزینه به ما کمک می کند به راه حل بهینه برسیم. تابع هزینه، تکنیک ارزیابی «عملکرد الگوریتم/مدل ما» است.

هم خروجی های پیش بینی شده توسط مدل و هم خروجی های واقعی را می گیرد و محاسبه می کند که مدل چقدر در پیش بینی خود اشتباه بوده است. اگر پیش‌بینی‌های ما با مقادیر واقعی تفاوت زیادی داشته باشد، عدد بالاتری به دست می‌دهد. همانطور که مدل خود را برای بهبود پیش‌بینی‌ها تنظیم می‌کنیم، تابع هزینه به عنوان شاخصی از بهبود مدل عمل می‌کند. این در اصل یک مشکل بهینه‌سازی است. هدف استراتژی های بهینه‌سازی همیشه "به حداقل رساندن تابع هزینه" است.

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

توابع هزینه زیادی در یادگیری ماشین وجود دارد و هر کدام بسته به اینکه مشکل رگرسیونی یا طبقه‌بندی باشد، موارد استفاده خود را دارد.

  1. تابع هزینه رگرسیون
  2. توابع هزینه طبقه‌بندی باینری
  3. توابع هزینه طبقه‌بندی چند طبقه

1. تابع هزینه رگرسیون:

مدل‌های رگرسیون با پیش‌بینی یک مقدار پیوسته مانند حقوق یک کارمند، قیمت خودرو، پیش‌بینی وام و غیره سروکار دارند. آنها بر اساس خطای فاصله به صورت زیر محاسبه می شوند:

خطا = y-y'

جایی که،

Y - ورودی واقعیY' – خروجی پیش بینی شده

بیشترین استفاده از توابع هزینه رگرسیون در زیر آمده است:

1.1 میانگین خطا (ME)

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

1.2 میانگین مربعات خطا (MSE)

  • این ایرادی را که در Mean Error در بالا با آن مواجه شدیم بهبود می بخشد. در اینجا یک مربع از تفاوت بین مقدار واقعی و پیش بینی شده محاسبه می شود تا از هرگونه احتمال خطای منفی جلوگیری شود.
  • به عنوان میانگین مجموع اختلاف مجذور بین پیش بینی ها و مشاهدات واقعی اندازه گیری می شود.

MSE = (مجموع مجذور خطاها)/n

  • همچنین به عنوان از دست دادن L2 شناخته می شود.
  • در MSE، از آنجایی که هر خطا مربع است، به جریمه کردن انحرافات کوچک در پیش بینی در مقایسه با MAE کمک می کند. اما اگر مجموعه داده‌های ما دارای مقادیر پرت باشد که به خطاهای پیش‌بینی بزرگ‌تر کمک می‌کند، در این صورت مربع کردن بیشتر این خطا ، خطا را چندین برابر بیشتر می‌کند و همچنین منجر به خطای MSE بالاتر می‌شود.
  • از این رو می توان گفت که نسبت به موارد پرت مقاومت کمتری دارد

1.3 میانگین خطای مطلق (MAE)

  • این تابع هزینه همچنین کمبود میانگین خطا را به طور متفاوتی برطرف می کند. در اینجا یک تفاوت مطلق بین مقدار واقعی و پیش بینی شده محاسبه می شود تا از هرگونه احتمال خطای منفی جلوگیری شود.
  • بنابراین در این تابع هزینه، MAE به عنوان میانگین مجموع تفاوت های مطلق بین پیش بینی ها و مشاهدات واقعی اندازه گیری می شود.

MAE = (مجموع خطاهای مطلق)/n

  • همچنین به عنوان ضرر L1 شناخته می شود.
  • نسبت به موارد پرت مقاوم است، بنابراین حتی زمانی که مجموعه داده ما دارای نویز یا نقاط پرت باشد، نتایج بهتری به دست خواهد آورد.

2. توابع هزینه برای مسائل طبقه‌بندی

توابع هزینه مورد استفاده در مسائل طبقه‌بندی با آنچه ما در مسئله رگرسیون استفاده می کنیم متفاوت است. یک تابع زیان که معمولاً برای طبقه‌بندی استفاده می شود، از دست دادن متقابل آنتروپی است. اجازه دهید آنتروپی متقاطع را با یک مثال کوچک درک کنیم. در نظر بگیرید که ما یک مشکل طبقه‌بندی 3 کلاس به شرح زیر داریم.

کلاس (پرتقال، سیب، گوجه فرنگی)

مدل یادگیری ماشین توزیع احتمالی از این 3 کلاس را به عنوان خروجی برای یک داده ورودی داده شده ارائه می دهد. کلاسی که بیشترین احتمال را دارد به عنوان کلاس برنده برای پیش بینی در نظر گرفته می شود.

خروجی = [P (نارنجی)، P (سیب)، P (گوجه فرنگی)]

توزیع احتمال واقعی برای هر کلاس در زیر نشان داده شده است.

نارنجی = [1,0,0]

سیب = [0،1،0]

گوجه فرنگی = [0,0,1]

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


این فقط یک شهود پشت آنتروپی متقابل بود. منشأ آن در نظریه اطلاعات است. اکنون با این درک از آنتروپی متقابل، اجازه دهید اکنون توابع هزینه طبقه‌بندی را ببینیم.

2.1 توابع هزینه طبقه بندی چند طبقه

این تابع هزینه در مسائل طبقه بندی که در آن چندین کلاس وجود دارد و داده های ورودی فقط به یک کلاس تعلق دارد استفاده می شود. اکنون بیایید بفهمیم که آنتروپی متقاطع چگونه محاسبه می شود. فرض کنید که مدل توزیع احتمال را به صورت زیر برای کلاس های 'n' و برای یک داده ورودی خاص D ارائه می دهد.

و توزیع احتمال واقعی یا هدف داده D است

سپس آنتروپی متقاطع برای آن داده خاص D به صورت محاسبه می شود

از دست دادن آنتروپی متقاطع (y,p) = – y T log(p)

= -(y 1 log (p 1 ) + y 2 log (p 2 ) + ……y n log (p n ) )

اکنون اجازه دهید تابع هزینه را با استفاده از مثال بالا تعریف کنیم (به تصویر آنتروپی متقاطع -شکل 3 مراجعه کنید).

p (گوجه فرنگی) = [0.1، 0.3، 0.6]

y (گوجه فرنگی) = [0، 0، 1]

متقاطع آنتروپی(y,P) = – (0*Log(0.1) + 0*Log(0.3)+1*Log(0.6)) = 0.51

فرمول فوق فقط آنتروپی متقاطع را برای یک مشاهده یا داده ورودی واحد اندازه گیری می کند. خطا در طبقه‌بندی برای مدل کامل با آنتروپی متقاطع طبقه‌بندی می‌شود که چیزی جز میانگین آنتروپی متقاطع برای تمام داده‌های آموزشی N نیست.

آنتروپی متقاطع = (مجموع آنتروپی متقاطع برای N داده)/N

2.2 تابع هزینه آنتروپی متقاطع باینری

آنتروپی متقاطع باینری یک مورد خاص از آنتروپی متقاطع طبقه‌ای است که تنها یک خروجی وجود دارد که فقط مقدار دودویی 0 یا 1 را برای نشان دادن کلاس منفی و مثبت فرض می‌کند. به عنوان مثال - طبقه‌بندی بین گربه و سگ.

انتقادات و پیشنهاد خود را در پایین همین مقاله با ما در میان بگذارید!

منبع


ممنون که این مطلب رو خوندید ، اگه سوالی درمورد برنامه نویسی داشتید میتونید در شبکه های اجتمایی من بپرسید.

ارتباط با من :

وبسایت : mahdimashayekhi.ir

گیت هاب: MahdiMashayekhi-AI

لینکدین: MahdiMashayekhi

توییتر: Mashayekhi_AI

یوتیوب: MahdiMashayekhi

اینستاگرام: MahdiMashayekhi.ai

مهدی مشایخیتابع هزینهcost functionپایتونماشین لرنینگ
مهدی مشایخی هستم. برنامه نویس هوش مصنوعی و پایتون در زمینه یادگیری ماشینی و عمیق. به همه کمک میکنم تا با هم رشد کنیم! من در توییتر: https://twitter.com/Mashayekhi_AI
شاید از این پست‌ها خوشتان بیاید