حتما برای شما هم پیش آمده بود که به صفحه نگاه می کردید و سر خود را می خاراندید و از خود می پرسیدید که «چرا این دو عبارت را در کد خود استفاده می کنم و تفاوت بین آنها چیست؟» زیرا آنها بسیار شبیه به هم هستند. این یک سردرگمی کاملاً رایج در یادگیری ماشین است که معمولاً با آن مواجه هستیم که اوایل مطالعه یادگیری ماشین خودم نیز با آن روبرو شدم بنابراین می خواهم آن را برای کسی مثل خودم حل کنم.
برای درک هر یک از موارد زیر بهتر است توضیح مختصری درباره نزول گرادیان(gradient descent) داشته باشیم که پایه درک ما را تشکیل می دهد.
یک کاسه بزرگ را به عنوان منحنی خطا تصور کنید و باید به پایین ترین قسمت کاسه برسیم که بهترین مجموعه پارامترها در آن قرار دارد. هدف این است که مجموعه ای از مقادیر مختلف را امتحان کنید و به مینیمم سراسری تابع خطا (منحنی) دست یابیم. این از طریق تکرار تنظیمات پارامتر به دست می آید.
نزول گرادیان پارامتری به نام نرخ یادگیری(Learning Rate) دارد.برای اینکه الگوریتم نزول گرادیان به بهینه محلی برسد، باید نرخ یادگیری را روی یک مقدار مناسب تنظیم کنیم که نه خیلی کم باشد و نه خیلی زیاد. زیرا اگر نرخ یادگیری خیلی بزرگ باشند، ممکن است به بهینه محلی نرسد و بین تابع محدب نزول گرادیان به عقب و جلو بچرخد (تصویر سمت چپ). اگر نرخ یادگیری را روی مقدار بسیار کمی تنظیم کنیم،شیب نزول در نهایت به حداقل محلی خواهد رسید، اما ممکن است کمی طول بکشد (تصویر سمت راست).
بنابراین نزول گرادیان را می توان به 3 نوع پیاده سازی کرد:
Batch Gradient Descent: Batch Size = Size of Training Set
Stochastic Gradient Descent: Batch Size = 1
Mini-Batch Gradient Descent: 1 < Batch Size < Size of Training Set
تعریف EPOCH:
بنابراین در یک دوره(epoch)، هر ورودی یک بار از مدل عبور کرده است.
برای تعریف Iteration به تعریف Batch نیاز داریم.
تعریف BATCH: یک دوره می تواند تعدادی دسته(batch) داشته باشد. که کل نمونه های آموزشی به دسته های کوچک تقسیم شدند تا مدل سریع تر آموزش ببیند و یک دوره دسته ای Batch gradient descent نامیده می شود، بنابراین در این مورد کل مجموعه داده به یکباره از مدل عبور می کند و بهینه سازی نیز تنها یک بار مجاز است.
اندازه دسته | Batch Size: تعداد کل نمونه های آموزشی موجود در یک دسته را گویند.
تعریف ITERATIONS:
به عنوان مثال اگر 10000 نقطه داده داشته باشیم و اندازه دسته 200 باشد، در هر دوره 10000/200 تکرار یعنی 50 تکرار داریم و به روز رسانی مدل در هر تکرار یعنی بعد از هر دسته در یک دوره اتفاق می افتد.
امیدوارم این به شما کمک کند تا تصویر واضحی از درک این مفاهیم به دست آورید.