به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

+1 امتیاز

سلام
یکی از مشکلاتی که در طی پروسه پس انتشار خطا رخ می دهد مشکل vanishing gradient است که البته با راهکارهایی مثل استفاده از تابع غیر خطی RElu یا حتی استفاده از عملیات جمع مثلا در شبکه resnet قابل برطرف شدن است.
لطفا مفهوم مشکل vanishing gradient را به زبان ساده بیان کنید.
متشکرم

توسط (219 امتیاز)

2 پاسخ

+3 امتیاز
 
بهترین پاسخ

سلام
وقتی شبکه در فازforward-pass هست یعنی اینکه مسیر حرکت از ابتدای شبکه به انتهای شبکه هست ( جریان رو به جلو ) در این فاز هدف این هست که وقتی تصاویر ورودی به شبکه fed شدند و طبق برچسب هایی که برای اون تصاویر هست خطایی طبق تابع lost function حساب شود که مشخص شود خروجی مد نظر چقدر از Ground Truth (یا همان برچسب یا label ) فاصله دارد . و این خروجی طبق یکسری پارامترهایی مثله وزن ها و بایاس ها ( همان فیلترها ) و .... که شبکه دارد بدست میاد که همان تابع lost function به شبکه اعلام میکند که طبق این پارامترها چقدر خطا داری خب مسلما اگر خطا زیاد باشد یا اینکه بیشتر از مدنظر باشد باید اون پارامترها آپدیت بشوند حال این فرایند آپدیت طبق الگوریتم هایی مبتنی بر گرادیان نزولی صورت میگیرد یعنی حالا برعکس قبل ، جریانی از انتهای شبکه به ابتدای شبکه عبور میکند که این جریان همان gradient میباشد یعنی این گرادیان هست که پارامترهای شبکه رو آپدیت میکند حال اگر گرادیان به هرنحوی نتواند به لایه های ابتدایی شبکه عبور کند این مفهوم یعنی گرادیان از اون لایه ها به بعد صفر شده ، این یعنی دیگر پارامترهای شبکه از اون لایه به بعد دیگر آپدیت نمیشوند این یعنی دیگر پارامترهای بهینه برای اون لایه ها بدست نمی آید .
حال در resnet که میبینید اون مسیرهایی که بدون لایه هستند چون resnet یه شبکه بسیار عمیق هست بنابراین اگر طبق ایده های قبلی این شبکه عمیق تر میشد مطمعنا vanishing gradient رخ میداد چون لایه ها اینقدر زیاد شدند که بلاخره بعد از چندین لایه به بعد دیگر گرادیان به صفر میل میکند ( همان vanishing gradient رخ میدهد )
vanishing gradient یعنی اینکه گرادیان به صفر میل کرده دیگر آپدیت پارامترها از یک لایه به بعد صورت نمیگیرد

توسط (389 امتیاز)
انتخاب شده توسط
0 امتیاز

همون‌طور که می‌دونید برای اصلاح مقادیر وزن در یک شبکه عمیق، از back propagation استفاده میشه. حال فرض کنید داده‌های ما سری‌های زمانی یا مثلا نوشته هستند که شبکه برای یادگیری هر بخش باید چیزایی در مورد بخش‌های قبلی هم به یاد داشته باشه. تو این حالت از back propagation در طول زمان استفاده می‌کنیم.
در حقیقت back propagation ضرب یه تعداد مشتق هست. تو شبکه‌های عمیق و مخصوصا شبکه‌هایی که علاوه بر عمیق بودن عنصر زمان هم توشون دخالت داره، تعداد این ضرب‌ها خیلی زیاد میشه. حال اگه مقدار هر کدوم از این مشتق‌ها که قراره در هم ضرب شن، کمتر از یک باشه، ضرب یه تعداد زیاد عدد زیر یک به صفر میل می‌کنه که باعث میشه گذشته دورتر رو خوب یاد نگیره.
اگه اشتباه نکنم از نظر تئوری این به سمت صفر میل کردن نباید مشکلی ایجاد کنه ولی در عمل این به سمت صفر میل کردن باعث میشه شبکه وزن‌های خوبی نداشته باشه و نتیجه نهایی یه local minimum بد باشه (local minimumها الزاما بد نیست در کل).
مثلا کاری که relu می‌کنه اینه که چون مشتق‌اش یا صفره یا یک، مقادیر قبلی رو یا کلا فراموش می‌کنه یا همش رو یاد میگیره.

توسط (115 امتیاز)
سپاسگزارم
ممنون از این که زمان گذاشتید
...