danialfarsy
danialfarsy
خواندن ۲ دقیقه·۴ سال پیش

بررسی و مقایسه Batch Gradient descent,Mini batch Gradient descent,Stochastic Gradient descent



در یادگیری عمیق بعد از بررسی دقیق و مدل سازی نوبت میرسه به بهینه سازی مدل برای بالا بردن دقت و بهبود بخشیدن به مدل . حالا :

روش های زیادی برای بهینه سازی شبکه هامون داریم که اینجا به مقایسه Batch Gradient descent,Mini batch Gradient descent,Stochastic Gradient descent می پردازم.

Batch Gradient descent :

در این الگوریتم روش و رویکرد بر مبنای بررسی تمام خطا ها در همه ی داده های ازمایشیه و زمانی مدل بروز و اپتیمایز میشه که این محاسبات بر روی تمامی داده های ترین انجام شده باشه.یعنی اگر تعداد داده های بالایی داشته باشیم باید همه ی داده ها رو در حالت train به شبکه بدهیم بعد از اون دوباره مدل را بروز کنیم این صرفا یک پیچیدگی محاسباتی شدید برای ما ایجاد میکنه که در شکل زیر مشخص کرده ام.و علاوه بر این در این حالت فقط ما داده ها رو یکبار با محاسبه سنگین اپتیمایز کردیم و خب به صرفه نیست :)

Stochastic Gradient descent :

توی این روش ما داریم به جای این که بیایم و همه نمونه هارو بررسی کنیم و بعد همه ی اینها بیام و lossحساب کنیم و مشتق بگیریم میایم و بعد از هربار نمونه گرفتن و train کردن , وزن های جدید رو حساب میکنیم و بروز میکنیم .حالا اگه ما N عدد نمونه داشته باشیم یعنی باید Nبار این چرخه رو تکرار کنیم و وزن ها رو به روز کنیم .خب توی این روش ما دیگه پیچیدگی محاسباتی نداریم.اما اصطلاح محاسباتمون نویزی میشه و داریم N بار مدل رو تکرار و اپتیمایز میکنیم و در هر بار با یک حالت شک و تردید داریم میریم جلو و نسبت به اپتیمایز خودمون اطمینانی نداریم( در هر مرحله ) و یا حتی خیلی از این نمونه ها داده های پرت حساب میشن و ما داریم روی همین داده ها هم مدل خودمون رو بروز میکنیم پس بصورت نویزی داریم میریم جلو که توی تصویر زیر به وضوح میتونیم ببینیم و مقایسش کنیم.




Mini batch Gradient descent :

خب حالا ما دنبال روشی هستیم که دوتا ویژگی بالا رو داشته باشه اما بینشون باشه.پس میرسیم بهMBGD .

توی این روش به جای اینکه بیایم و کل نمونه هارو بدیم یا یک دونه نمونه آموزش بدیم میایم و در هر دفعه یک Batch از داده هارو اموزش میدیم. مثلا اگه کل داده هامون N تاست میایم و ۲۰۰ تا ۲۰۰ تا اموزش میدیم .اینجا دیگه نگرانی نویزی شدن مسیرمون رو هم نداریم چون دیگه روی یک عدد نمونه حساب نمیکنیم و مطمعن تر داریم میریم جلو. که توی شکل بالا هم تفاوت هاش معلومه....


اینجا ی بررسی کوچولو هم داشتیم باشیم نسبت به نرخ یادگیری و بچ و رابطه هاشون , خب اگر ما بچ کوچکتری داشته باشیم باید نرخ یادگیری مون رو کم کنیم چون در غیر این صورت پرش ها و نویز های زیادی رو ایجاد میکنیم اما اگر بچ بزرگتری بگیریم و مطمعن تر گام برداریم با نرخ یادگیری سریع تری جلو میریم و نسبت به مسیرمون هم مطمعن هستیم.


شبکه های عصبیاتلافیادگیری ماشینماشین لرنینگ
https://www.linkedin.com/in/danial-farsi/
شاید از این پست‌ها خوشتان بیاید