تفاوت بین Epoch، Batch و Mini-Batch در یادگیری عمیق
تفاوت بین Epoch، Batch و Mini-Batch در یادگیری عمیق
در یادگیری ماشین بهخصوص در یادگیری عمیق، مفاهیمی مثل «epoch»، «batch» و «mini-batch» از جمله مفاهیم کلیدی هستند که مستقیماً روی نحوهی آموزش مدل، سرعت همگرایی و دقت نهایی تاثیر میگذارند. در این مقاله به زبان ساده این مفاهیم را توضیح میدهیم و بررسی میکنیم که چگونه در فرآیند آموزش مدلها نقش دارند.
مرورمفهوم گرادیان نزولی
گرادیان نزولی (Gradient Descent) یکی از رایجترین روشها برای بهینهسازی وزنها در مدلهای یادگیری ماشین است. این روش به صورت تکراری عمل میکند:
- ابتدا مدل روی دادهها پیشبینی انجام میدهد و خطا (یا همان تابع هزینه) را محاسبه میکند.
- سپس با استفاده از مشتقگیری (گرادیان)، مشخص میکند که وزنها را در چه جهتی باید تغییر دهد تا خطا کاهش یابد.
- در نهایت وزنها را به میزان مشخصی در خلاف جهت گرادیان بهروزرسانی میکند.
حال بسته به اینکه در هر مرحله برای بزوررسانی پارامتر های اموزشی از چند نمونهی آموزشی استفاده میکنیم، سه نوع رویکرد اصلی وجود دارد.
Batch Gradient Descent
در این روش بچ گرادیان نزولی، مدل تمام دادههای آموزشی را در یک مرحله (یک batch بزرگ) استفاده میکند، گرادیان را حساب کرده و سپس وزنها را آپدیت میکند. به دلیل پردازش کل دادهها، این روش دقت بالایی دارد، اما در دیتاستهای بزرگ بسیار کند است و حافظه زیادی مصرف میکند. این روش بیشتر برای شبکههای کوچک یا پروژههای ساده استفاده میشود.

Stochastic Gradient Descent (SGD)
در روش گرادیان نزولی تصادفی SGD، وزنها به ازای هر نمونهی آموزشی بهروزرسانی میشوند. یعنی در هر مرحله فقط یک نمونه وارد مدل میشود، گرادیان محاسبه و وزنها آپدیت میشوند. این باعث سرعت بالای یادگیری اولیه میشود، اما چون فقط از یک نمونه استفاده میشود، ممکن است مسیر یادگیری بسیار نوسانی و ناپایدار باشد.

Mini-Batch Gradient Descent
این روش ترکیبی از دو روش بالاست. در هر مرحله، دستههای کوچکی از دادهها (مثلاً 32 یا 64 نمونه) به مدل داده میشود، سپس گرادیان براساس آن mini-batch محاسبه و وزنها آپدیت میشوند. این روش هم سرعت خوبی دارد و هم نسبتاً پایدار است، به همین دلیل رایجترین روش در یادگیری عمیق محسوب میشود. همچنین با سختافزارهایی مثل GPU به خوبی سازگار است.

مفاهیم کلیدی
در این بخش سه واژهی مهم را به صورت جداگانه تعریف میکنیم:
- Batch: مجموعهای از دادهها که در یک مرحله برای اموزش به مدل داده میشود. در روش کلاسیک، batch کل دادههای آموزش است.
- Mini-Batch: بخش کوچکی از دادههای آموزش است که در هر مرحلهی آموزش (iteration) به مدل داده میشود.
- Epoch: یک دوره کامل آموزش است. یعنی یک بار عبور کامل از تمام دادههای آموزشی. اگر کل دادهها 1000 تصویر باشد، و هر بار 100 تصویر وارد مدل شود، آنگاه هر epoch شامل 10 iteration خواهد بود.
- Iteration: هر بار که یک mini-batch به مدل داده میشود و وزنها بهروزرسانی میشوند، یک iteration انجام شده است.

برای درک بهتر مفاهیم بالا یک مثال با هم بررسی می کنیم فرض کنیم:
- تعداد کل نمونهها: 2000
- اندازه mini-batch: 64
- تعداد epoch: 4
در این حالت، تعداد iteration هایا همان تکرارا فرایند اموزشی یا همان تکرار وزن ها در هر epoch برابر است با 2000 تقسیم بر 64 که تقریباً برابر با 31 می باشد. در مجموع کل فرایند اموزشی تعداد تکرار ها در 4 اپک با 31 تکرار در هر اپک برابر 124 iteration خواهد بود.
نکات تکمیلی
- وزنهای مدل معمولاً در انتهای هر iteration بهروزرسانی میشوند، نه در پایان هر epoch.
- استفاده از mini-batch باعث میشود هم سرعت بالاتری در آموزش داشته باشیم و هم نیاز به حافظهی کمتری داشته باشیم.
- در معماریهایی که از Batch Normalization استفاده میکنند، میانگین و واریانس در هر mini-batch بهصورت مجزا محاسبه میشود.
- لایهی Batch Normalization دارای دو پارامتر قابل یادگیری به نام گاما (γ) و بتا (β) است که برای هر کانال به صورت مستقل تعریف میشوند و در طول آموزش با الگوریتمهای مبتنی بر گرادیان نزولی بهروزرسانی میشوند.
نتیجهگیری
در آموزش مدلهای یادگیری ماشین، انتخاب بین batch، mini-batch یا stochastic تأثیر زیادی روی عملکرد نهایی دارد. امروزه mini-batch gradient descent به عنوان روش استاندارد در آموزش مدلهای یادگیری عمیق شناخته میشود، زیرا بهترین توازن بین دقت، سرعت و مصرف منابع را ارائه میدهد.

دیدگاه (1)
شاهین
ممنون از تلاش شما برای توضیح موضوعات فنی با زبان ساده و قابل فهم