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

محتوای حذف‌شده محتوای افزوده‌شده
جز ویرایش به‌وسیلهٔ ابرابزار:
خط ۲۰:
 
== کاربردها ==
گرادیان کاهشی تصادفی یک الگوریتم محبوب و متداول برای یادگیری طیف گسترده‌ای از مدل‌ها در [[یادگیری ماشین]] است، از جمله [[ماشین بردار پشتیبانی|ماشین‌های بردار پشتیبانی]]، [[رگرسیون لجستیک]] و [[مدل‌های گرافیکی]].<ref>Jenny Rose Finkel, Alex Kleeman, Christopher D. Manning (2008). [http://www.aclweb.org/anthology/P08-1109 Efficient, Feature-based, Conditional Random Field Parsing]. Proc. Annual Meeting of the ACL.</ref> الگوریتم [[بازگشت به عقب]] که عملاعملاً الگوریتم استاندارد برای یادگیری [[شبکه عصبی مصنوعی|شبکه‌های عصبی مصنوعی]] است در واقع روشی برای پیدا کردن گرادیان شبکه برای استفاده در گرادیان کاهشی تصادفی است.<ref>[http://yann.lecun.com/exdb/publis/pdf/lecun-98b.pdf LeCun, Yann A., et al. "Efficient backprop." Neural networks: Tricks of the trade. Springer Berlin Heidelberg, 2012. 9-48]</ref> گرادیان کاهشی تصادفی در جامعه ژئوفیزیک نیز کاربردهایی دارد مانند مسئله وارونگی کامل شکل‌موج (FWI).<ref>[http://library.seg.org/doi/abs/10.1190/1.3627777 Díaz, Esteban and Guitton, Antoine. "Fast full waveform inversion with random shot decimation". SEG Technical Program Expanded Abstracts, 2011. 2804-2808]</ref>
 
== روش پیاده‌سازی ==
خط ۲۷:
<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">
خط ۴۲:
== مثال ==
فرض کنید در یک مسئلهٔ یادگیری ماشین می‌خواهیم از روش کمترین مربعات استفاده کنیم به طوری که مجموعه‌ای از داده‌های آموزشی به شکل <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>
 
<br />
 
== بسط ==
تا به حال چندین روش نوین برای کاهش سریع‌تر گرادیان کاهشی ابداع شده که ذیلاذیلاً همگی بررسی شده‌اند. <ref name="Rumelhart19862">{{cite journal|last=Rumelhart|first=David E.|author2=Hinton, Geoffrey E.|author3=Williams, Ronald J.|date=8 October 1986|title=Learning representations by back-propagating errors|journal=Nature|volume=323|issue=6088|pages=533–536|bibcode=1986Natur.323..533R|doi=10.1038/323533a0}}</ref><ref name=":0">{{cite journal|last1=Polyak|first1=Boris T.|last2=Juditsky|first2=Anatoli B.|year=1992|title=Acceleration of stochastic approximation by averaging|url=http://www.meyn.ece.ufl.edu/archive/spm_files/Courses/ECE555-2011/555media/poljud92.pdf|journal=SIAM J. Control Optim.|volume=30|issue=4|pages=838–855|doi=10.1137/0330046}}</ref><ref name="duchi">{{cite journal|last1=Duchi|first1=John|last2=Hazan|first2=Elad|last3=Singer|first3=Yoram|year=2011|title=Adaptive subgradient methods for online learning and stochastic optimization|url=http://jmlr.org/papers/volume12/duchi11a/duchi11a.pdf|journal=[[Journal of Machine Learning Research|JMLR]]|volume=12|pages=2121–2159}}</ref><ref>Tieleman, Tijmen and Hinton, Geoffrey (2012). Lecture 6.5-rmsprop: Divide the gradient by a running average of its recent magnitude. COURSERA: Neural Networks for Machine Learning</ref><ref name="Adam2014">{{cite arXiv|last1=Diederik|first1=Kingma|first2=Jimmy|last2=Ba|eprint=1412.6980|title=Adam: A method for stochastic optimization|year=2014|class=cs.LG}}</ref>
 
=== تکانه (Momentum) ===
این روش برای اولین بار توسط روملهارت، هیلتون و ویلیامز معرفی شد.<ref name="Rumelhart19862" /> در این روش میزان تغییر پارامتر <math>\Delta \theta</math> در هر مرحله از بهینه‌سازی ذخیره شده تا در مرحله بعدی به شکل پایین از آن استفاده شود:
 
<math>\Delta \theta = \eta \Delta \theta - \alpha \nabla \mathcal{J}(\theta)</math>
سطر ۵۵ ⟵ ۵۳:
<math>\theta = \theta + \Delta \theta </math>
 
که با ترکیب این دو به عبارت پایین می‌رسیم:
 
<math>\theta = \theta - \alpha\nabla \mathcal{J_i}(\theta) + \eta \Delta \theta </math>
 
روش momentum باعث میشودمی‌شود که مسیر پارامتر <math>\theta </math> خیلی تغییر نکند و نوسانات شدیدی نداشته باشد. استفاده از این روش در [[شبکه عصبی مصنوعی|شبکه‌های عصبی مصنوعی]] متداول است و معمولاً موجب بهبود دقت شبکه‌های عصبی می‌شود.<ref name="Zeiler 20122">{{cite arXiv|last=Zeiler|first=Matthew D.|eprint=1212.5701|title=ADADELTA: An adaptive learning rate method|year=2012|class=cs.LG}}</ref>
 
=== میانگین (Averaging) ===
سطر ۶۵ ⟵ ۶۳:
 
=== گرادیان تطبیقی (AdaGrad) ===
روش آداگراد یا گرادیان تطبیقی برای اولین بار در سال ۲۰۱۱ معرفی و منتشر شد.<ref name="duchi" /><ref>{{cite web|first=Joseph|last=Perla|year=2014|title=Notes on AdaGrad|url=http://seed.ucsd.edu/mediawiki/images/6/6a/Adagrad.pdf|deadurl=yes|archiveurl=https://web.archive.org/web/20150330033637/http://seed.ucsd.edu/mediawiki/images/6/6a/Adagrad.pdf|archivedate=2015-03-30|df=}}</ref> این روش برای هر بُعدِ پارامتر یک نرخ یادگیری جداگانه‌ای در نظر می‌گیرد؛ نرخ یادگیری همان <math>\alpha</math> در معادله بالاست. برای ابعاد خلوت‌تر (sparse) معمولاً این روش نرخ یادگیری را افزایش میدهدمی‌دهد و برای ابعادی که مقادیر صفر کمتری دارند نرخ یادگیری را کاهش میدهدمی‌دهد. این روش اغلب برای مسائلی که با داده‌های خلوت سروکار دارند مانند [[پردازش تصویر]] یا [[پردازش زبان‌های طبیعی|زبانهای طبیعی]] بهینه‌تر است و [[همگرایی]] را تسریع میبخشدمی‌بخشد.<ref name="duchi" />
 
نرخ یادگیری برای ابعاد محتلف پارامتر از قطر اصلی ضرب خارجی <math>G = \sum_{\tau=1}^t g_\tau g_\tau^\mathsf{T}</math> بدست می‌آید. در این معادله <math>g_\tau = \nabla \mathcal{J}_i(\theta)</math> گرادیان در مرحله <math>\tau</math> است و نرخ یادگیری برای بُعدِ j ام برابر خواهد بود با:
سطر ۷۵ ⟵ ۷۳:
<math>\theta = \theta - \eta\, \mathrm{diag}(G)^{-\frac{1}{2}} \circ g</math>
 
این معادله برای بعد <math>j</math>ام برابر خواهد بود با:
 
<math>\theta_j = \theta_j - \frac{\alpha}{\sqrt{G_{j,j}}} g_j.</math>
 
از آنجا که در نرخ یادگیری <math>\alpha</math> برای بُعدِ j ام پارامتر بر مقدار <math>\sqrt{G_i} = \sqrt{\sum_{\tau=1}^t g_\tau^2}</math> تقسیم می‌شود، ابعدای که خلوت‌ترند سریعتر نرخ یادگیری‌شان کاهش می‌یابد.<ref name="Zeiler 20124">{{cite arXiv|last=Zeiler|first=Matthew D.|eprint=1212.5701|title=ADADELTA: An adaptive learning rate method|year=2012|class=cs.LG}}</ref> اگرچه روش گرادیان تطبیقی برای مسائل محدب طراحی شده استشده‌است ولی نتایج خوبی برای مسائل غیر محدب نیز به بار آورده استآورده‌است.<ref>{{cite journal|last1=Gupta|first1=Maya R.|last2=Bengio|first2=Samy|last3=Weston|first3=Jason|year=2014|title=Training highly multiclass classifiers|url=http://jmlr.org/papers/volume15/gupta14a/gupta14a.pdf|journal=JMLR|volume=15|issue=1|pages=1461–1492}}</ref>
 
== جستارهای وابسته ==
سطر ۹۱ ⟵ ۸۹:
 
== منابع ==
{{پانویس}}
 
[[رده:آمار]]