Batch , Stochastic , Mini-Batch Gradient Descent

/*! elementor - v3.17.0 - 08-11-2023 */ .elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}

Batch, Mini Batch & Stochastic Gradient Descent

در این بخش به بررسی تفاوت های Batch , Mini-Batch , Stochastic Gradient Decent میپردازیم. برای این بررسی این موضوع ابتدا به معرفی الگوریتم Gradient Decent میپردازیم.

 

Gradient Decent

برای توضیح این الگوریتم ابندا بیایید تگاهی به تعریف گرادیان (Gradient) بیانداریم :

یک گرادیان ، تغییرات خروجی یک تابع را به ازاء تغییرات کوچکی از ورودی (ها) را اندازه گیری میکند (Lex Fridman-MIT)

اما گرادیان کاهشی (Gradient Decent) چیست؟

برای درک این مفهوم فرض کنید در ارتفاعی از یک کوه با چشمان بسته قرار دارید و میخواهید به پایین ترین نقطه آن کوه برسید و برای این کار فقط به شما یک عصا داده شده که میتوانید ارتفاع نقاط اطراف خود را نسبت به نقطه فعلی بسنجید.

برای تحقق این امر مراحل زیر را تا زمانی که به پایین ترین تقطه نرسیدیم طی میکنیم:

  1. چک کردن ارتفاع نقاط اطراف با نقطه فعلی:
    • اگر هیچ نفطه ای پیدا نشد که ارتفاع آن نسبت به نقطه کنونی کمتر باشد ⇐ الگوریتم به پیایان میرسد و شما در پایین ترین نقطه قرار دارید!
  2. در مرحله قبل اگر نقطه ای پیدا کردید که ارتفاع آن نسبت به مکان فعلی شما کمتر باشد به آن نقطه بروید و به مرحله یک بازگردید.

توضیحات بالا در تصویر زیر نمایش داده شده:

الگوریتم بالا را میتوان به شکل زیر نیز بیان نمود:

(θ next step = θ − η ∇θ MSE (θ

که η را learning rate یا نرخ یادگیری میگوییم و (MSE (θ همان cost function است که سعی داریم مینیمم شود.

 

Batch Gradient Descent

به زبان ساده در هر مرحله ما θ را نسبت به تمام دیتاست بروز میکنیم که این کار مزایا و معایبی دارد که به آن خواهیم پرداخت اما به طور کلی این روش دقیق است ولی اگر حجم داده ها زیاد باشد (که معمولا هست) بسیار زمان بر و کند است.

/*! elementor - v3.17.0 - 08-11-2023 */ .elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=".svg"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}

Stochastic Gradient Descent

در مقابل روش Batch Gradient Descent که برای حجم داده زیاد کند عمل میکرد ، این الگوریتم در هر مرحله ، یک نمونه تصادفی را از مجموعه داده النتخاب میکند و نسبت به آن θ را بروز میکند. نکته حائز اهمیت این است که در فرآیند یادگیری ، ممکن است از نقطه min دور و نزدیک شویم تا زمانی که دقیقا به آن برسیم که این امری طبیعی است.

Mini-batch Gradient Descent

برای اینکه از مزای دو الگوریتم Stochastic Gradient Descent و Batch Gradient Descent​ استفاده کنیم ، از این روش استفاده میکنیم. اگر روش کار دو مورد قبلی را به خوبی درک کرده باشید این روش ترکیبی از دو روش قبلی میباشد ، به این صورت که در هر مرحله فرآیند محاسبات روی یک گروه تصادفی از داده های دیتاست انجام میشود که این روش از سرعت و دقت خوبی برخوردار است.

Summary

1 - کدام یک از سه الگوریتم گفته شده دارای بیشترین سرعت است؟

  1. Stochastic GD
  2. Batch GD
  3. Mini-Batch GD
  4. همه یکسان اند

2 - کدام یک از سه الگوریتم گفته شده دارای دقیق ترین نتیجه است؟

  1. Batch GD
  2. Mini-Batch GD
  3. گزینه 1 و 4
  4. Stochastic GD

3 - برای استفاده از کدام الگوریتم نیاز به Shuffle  کردن دیتا ها داریم؟

  1. Batch GD
  2. Stochastic GD
  3. هیچکدام
  4. Mini-Batch GD

پاسخ:

  1. Stochastic GD دارای بیشترین سرعت میباشد.
  2. Batch GD دارای دقیق ترین نتیجه است.
  3. برای استفاده از Stochastic GD  نیاز داریم تا دیتا ها Shuffle شوند و ممکن است هر دفعه نتیجه متفاوتی را شاهد باشیم.