مشکل محو گرادیان

304 views
Skip to first unread message

hamed

unread,
May 24, 2016, 7:59:22 AM5/24/16
to IranDeepLearning
با سلام.من به تازگی با مبحث یادگیری عمیق آشنا شدم.میخواستم در صورت امکان یکی از دوستان لطف کرده و مشکل محو گرادیان رو به زبانی ساده توضیح بده.با تشکر

Mohsen

unread,
May 24, 2016, 2:05:44 PM5/24/16
to IranDeepLearning
سلام. محو شدگی گرادیان مشکلی هست که در شبکه های عصبی عمیق پیش میاد. در این شبکه ها در صورتی که از تابع های فعالساز قدیمی مثل «hyperbolic tangent» استفاده بشه به ما گرادیان رو در بازه (1,-1) یا بین 0 و 1 می دن. در زمان آموزش شبکه که backpropagation برای انتشار خطا در لایه ها انجام می شه این خطا از لایه آخر که لایه nام باشه تا زمانی که برسه به لایه اول n بار در اعدادی بین 0 و 1 یا 1 و -1 ضرب می شه که این اعداد خاصیت کاهش حاصل ضرب رو دارند. وقتی n تا از این مدل اعداد در هم ضرب می شوند گرادیان لایه های اولیه به صورت نمایی کاهش پیدا می کنه که باعث کاهش سرعت یادگیری این لایه ها می شه.

hamed

unread,
May 25, 2016, 3:47:39 AM5/25/16
to IranDeepLearning
میشه بفرمایید کلا منظور از گرادیان در یک شبکه عصبی چیه؟ 

Maryam. F

unread,
May 25, 2016, 7:00:43 AM5/25/16
to IranDeepLearning
سلام.
اگه اشتباه نکنم:
منظور از گرادیان تنظیم پارامترهای شبکه ست زمانیکه ما بعلت وجود خطا مسیر برگشت رو طی میکنیم(مثلا باالگوریتم پس انتشار خطا) و با تغییر پارامترها میخوایم به حداقل خطا برسیم.
مثلا در گرادیان نزولی موقع تنظیم پارامترهای شبکه با یه عدد بزرگ شروع میکنه تا تغییرات وزن شبکه ما به یک عدد خیلی خیلی کوچیک برسه

Mohsen

unread,
May 25, 2016, 12:50:49 PM5/25/16
to IranDeepLearning
توصیه می کنم ابتدا در باره شبکه عصبی مطالعات پایه رو انجام بدین

Seyyed Hossein Hasanpour

unread,
May 25, 2016, 2:47:08 PM5/25/16
to irandeep...@googlegroups.com
سلام 
گرادیانت یا همون gradient در اصل میزان شیب یک نقطه در error surface هست و معمولا مربوطه به gradient descent در back propagation میشه . داستان چیه ؟ معمولا یه مثالی برای معرفی این میزنن که قشنگه . داستانش هم اینطوره که فرض کنید یک نفر بالای یک کوهی ایستاده و مه شدیدی هم وجود داره و چشم چشمو نمیبینه و این باید بیاد پایین کوه. بخاطر مه این نمیتونه چیزی ببینه و فقط میتونه از اطلاعات محلی و اطراف خودش استفاده کنه . خب چه ایده ای به ذهن میرسه ؟ قائدتا چیزی که به ذهن میرسه اینه که طرف باید شیب دار ترین مسیری رو نسبت به جایی که ایستاده انتخاب کنه که اونو به سمت پایین ببره برای همین اون در مسیر تندرین شیب پیش میره (همون steepest descent ) حالا اگر داستان برعکس باشه و بخواد بسمت نوک قله کوه بره این عمل برعکس میشه اونوقت باید تندترین شیب به سمت قله (بالا) رو در پیش بگیره که بهش میگن steepest ascent. اگه فرد همین روش رو در پیش بگیره نهایتا به پایین کوه میرسه. حالا اینجا یه نکته دیگه ای هم هست و اونم اینه که شیب به سمت پایین کوه مشخص نیست یعنی با یه نگاه ساده نمیشه شیب به سمت پایین رو متوجهش شد و برای فهمیدن شیب نیاز به یه وسیله پیچیده است که دست برقضا فرد اونو با خودش داره . باز یه نکته دیگه اینجاست و اونم اینه که محاسبه شیب با این وسیله خیلی وقت گیره و دوباره یه گیر دیگه هم وجود داره و اونم اینه که فرد باید زودتر! به پایین برسه و وقت زیادی نداره مثلا قبل از غروب آفتاب باید رسیده باشه به پایین کوه وگرنه ممکنه گیر طوفان بیوفته! . برای همین فرد تا جایی که ممکنه باید استفاده از اون وسیله رو کاهش بده تا وقتش زیاد تلف نشه . از این به بعد تنها سختی و مشکلی که وجود داره اینه که با چه تعداد دفعاتی از این وسیله برای محاسبه شیب استفاده کنه تا یه وقت از مسیر درست خارج نشه و از طرفی وقت زیادی هم بابت محاسبه از دست نده یعنی میدونه محاسبه که وقت زیادی میگره حالا مثلا هر چند دقیقه به چند دقیه ازش استفاده کنم بهتره؟.   
تو این مثالی که مطرح شد اون فرد الگوریتم بک پراپگیشن (یا پس انتشار) هست و اون مسیر پایین اومدن از کوه مثالی از تنظیم پارامترهایی هست که این الگوریتم انجام میده .شیب یا تندی کوه هم همون شیب error surface در یک نقطه هست . اون وسیله ای که ازش برای محاسبه شیب کوه استفاده میشد هم دیفرانسیل هست که شیب از طریق مشتق گرفتن از تابع خطا در اون نقطه بدست میومد. مسیری رو هم که فرد برای رسیدن به پایین کوه انتخاب میکرد هم متناسب با گرادیانت اون نقطه در error surface هست.(اگر پایین قله بخواد بره در جهت منفی گرادیانت حرکت میکنه و اگر بالای قله بخواد بره در جهت + گرادیانت حرکت باید بکنه) در آخر هم اون مدت زمانی که فرد پیش میرفت و بعد از اون از وسیله اش برای مشخص کردن شیب استفاده میکرد همون نرخ یادگیری هست . 
نهایتا خلاصه اش میشه این که ما میخواییم خطا به حداقل برسه برای همین میاییم یه نقطه (خطایی که اتفاق افتاده) شیبش رو میگیریم و بسمتی حرکت میکنیم که این خطا حداقل بشه. اگه ببینیم شیب خطا مثبته یعنی خطا داره افزایش پیدا میکنه عکسش حرکت میکنیم و اگر ببینیم شیب خطا بطرف کاهشه در اون جهت ادامه میدیم . 



On Wednesday, May 25, 2016 at 12:17:39 PM UTC+4:30, hamed wrote:
Reply all
Reply to author
Forward
This conversation is locked
You cannot reply and perform actions on locked conversations.
0 new messages