گرادیان کاهشی تصادفی

2 دقیقه |  2020/11/29

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

گرادیان کاهشی تصادفی به روشی متفاوت اما مشابه نوشته می‌شود:

$$ cost(\theta, (x ^{(i)}, y ^{(i)})) = \frac{1}{2} (h_\theta (x ^{(i)}) - y ^{(i)}) ^ 2 $$

تنها تفاوت در تابع هزینه فوق حذف ثابت m در داخل $\frac{1} {2} $ است.

$$ J_ {train} (\theta) = \frac{1}{m} \sum _ {i = 1} ^ m cost cost(\theta, (x ^{(i)}, y ^{(i)})) $$

$J_ {train} $ اکنون فقط میانگین هزینه ای است که برای همه نمونه های آموزشی ما اعمال می‌شود.

الگوریتم به شرح زیر است:

  1. به طور تصادفی مجموعه داده را مخلوط کنید
  2. برای $i = 1 … m $ $$ \Theta _ j := \Theta _ j - \alpha (h_\Theta (x ^{(i)}) - y ^{(i)}) . x _ j ^ {(i)} $$

این الگوریتم فقط سعی می‌کند هر بار یک نمونه آموزشی را متناسب (fit) کند. به این ترتیب می‌توانیم در گرادیان کاهشی پیشرفت کنیم بدون اینکه ابتدا همه نمونه های آموزشی m را اسکن کنیم. در گرادیان کاهشی تصادفی بعید به نظر می‌رسد در مینیمم اصلی همگرا شود در عوض به صورت تصادفی در اطراف آن سرگردان خواهد شد، اما معمولا نتیجه ای می‌دهد که به اندازه کافی نزدیک است. در گرادیان کاهشی تصادفی معمولا ۱ تا ۱۰ بار طول می کشد که برای مجموعه داده شما به مینیمم ملی برسد.

گرادیان کاهشی Mini-Batch

گرادیان کاهشی Mini-Batch گاهی ممکن است از گرادیان کاهشی تصادفی سریعنر باشد.

به جای استفاده از همه نمونه های m مانند گرادیان کاهشی تصادفی و به جای استفاده از فقط یک نمونه در گرادیان کاهشی، ما از b استفاده خواهیم کرد.

مقادیر معمول برای b در محدوده بین ۲ تا ۱۰۰ است.

به طور مثال برای b=10 و m=1000:

تکرار کنید:

برای $i = 1, 11, 21 ,31 , …, 991$

$$ \theta _ j := \theta _ j - \alpha \frac{1}{10} \sum _ {k = i } ^ {i + 9} (h_ \theta (x ^ {(k)}) - y ^ {(k)}) x ^ {(k)} _ j $$

ما به سادگی همزمان بیش از ده نمونه را جمع بندی می‌کنیم. مزیت محاسبه بیش از یک نمونه در یک زمان این است که می توانیم از پیاده سازی های برداری شده نسبت به نمونه های b استفاده کنیم.