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

با تشکر

دسته بندی ها

0 امتیاز

سلام
دوستان لطفا به سوالت زیر با توضیحات کامل پاسخ دهید
1- همان طور که میداینم هرچقدر تعداد لایه های کانالوشن رو زیاد کنیم در واقع high-level feature دستگیرمون میشه حالا اگر تعداد لایه های تمام اتصال رو بعد از لایه های کانالوشن زیاد کنیم چه چیزی دست گیرمون میشه بصورت معمول در اکثر معماری های دوتا 4096 قرار میدهند حالا اگر تعداد این لایه ها رو کم و زیاد کنیم چه چیزهایی رو بدست میاریم یا چه چیزهایی رو از دست میدهیم ؟
2- همان طور که این لایه ها میشه گفت 70-80 درصد پارامترهای کل شبکه رو به خودشون اختصاص میدهند یک روشی که وجود دارد DropOut که به نوعی فرضا 50 درصد اتصالات رو کم میکند و یک روش دیگه هم هست Truncated SVD که در واقع این لایه ها رو فشرده سازی میکنند بنظرتون کدوم دو تا از این روش ها میتونه مناسب باشه و اینکه اگه کسی در مورد روش SVD میدونه یکم بیشتر توضیح بده - با سپاس

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

2 پاسخ

+1 امتیاز

با سلام
در واقع لایه fc به ما کمک میکنه که فضای n بعدی فیچرهای ورودی (فیچر هایی که لایه های کانولوشن برامون در آورده) را کلاس بندی کنیم.
حالا اگه این فیچر ها بصورتی باشند که برای هر کلاس یا یک hyperplane جدا پذیر باشد آنگاه یک لایه fc کفایت می کند (در واقع هر نورون با وزن های متصل به آن مانند یک hyperplane در فضای n بعدی عمل می کند.)
در غیر این صورت بایستی با اضافه کردن تابع non-linear یا activation function فضای فیچر را به فضای دیگری تبدیل کرد و در فضای جدید دوباره با اعمال یک لایه fc کلاسبندی را انجام داد. ممکن است لازم باشد 2 تا 3 لایه fc بکار ببرید تا بتوانید فضای ویژگی های بدست آمده از لایه های کانولوشن را کلاس بندی کنید.

Dropout‌ به روند ترین شبکه کمک میکنه و مانع از overfit‌ شدن میشه نمیتونه در کم یا زیاد کردن لایه های fc‌ کمک کنه.
برادر SVD رو هم نمیشناسم.
موفق باشید

توسط (830 امتیاز)
svd manzur sigular vector decomposition hastesh, tooye matrix haii ke morabaii nistan baraye peida kardane shebhe makus estefade mishe
+1 امتیاز

سلام
داداش مگه امتحان میگیری که با توضیحات کامل پاسخ بدیم :))))
1- اینکه high level feature دستگیرمون بشه به تعداد خوده لایه ها بستگی داره نه لزوما نوع لایه ها. یعنی چندتا لایه FC هم بذارید، هرچی جلو برید feature های سطح بالاتری بدست میارید اما مثلا برای تصویر تحلیلش به راحتی لایه های کانولوشن نیست و تاثیر اونها نیست.
اعدادی مثل 4096 و این جور چیزا هم بیشتر با آزمون خطا یا محدودیت سخت افزار به دست اومده و لزوما بیانگر feature های خاصی نیستن. یعنی عدد مقدسی نیست که بگیم چرا 4095 نه، یا 4097 نه
توی کارهایی که شبیه sparse انجام میشه، میان یه سری تابع های هزینه ای اضافه می کنن که هر نورون مثلا کار مشخصی انجام بده و تحلیلش آسون تر بشه، اما بازم خیلی نورون ها ممکنه هیچ کاری نکنن و برعکس، همونطوری که توی مقالات مرتبط با feature visualization مشخص شده، یه نورون ممکنه چندتا کار انجام بده
برای اطلاعات بیشتر توصیه می کنم این پست رو حتما بخونید:

https://distill.pub/2017/feature-visualization

2 - توی Dropout وقتی گفته میشه rate مثلا 50% ه، یعنی توی آموزش احتمال 50 50 یه نورون یا خاموش میشه یا نمیشه ولی لزوما و گارانتی در اینکه نصفشون خاموش بشن یا نه یا اینکه همشون اصلا خاموش نشن یهویی نیس
در تست هم همه وزنها توی rate ضرب میشن، که یه جوری تخمین خیلی پرتی از محاسبه expectation روی تمامی حالت مختلف شبکس (مقاله اصلیش رو ببینید بیشتر این مفهوم رو درک می کنید) اما وزنی حذف نمیشه
الگوریتم dropout و بعدا هم variational dropout ها و خلاصه از این بازیا خیلی متنوع هستن و کلی ایده مطرح شده در این حیطه که مثلا بعدش prunning داشته باشیم یا نه و یا می تونن باعث sparse شدن شبکه بشن اما در ساده ترین حالت و چیزی که به طور متداول استفاده میشه، توی ترین نورون ها رندوم drop میشن (خروجیشون صفر میشه)، اما توی تست کل شبکه و وزنهاش حضور دارن
توی svd یا بقیه روشها compression (مثل روش DeepCompress) بحث سره اینه که دقیقا وزنها یا نورونها حذف بشن و خیلی با dropout فرق داره. یعنی برای نمونه می بینیم این نورون کلا با این وزنهایی که داره، خروجیش همیشه حول و حوشه صفره و به درد نمی خوره خیلی زیاد، پس کلا می ریزیمش دور. ایده توی این روشها اینه که حجم شبکه از نظر تعداد پارامتر و وزنها رو کم کنیم
اما توی dropout و الگوریتم های regularization هدف ارتقا قابلیت تعمیم شبکه اس. البته بماند که خوده روشهای compression تاثیر regularization هم دارن معمولا اما هدفشون regularization نیس
برای بحث های بیشتر در زمینه Compression و کلا شبکه هایی که هدفشون حجم کم بوده، این لینکا رو ببینید:

https://www.oreilly.com/ideas/compressing-and-regularizing-deep-neural-networks


https://www.youtube.com/watch?v=AgpmDOsdTIA


https://arxiv.org/abs/1510.00149

توسط (1.6k امتیاز)
...