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

با تشکر

دسته بندی ها

0 امتیاز

بعد از اینکه با توجه به نوع تصاویر و مسئله یک معماری برای شبکه‌های عصبی کانولوشنالی عمیق طراحی شد، آیا راهی وجود دارد تا بتوانیم پیش بینی کنیم که این معماری تا چه حد قادر به نزدیک شدن به جواب بهینه هست.
پی نوشت1: این سوال از این جهت اهمیت داره که روزها وقت برای اجرا شدن یک برنامه صرف نشه و بعد در انتها متوجه شویم که به جواب مطلوب نمی‌رسیم
پی نوشت 2: فرض شود که از نظر تعداد تصاویر و تعداد تکرارها برای اجرا محدودیتی وجود ندارد. در حقیقت هدف این سوال این است که ظرفیت معماری سنجیده شود.

توسط (138 امتیاز)
ویرایش شده توسط

2 پاسخ

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

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

توسط (4.3k امتیاز)
انتخاب شده توسط
بله تقریبا اینطور هست. برای این میگم تقریبا چون اگر شما شهود برای استفاده تکنیک ها و یا بحثهای مختلف در شبکه نداشته باشید میشه کاملا یه فرایند رندوم و این فوق العاده بده . اما وقتی شهود دارید در طراحی معماری میدونید چرا دارید از فلان فیلتر استفاده میکنید میدونید چندتا لایه حدودی باید بزارید و یا چطوری باید طراحی رو پیش ببرید و یا مثلا از فلان تکنیک استفاده کنید یا نه و.... مسائلی از این دست تا حد خیلی زیادی میتونید معماری خوب و بهینه ای رو پایه گذاری کنید و به دقت خوبی برسید.
اما حتی با این شهودها هم نمیتونیم مشخص کنیم که فلان معماری الزاما و حتما به فلان دقت میرسه. اگر این ممکن بود کار ما خیلی راحت بود. البته با تکنیک هایی مثل فاین تونینگ و یا نالج ترنسفر ها ما میتونیم به دقت های بالا برسیم(هنوز این دقت بالا نسبی هست) و تا حد خوبی کار رو پیش ببریم اما باز روشی نیست که با توجه به اون بگیم حد بالایی این معماری فلان دقته. مهمترین دلیل این اتفاق هم ریشه در بحث بهینه سازی ما داره. هر وقت دقیقا مشخص شد با چه چیزی مواجه هستیم و چطور داریم حل مساله انجام میدیم اونوقت میتونیم خیلی بهتر اظهار نظر کنیم. تا اون زمان برای تسریع سرعت طراحی معماری بهینه اول باید حتما شهود داشته باشید. تو کارگاهی که برگذار شد من در این مورد بصورت مختصر توضیحاتی دادم و همینطور در مقاله ما بصورت مبسوط در موردش بحث کردیم که انشاءالله چند هفته دیگه تو ارکایو هم منتشرش میکنیم (فعلا تحت ریویو ایمیج ترنزکشن هست)
برای طراحی یک معماری بصورت فهرست وار به چه مواردی باید توجه کنیم.
سلام زیاده اما خیلی ساده و لیست وار بخوایم اشاره کنیم . 1. حفظ کورولیشن در وروردی ها 2. حفظ حداکثری جریان داده و انجام پردازش روی اون 3. اعمال تغییرات در جهت بدست دادن ترکیب های متفاوت از ویژگی ها و تطبیق شبکه با اون ترکیبها 4.توسعه تدریجی معماری 5.توجه به کتابخونه های زیرین برای بهره وری حداکثری /
فعلا اینا به ذهنم اومد. تو مقاله خیلی بیشتر باز شدن اینا. البته خود شما با مطالعه مقالات مرجع و معروف و درک کامل از مباحث مطرح شده به خیلی از موارد بالا میرسید . حتی اگه اونارو هم نخونید با تجربه و کار زیاد باز به خیلی از نکات میرسید اما خب با مطالعه اونها سریعتر ایده میگیرید (اینم بگم که به موارد متضاد هم زیاد بر میخورید و وقتی خودتون کار کنید متوجه میشید کدوم مورد صحیح تر هست و یا حداقل در کجاها منطقی هست استفاده از اون )
حتما حتما سعی کنید مقالات مرجع رو مطالعه کنید باز حتما حتما اطمینان حاصل کنین همه مفاهیم و موارد مطرحی رو خوب متوجه شدید. از این سایت و از این وبلاگ نخونید که مثلا اومدن گفتن فلان معماری اینه اینکارو کرده. یا حتی در مقالاتی که مثلا یک توضیح خلاصه در مورد یک معماری میدن مثلا در بخش کارهای مرتبط و امثالهم. چون اینها شهودهای خودشون مرتبط با کاری که خودشون ارائه کردن رو بیان میکنن (یعنی از دید خودشون چیزی رو میگن که همخونی با کار خودشون داشته باشه بعضا) و اینطور باعث میشه شما به دید اصلی مقاله اصلی نرسید. این مقالات رو بخونید خیلی دیدتون باز میشه.
+2 امتیاز

