به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

با سلام
اگر بخوایم برای یک پروژه که در اون لازمه تصاویر ورودی به 5 دسته یا کلاس تقسیم بشن و یک مقدار رو هم که بین 100 تا 1000 هستش به عنوان خروجی تخمین بزنه برای هر تصویر نیازه که طبقهبندی و رگرسیون در یک مدل همزمان بیاد.
با این شرایط باید دو تابع Loss داشته باشیم یکی برای طبقه بندی از نوع SoftmaxWithLoss و برای تخمین هم EuclideanLoss. حالا چطوری باید این دو loss رو باهم ترکیب کنیم و وزن های مدل رو با اون اصلاح کنیم. با توجه به اینکه مقدار loss من در طبقه بندی در ابتدا 1.5 هست و برای رگرسیون حدود 10500. حالا این دو تا loss رو به چه شکل باید با هم ترکیب کنیم؟

توسط (102 امتیاز)

1 پاسخ

+1 امتیاز

سلام.
برای مساله ای که میگید رویکردهای مختلفی وجود داره. قبل از این که در مورد رویکردها توضیح بدم یه سری نکته در مورد مساله شما بگم.
نکته اول در مورد نرمالیزه یا استاندارد کردن خروجی هستش: تو مساله رگرسیون شما با توجه به جنس توابع هزینه حتما خروجی رو نرمالیزه کنید به یه بازه استاندارد. مثلا خروجی رگرسیون رو بین 0 تا یک نگاشت کنید (مثلا خروجی منهای 100 تقسیم بر 900).
نکته دوم: این که خروجی رگرسیون به جای 100 مقدار 200 رو پیشبینی کنه خطای نرم یک فاصله میشه 100 . این که به جای 1000 بگه 900 هم خطای نرم یک فاصله بازم میشه 100 . یعنی شبکه با جفت خطاها یکسان برخورد میکنه. در حالی که ممکنه برای خیلی از کاربردا خطای حالت دوم (اختلاف 900 با 1000) خطای کوچکتری در اصل باشه. برای رفع این مشکل میتونید کارای مختلفی انجام بدید. مثلا میتونید خطا رو به جای اختلاف مستقیم- اول خروجی رو تقسیم بر خروجی ایده آل بکنید بعد اختلاف رو حساب کنید. در واقع اگه خروجی شبکه p باشه و خروجی ایده آل رو t در نظر بگیرید میتونید عبارت زیر رو به عنوان loss در نظر بگیرید:

norm1((p-t)/t) 

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

حالا میرسیم به سوال اصلی شما یعنی ترکیب loss های مختلف:
برای ترکیب loss خای مختلف رویکردهای مختلفی میشه متصور شد.
رویکرد اول: اول شبکه رو کامل (به صورت end to end) برای تسک recognition آموزش بدید. بعدش یک لایه FC به همراه رگرسیون (کل این دو لایه رو میگیم regression head) به لایه ماقبل آخر اضافه کنید و فقط این head مربوط به رگرسیون رو با loss رگرسیون ترین کنید.
رویکرد دوم: اول شبکه رو برای تسک recognition به صورت کامل و end to end آموزش بدید و بعدش با loss مربوط به رگرسیون شبکه رو دوباره به صورت end to end آموزش بدید. بعدش دوباره برای recognition آموزش بدید و بعدش دوباره برای regression آموزش بدید و به این ترتیب چند استپ ادامه بدید.
رویکرد سوم: ترکیب دو تا loss به یک loss با ضریب رگولارایزر. مثلا یک loss کلی به شکل زیر تعریف کنید:

Total_Loss = Classification_loss + Lambda * Regression_Loss
تو این رابطه lambda یه ضریبه که معمولا به صورت دستی و صحیح و خطلا تنظیم میشه و میزان اهمیت خطای رگرسیون رو نسبت کلسیفیکیشن مشخص میکنه. به طوری که اگه مقدار lambda زیاد باشه یعنی ترم مربوط به رگرسیون اهمیت بیشتری داره. میتونی lambda رو برای شروع یک در نظر بگیری و بعدش مقدار بهینه اش رو با صحیح و خطا بدست بیاری.

بحث کلی:
این تیپ مساءل معمولا تو حوزه object detection تو تصاویر وجود داره که علاوه بر تشخیص نوع جسم (طبقه بندی) باید مختصات جسم (رگرسیون) هم تخیمین زده بشه. برای این که با روشها و رویکردهای مختلف آشنا بشید میتونید مقالات روشهای زیر رو بخوندید:
faster rcnn:
https://arxiv.org/abs/1506.01497
yolo:
https://arxiv.org/abs/1506.02640
yolo-v2:
https://arxiv.org/abs/1612.08242

توسط (540 امتیاز)
ممنون از راهنمایی خوبتون
...