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

محتوای حذف‌شده محتوای افزوده‌شده
Arellaa (بحث | مشارکت‌ها)
Rezabot (بحث | مشارکت‌ها)
خط ۲۰:
 
== روش پیاده‌سازی ==
در پیاده‌سازی کلی گرادیان کاهشی تصادفی ابتدا بردار پارامترها که برداری است که شامل تمام پارامترهای تابع هزینه است را <math>\theta</math>می‌نامیم. <math>\theta</math> را برابر برداری دلخواه قرار می‌دهیم سپس برای هر بار به‌روزرسانی این بردار یک عضو از مجموعهٔ داده‌های آموزشی را به صورت تصادفی انتخاب کرده و با نرخ <math>\alpha</math>، بردار حاصل از گرادیان تابع هزینه در نقطه <math>\theta</math>را از <math>\theta</math> کم می‌کنیم:
 
<math>\theta = \theta - \alpha \nabla_\theta \mathcal{J}_\boldsymbol{i}(\theta; x^{(i)},y^{(i)})</math>
 
که در آن <math>\mathcal{J}</math>تابع هزینه و <math>(x^{(i)},y^{(i)}) </math>یک عضو از داده‌های آموزشی است که به صورت تصادفی انتخاب شده‌است و <math>\mathcal{J}_\boldsymbol{i}(\theta; x^{(i)},y^{(i)})</math>نشان‌دهندهٔ جملهٔ <math>\boldsymbol{i}</math>ام از جملات تابع هدف است. <math>\alpha</math>نرخی است که با آن <math>\theta</math>را به‌روزرسانی می‌کنیم و مقداری تجربی دارد که اگر خیلی کوچک باشد زمان رسیدن به همگرایی را طولانی می‌کند و اگر خیلی بزرگ باشد ممکن است همگرایی رخ ندهد.<ref>{{یادکرد وب|نام خانوادگی=S|نویسنده=|نام=Suryansh|کد زبان=|تاریخ=2018-03-12|وبگاه=Hacker Noon|نشانی=https://hackernoon.com/gradient-descent-aynk-7cbe95a778da|عنوان=Gradient Descent: All You Need to Know|بازبینی=2018-10-29}}</ref>
 
در پیاده‌سازی دیگر در هر حلقه عضوی تصادفی از مجموعهٔ داده‌ها انتخاب نمی‌شود بلکه در هر حلقه کل مجموعه داده‌ها یک بار به‌صورت تصادفی بازچینی می‌شود سپس به عملیات به‌روزرسانی به ترتیب به ازای <math>\mathcal{J}_\boldsymbol{1},\mathcal{J}_\boldsymbol{1},...,\mathcal{J}_\boldsymbol{n}</math> انجام می‌شود که <math>\boldsymbol{n}</math>نشان‌دهندهٔ اندازهٔ مجموعهٔ داده‌های آموزشی است. شبه کد زیر این پیاده‌سازی را نشان می‌دهد:
خط ۳۲:
برای <math>\boldsymbol{i}</math>از ۱ تا n تکرار کن:
<math>\theta = \theta - \alpha \nabla_\theta \mathcal{J}_\boldsymbol{i}(\theta; x^{(i)},y^{(i)})</math>
همان‌طور که پیشتر اشاره شد معمولاً عملیات به‌روز رسانی برای <math>\mathcal{J}</math>حاصل از یک تک عضو مجموعهٔ داده‌های آموزشی انجام نمی‌شود و برای زیرمجموعه‌ای از این داده‌ها انجام می‌شود که به آن دستهٔ کوچک می‌گویند.<gallery widths="240" heights="240" perrow="2">
پرونده:Gradient descent.jpg| نحوهٔ عملکرد گرادیان کاهشی برای تابع یک ورودی
پرونده:Gradient descent.png|نحوهٔ عملکرد گرادیان کاهشی برای تابع دو ورودی
خط ۳۸:
 
== مثال ==
فرض کنید در یک مسئلهٔ یادگیری ماشین می‌خواهیم از روش کمترین مربعات استفاده کنیم به طوری که مجموعه‌ای از داده‌های آموزشی به شکل <math>(x^{(i)},y^{(i)}) </math> داریم که در هر دوتایی، <math>x^{(i)} </math>نشان‌دهندهٔ مساحت یک خانه و <math>y^{(i)}</math>نشان‌دهندهٔ قیمت خانه به آن مساحت باشد حال اگر بخواهیم نمودار <math>y</math>را بر حسب <math>x </math>با یک نمدار خطی تقریب بزنیم نیاز به روش کمترین مربعات داریم. طبق این روش بهترین تقریب این نمودار با خط <math>ax+b</math> زمانی اتفاق می‌افتد که تابع <math>\mathcal{J}(a,b) =\left ( \frac{1}{2n} \right ) \textstyle \sum_{i=1}^n \displaystyle((ax^{i}+b)- y^{i})</math>می‌نیمم مقدار خود را داشته باشد. حال در این مثال <math>\mathcal{J}(a,b)</math>تابع هزینه است و به روش گرادیان کاهشی تصادفی می‌شود مقدار <math>a , b</math>را بدست آورد که با ازای آن‌ها تابع هزینه می‌نیمم شود و بهترین تقریب خطی یرای نمودار بدست بیاید.<ref>{{یادکرد وب|نام خانوادگی=Miller|نام=Lachlan|تاریخ=2018-01-10|وبگاه=Medium|نشانی=https://medium.com/@lachlanmiller_52885/machine-learning-week-1-cost-function-gradient-descent-and-univariate-linear-regression-8f5fe69815fd|عنوان=Machine Learning week 1: Cost Function, Gradient Descent and Univariate Linear Regression|بازبینی=2018-10-29}}</ref>
 
== منابع ==
{{پانویس}}
 
<!--- رده‌بندی --->
[[رده:مقاله‌های ایجاد شده توسط ایجادگر]]
[[رده:آمار]]
[[رده:یادگیری ماشینی]]
[[رده:الگوریتم‌های آماری]]
[[رده:الگوریتم‌های یادگیری ماشینی]]
[[رده:بهینه‌سازی محدب]]
[[رده:تخمین‌زن ام]]
[[رده:تقریب‌های آماری]]
[[رده:مقاله‌های ایجاد شده توسط ایجادگر]]
[[رده:یادگیری ماشین کاربردی]]
[[رده:یادگیری ماشینی]]