سلام
در تکمیل صحبتهای آقای حسن پور این موارد رو هم توجه داشته باشید می تونه مفید باشه

1- سوال شما یکی از بنیادی ترین سوالهایی هست که میشه پرسید و همینطور که توضیح دادن هنوز به طور جدی بازه و داره در موردش تحقیق میشه

2- در مورد ظرفیت شبکه های عمیق خیلی کارهای خوب و جالبی اتفاق افتاده، که خیلی با چیزهایی که از قبل می شناختیم مثل vc و باندهای کلاسیک متفاوته و جالبتر اینکه خیلی از مقالات جدیدتر فرضها و دستاوردهای قبلی رو رد می کنن و این دوباره نشون از همین موضوع داره که چقدر هنوز ما در اول راه هستیم
به طور خلاصه اگه به این چندتا مقاله نگاه کنید در این زمینه بیشتر اطلاعات بدست میارید:

"Understanding deep learning requires rethinking generalization"
"A Closer Look at Memorization in Deep Networks"
"Diverse neural network learns true target functions"

این مقالات واقعا مشت نمونه خرواره و واقعا تحقیقات خیلی جدی و جالبی (و هیجان انگیزی D:) از دیدگاه های مختلف در حال انجامه

برای اینکه اون بحث زمان طولانی گذاشتن برای حل مساله حل بشه، به صورت عملی داشتن یه مدل ساده برای baseline خیلی واجبه که کف دقت رو بدونید و از طرفی اگه قابل انجام باشه، حالت بهینه رو از روی دیتاست حساب کرد سقف دقت هم بدست میاد
در مورد baseline که واضحه که بحثی نیست اما منظور از بدست اوردن سقف دقت، به عنوان نمونه دیتاست mnist رو اگه در نظر بگیرید چندتا تصویر توش هست که شاید بشه گفت به هیچ وجهی نمیشه درست تشخیصشون داد و مثلا ما انتظار داریم بهترین مدل دقتش 99.98 باشه
برای دیتاست های بزرگتر نمیشه انتظار داشت کار به این راحتی باشه اما اگه شما مراحل پیشرفت کارتون به صورت چرخشی و با تحلیل نتایج و اشتباهات مدل توی هر چرخه باشه، فرایند رسیدن به جواب و مدل مورد قبولتون رو کلی سریعتر می کنید

توسط (1.6k امتیاز)
منظور از "یک مدل ساده برای baseline" این هست که یک معماری، پیش فرض قرار داده شود و بعد  در ادامه کم کم شروع به تغییر دادن معماری کنیم. چون بیشتر منظور سوال این بود که یک معماری مناسب طراحی بشه که در مرحله‌ی دوم با تنظیم هایپرپارامترها و پایگاه داده مناسب به دقت مطلوبی دست پیدا کنیم.
هم می تونه اینطور باشه که خودتون گفتید یا اینکه اصلا می تونه ربطی به مدل اصلیتون نداشته باشه
به عنوان یه مثال ساده مثلا شما دارید روی شبکه های دیپ برای تشخیص اسپم کار میکنید، اما در کنارش از  روشهای قدیمی مثل naive bayes یا ایده هایی از fast text به عنوان baseline استفاده میکنید
هدف اینه که یه ایده های اولیه از حل مساله پیدا کنید که مدلهای ساده ای که در دسترس هستن، کجاها به مشکل می خورن و دقت کفی که شما باید حداقل به اون برسید چیه و ....
...