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

با تشکر

دسته بندی ها

+2 امتیاز

سلام
من یه سوال داشتم. فرق بین GD - batch GD- mini batch GD - SGD چیه؟ زمانی که ما توی هر epoch کل دیتا رو به صورت ده تا batch میدیم برای ترینینگ این batch میشه یا mini batch?

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

1 پاسخ

+4 امتیاز
 
بهترین پاسخ

سلام
SGD یا همون Stochastic Gradient Descent یه تقریب از GD یا Gradient Descent (که به Standard Gradient Descent و Batch Gradient Descent و همینطور Steepest Descent هم معروفه ) ارائه میکنه و شیوه کارش بصورت تکراری هست. یعنی هر بار یک نمونه گرفته میشه محاسبات روش انجام میشه و تغییرات اعمال میشه در شبکه . به شیوه online هم معروف هست (در کتاب سایمون هایکن و مارتین هاگان هم توضیح داده شده) .
تو حالت استاندارد یا بچ گرادیان نسبت به کل دیتاست باید حساب بشه . و از اونجایی که باید گرادیان تمامی ترینینگ ست ما برای هر اپدیت محاسبه بشه سربار خیلی زیادی ایجادی میکنه و اگه دیتاست ها بزرگ باشن و قابل جا شدن در مموری نباشن کلا عملی نخواهد بود این کار.
mini-batch هم بین این دوتاست. یعنی بجای محاسبه گرادیان به ازای یک نمونه یا کل ترینینگ ست ، گرادیان به ازای چند نمونه محاسبه میشه که اینطور هم گرادیان پایدار تری بدست میاد و هم اجازه پیاده سازی برداری این فرایند رو بما میده که بشدت سریع و بهینه است. و مشکلات دسته های قبلی رو نداره .

تو سایت فک کنم تو بخش solver اموزش کفی لینک به این سایت دادم که توضیحات خیلی خوبی هم در این مورد و هم سایر سیاست های یادگیری داره پیشنهاد میکنم حتما بخونید.
اپدیت :
اندرو ان جی هم تو اموزش ماشین لرنینگش این بخش رو خیلی خوب توضیح میده که دیدن این کلیپ و این کلیپ از اون آموزشش بشدت پیشنهاد میشه

توسط (4.3k امتیاز)
انتخاب شده توسط
ممنون از پاسختون. من بیشتر ابهامم در مورد سوال دومه؟ آیا اعمال کل داده نه به صورت یکجا بلکه به صورت batch همون mini batch هست یا توی mini batch توی هر epoch فقط یه subset از کل داده گرفته میشه و رو اون کار میشه؟
تا جایی که من اطلاع دارم و اگر اشتباه نکرده باشم چیزی که ما داریم و فریم ورکها همه پیاده سازی کردن همه mini-batch هست. مینی بچ ها در طی یک ایپاک مقادیر مختلفی میگرن (گرادیان حساب میشه وزنها اپدیت میشن و دوباره بچ جدید با داده جدید میرسه) تا نهایتا طی یک دوره کل دیتاست به شبکه ارائه شده باشه .
در حالت batch کل دیتا باید خونده بشه گرادیانها حساب بشن بعد میانگین گرفته بشه و بعد پارامترها بروز بشن. یعنی برای هر اپدیت پارامتر کل دیتاست باید خونده بشه. یعنی بین بچها اپدیتی صورت نمیگیره .
...