Alireza Sadeghi
Alireza Sadeghi
خواندن ۳ دقیقه·۲ سال پیش

epoch or iteration | تفاوت بین دو مفهوم

حتما برای شما هم پیش آمده بود که به صفحه نگاه می کردید و سر خود را می خاراندید و از خود می پرسیدید که «چرا این دو عبارت را در کد خود استفاده می کنم و تفاوت بین آنها چیست؟» زیرا آنها بسیار شبیه به هم هستند. این یک سردرگمی کاملاً رایج در یادگیری ماشین است که معمولاً با آن مواجه هستیم که اوایل مطالعه یادگیری ماشین خودم نیز با آن روبرو شدم بنابراین می خواهم آن را برای کسی مثل خودم حل کنم.


برای درک هر یک از موارد زیر بهتر است توضیح مختصری درباره نزول گرادیان(gradient descent) داشته باشیم که پایه درک ما را تشکیل می دهد.

  • نزول گرادیان | 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 تکرار داریم و به روز رسانی مدل در هر تکرار یعنی بعد از هر دسته در یک دوره اتفاق می افتد.



امیدوارم این به شما کمک کند تا تصویر واضحی از درک این مفاهیم به دست آورید.

منابع: درس یادگیری عمیق سایت Coursera

یادگیری ماشینهوش مصنوعیشبکه عصبی مصنوعی
دانشجو/ علاقمند به هنر /درحال شناخت [خود]
شاید از این پست‌ها خوشتان بیاید