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

با تشکر

دسته بندی ها

0 امتیاز

با سلام من در شبکه عمیق به این مشکل خورده ام که بعضی از لایه های یادگیری من صفر هستش علتشو میخواستم بپرسم که چرا این اتفاق می افتد.

این تصویر بعد از عمیلات زیر است
conval + rule + pool

enter image description here

توسط (127 امتیاز)
پس از چند iteration این اتفاق افتاده؟ از activation function  هایی مثل sigmoid یا tanh بجای relu استفاده کنید و ببینید دوباره این مشکل وجود داره؟
از ایتریشن 2 به بعد این اتفاق می افته ولی وقتی از activation function  مختلف استفاده میکنم همچین مشکلی ندارم!
سلام. بله این مشکل relu هست که آقای فروزنده نژاد بخوبی توضیح دادن. یکی از مشکلات Relu همین به اصطلا ح مردن واحد هاست (dying units یا dead relu units). با انتخاب مقداردهی اولیه ،نرخ یادگیری مناسب و یا استفاده از بچ نرم میتونید این مساله رو کاهش بدید.

1 پاسخ

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

با این اطلاعات نمیشه به شکل دقیق مشکل را تشخیص داد اما مشکل شما احتمالا مربوط میشه به استفاده از تابع فعال سازی Relu. تابع Relu برای ورودی های کمتر از ۰ دارای مقدار ۰ و شیب ۰ هست به همین دلیل امکان داره نورون شما توسط Solver وزن منفی بگیره و به همین دلیل ورودی هاش منفی بشه پس همیشه خروجی صفر خواهد داشت و به علت شیب صفر توانایی خروج از این حالت را ندارد. به این حالت اصطلاحا مرگ نورون ها گفته میشه و نورون به طور کلی در تعلیم شبکه غیرفعال میشه.
enter image description here

برای حل این مشکل افزونه هایی برای Relu بوجود آمدند مثل Leaky Relu یا Parametric Relu.
اولی که در شکل بالا مشخص هست برای مقادیر منفی شیب کمی بوجود میاره تا درصورتی که نورون ورودی منفی پیدا کرد به کلی از بین نره و هنوز هم توانایی انتقال شیب کم و مشارکت در تعلیم را داشته باشه.
دومی شکل پیشرفته تری از Leaky Relu هست که شیب را برای مقادیر منفی توسط پارامتری تعیین میکنه که این پارامتر در هنگام تعلیم شبکه عصبی یادگرفته میشه.
البته راه حل های جزیی دیگه ای هم برای حل مشکل شما وجود داره مثل استفاده از learning rate پایین تر.

توسط (397 امتیاز)
انتخاب شده توسط
ممنون بابت این راهنمایی خوبتون من وقتی این حالت رو انجام دادم درست شد تغریبا و تعداد صفرهای خیلی کمی پیدا کرده ام. ایا این مشکل می تواند دردسر ساز باشد برای لایه های بیشتر؟ چون من الان فقط یک لایه کانوال زدم و یک لایه پول وقتی اینها رو دوبار تکرار میکنم یعنی دوتا کانوال ئ تا پول همگرایی سیستم اتفاق نمی افتد!
بستگی به دیتاست و معماری شبکه و هایپر پارامتر هاتون دارد
دیتاست من همون اعداد دست نویس هستش و من خودم کد زدم از تولباکسی استفاده نکردم. اگر بشه بیشتر توضیح بدین.
دیتاست mnist هست؟ خودتون لایه های شبکه عصبی و Solver را پیاده سازی کردید؟
اره همین دیتاسته.
اره خودم پیاده سازی کردم.
الان مشکل من با روشی اقای فروزنده گفت حل شد ولی اگر باز پارامترهای دیگری دخیل هستش توضیح بدن تا این مشکل پیش نیاد و اینکه مقدار این ضرب الفا در الگوریتم relu چقدر باشه و چه میزان و اینکه نرخ یادگیری مناسب به چه صورتی تنظیم میشه توضیح بدین خیلی ممنون دوستان.
نظرتون در مورد این عکس چیه که در لایه 4 یعنی
conv+relu+pool+conv+relu+pool

http://www.axgig.com/images/09769348653932035585.jpg
ضریب آلفا معمولا ۱ هست ولی بعضی وقتا مقادیر دیگه هم استفاده میشه برحسب تجربه, learning rate هم بهتره در ابتدا مقداری مثل ۰.۰۰۱ انتخاب بشه و در هر مرحله کاهش پیدا کنه.
به نظر من عدد یک که نمیتونه باشه اگر باشه مثل x میشه.  بچه نظرتون رو هم درمورد عکس دوم هم بگید ممنون.
در ELU عدد پیشفرض ۱ هست (درمقاله رفرنس)
در PRELU هم قابل یادگیری هست
در Leaky RELU هم ۰.۰۱ پیشفرض هست.
...