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

با تشکر

دسته بندی ها

0 امتیاز

سلام عرض ادب
دوستان فرضا من یک دیتاستی دارم مثلا دیتاست سگ و گربه یا انواع گیاهان یا هر دیتاست دیگه ایی که خودم تهیه کردم.
فرض کنید الان SOTA کلاسیفیکشن مثلا معماری x میباشد روی امیج نت . و بنده هم به عنوان application به قضیه نگاه میکنم در واقع فقط استفاده کننده از معماری های پیش آموزش دیده شده هستم.
سوالم این هست که آیا واقعا باید در انتخاب cnn برای دیتاست خودمون باید تجربه و تخصص خاصی داشته باشیم اینکه چه cnn ایی برای فلان دیتاست یا فلان کلاس بندی ها مناسب هست ؟ یعنی اینکه ممکن هست الان یک cnn ایی که sota امیج نت هست و نسبت به یک cnn ایی که sota فرضا سال 2016 بود بدتر عمل کند برای دیتاست خودمون ؟
سوال دوم : فرضا یکی از این cnn ها برای دیتاست خودمون انتخاب شد آیا باز هم نیازی هست در انتخاب optimizer ها نیز تخصص داشته باشیم ؟ یعنی اینکه فلان optimizer ممکن هست برای فلان دیتاستی که نوعش فلانه خوب کار کند ؟ یا اینکه نه optimizer که برای یک cnn انتخاب شده در واقع بهترین گزینه مخصوص اون cnn می باشد ؟
کلا منظورم اینکه موقع ایی که بصورت application از cnn استفاده میشه باید در انتخاب cnn و optimizer و ... هم حرفه داشته باشیم یا اینکه sota کلاسیفیکشن روی امیج نت با مشخصاتی که داره بهترین گزینه برای هر دیتاستی هست سوا از اینکه چقدر پارامتر داره چقدر فضا اشغال میکنه و اینکه زمان predication اش چقدر باشد فقط تنها ملاک ما دقت باشد.

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

1 پاسخ

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

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

توسط (4.3k امتیاز)
انتخاب شده توسط
ببنید اون چیزی که من احساس میکنم این تخصصی بودن رو فردی باید داشته باشه که دیزاین این معماری ها کار میکنه و یکی که فقط بصورت کاربردی از این ها استفاده میکنه فکر نکنم درست انتخاب کردن کردن معماری ها اینقدر تخصص نیاز داشته باشد.
من این رو نمیتونم قبول کنم که فرضا معماری x که الان soat امیج نت هست و یک معماری دیگه y که soat فرضا دو سال پیش بود من اصلا هیچ درکی در این ندارم که اگر همین دوتا معماری رو روی یک دیتاستی ترین کنیم برنده میدان دیتاست y باشه چون بالاخره ما دیگه دیتاستی چالش برانگیزتر از امیج نت نداریم که وقتی این معماری x در حال حاضر از پس چالش های اون دیتاست براومده هست بازنده میدان باشه - فرضا من این هست که کلا دقت برامون شرط اوله سربار محاسباتی  و .... شرط نیستند.
حالا اگر هدفم سرعت و کاهش سربار محاسباتی هست بهترین گزینه بنظرم باز همون معماری باید باشه که soat  ورژن های لایت یا همان موبایل نت ها هستند .
سلام. وجود تخصص لازمه اما اینکه یک فردی برای استفاده لازم باشه در سطح کسی که معماری طراحی میکنه باشه نه "لازم" نیست. اما وجود یک تخصص حداقلی لازم هست و این حداقل هم نسبیه.
یک مثالی میزنم. شما وقتی راننده یک اتوموبیل باشی یا مثلا یک رایانه یا حتی یک برنامه هرچند درسته قراره فقط برای استفاده ازش استفاده کنی و خود شما نه اون اتومبیل رو بسازی یا نه رایانه رو ولی یک دانش حداقلی باید داشته باشی سر در بیاری چی به چی هست. خطایی دیدی مشکلی دیدی بدونی از چه چیزی نشات گرفته یا ممکنه گرفته باشه. قرار نیست متخصص تعمیرات باشی ولی لازم هست یک بیس اولیه رو داشته باشی بدونی داستان از چه قراری هست و با چه چیزی طرفی.
وقتی ندونی بشدت محدود میشی و نتیجه کار شما هم صد در صد بهینه از اب در نمیاد.
سیاست های یادگیری و دیتاست ها و زمینه های مختلف داستان زیادی دارن. دقت کن بحث سر بهبودها نیست.  یک معماری که ۲ سال اینده اومده ممکنه رو یک فاز بهبود داشته باشه و منتقل کردن اون نتیجه کسب شده رو دیتاست یا زمینه جدید ممکن نباشه بدون تنظیمات مورد نیاز.
یه تست ساده بکن. یک معماری مثل رزنت ۱۵۰ یا دنزنت که رو ایمیج نت به دقت خیلی خوبی رسیده سعی کن روی یه دیتاست مثل سیفار۱۰ ترین کنی. با همون مشخصات. حالا تو همون دوره یه معماری خیلی ابتدایی مثل simplenet‌رو ببر تو سیفار تست کن.  میبینی رزنت ۱۵۰ یا دنزنت خیلی بدتر عمل میکنن. چیز عجیبی نیست رزنت ۱۵۰ و دنزنت با توجه به نیازهای ایمیج نت تنظیم شدن. نمیشه انتظار داشت بدون هیچ تغییری همون رو روی دیتاست دیگه ای لحاظ کنی و با همون سیاست یادگیری و ... نتیجه حداکثری بگیری. هم  رزنت و هم دنزنت یک معماری جداگانه برای سیفار۱۰ دارن که برای اون منظور "تنظیم و بهینه" شدن و یک حداقل تفاوت هایی در معماری و یا سیاست یادگیری دارن که منطقی هست. علاوه بر اون برخی موارد و تنظیمات در مقیاس بزرگ خیلی خوب کار میکنه ممکنه در مقیاس کوچیک اصلا خوب کار نکنه. یعنی یه کاستی معماری در زمان مواجه به حجم زیادی از داده خودشو نشون نمیده اما همین که بره رو دیتای کمتر و یا سخت تر خودشو نشون بده. این مساله رو بعنوان مثال میتونی تو معماری Squeezenet‌ ببینی تو ایمیج نت با توجه به قد و قواره اش دقت خوبی گرفت (نسبی (البته موبایل نت بهتر عمل کرده ولی بحث ما یه چیزدیگه اس) ولی همین رو ببری روی سیفار۱۰ میبینی افتضاح عمل میکنه. چه با سیاست خودش و چه با یه سیاست بهینه شده .
بنابر این فرض این مساله که چون یه معماری رو ایمیج نت خوب کار کرده و بی بورو برگرد رو همه دیتاست های دیگه بدون نیاز به تنظیمات بعدی به همون "خوبی" کار میکنه صحیح نیست. به همین دلیل هم ممکنه شما ببینی یه معماری قبلی تو یه دیتاست از یه معماری جدیدتر بهتر کار میکنه. اینجا میتونی احتمال بدی بخاطر وجود یک مساله که در دیتاست ایمیج نت حاضر بوده اما اینجا نیست ویژگی یا ماهیت معماری قدیمی تر ممکنه باعث بشه بهتر کار کنه نسبت به معماری جدیدتر.  این مساله نشونگر این نیست که معماری جدیدتر خوب نیست پس. این داره اینو میگه بدون تنظیمات خاص ممکنه شاهد این قضیه باشی همونطور که نمونه های قبلی صحبتشون شد.  
پس میبینی شما یه چلنجی اینجا داری . اینجا مثلا یه معماری رزنت تنظیم شده یا یه معماری wrn‌تنظیم شده برای سیفار از یه معماری تنظیم نشده مثل دنزنت که تو ایمیج نت SOTA داره در سیفار۱۰ نتیجه بهتری میگیرن.
اما اگه همین دنزنت رو برای سیفار۱۰ تنظیم کنی میبینی دقت خیلی بهتری از اونها ارایه میده.
ممنون از شما
و یک سوال دیگه : فرضا من قواعد و اصول cnn ها رو میدونم و با ترین کردن آشنا هستم الان یک دیتاستی دارم میخام طبق این یک معماری بهینه برای این در نظر بگیرم و تنظیماتی را روی این انجام بدم
یعنی این قواعد و اصول چه چیزی هستند که من باید طبق دیتاست خودم به سمت معماری بهینه برای این دیتاست انتخاب کنم ؟ آیا با ترین کردن همه ی مدل ها ؟ اینکه خوب نیست قطعا . آیا هر معماری حرفه ی متخصص روی یک سری مسائلی هست ؟ و حالا برحسب یکسری قواعدی معماری انتخاب شد حالا این تنظیمات طبق یکسری سعی و خطا بدست میاد ؟
اون چیزی که بیشتر مد نظر خودم هست واقعا شاید کمتری تخصصی از قبل بدونه که مثلا برای این دیتاست خودمون فرضا رزنت خوب عمل میکند یا همچین تنظیماتی درسته ؟ چون شما هم در این حوزه طراحی معماری آشنایی نسبتا خوبی دارید ولی هر متخصصی که یک معماری داره دیزاین میکنه مطمعنا اگر ادعا کند که من بدون سعی و خطا به این نتیجه رسیدم قطعا ادعای صحیحی نخواهد بود ولی حداقل چیزها رو میدانند.
به نظر من تنها چیزی که شاید بتونه خوب تاثیر گذار باشه نسبت به انتخاب معماری ها و تنظیمات ، پیش پردازش هست .
و واقعا این برای من زیاد قابل لمس نیست اینکه طراحان معماری بیایید طبق یکسری فیچرهایی که امیج نت داره معماری خودشون رو طراحی کنند چیزی که اصل و قاعده ی خیلی مهم در طراحی معماری هست بدرستی از حداکثر توان هر لایه در جای خودش استفاده کنند و این شاید زیاد ربطی به دیتاست نداشته باشه فرضا یک طراحی بیاد بگه من معماری خودم رو نسبت به دیتاست امیج نت  یا هر دیتاست دیگه طراحی کردم.
و اینکه شما میفرمایید مثلا یک معماری که در امیج نت خوب عمل میکند و در سیفار تن خوب عمل نمیکند این شاید برگرده یه پتانسیل اون معماری ، یعنی فرضا من میام یک معماری دیزاین میکنم که نیازهای یک دیتاست بزرگ و چالش برانگیز امیج نت رو برآورده کنه و این هم شاید برمیگرده به تعداد پارامترهای موجود و درست به کارگیری لایه ها و .... که این باعث شده رو امیج نت خوب کار کنه  ولی موقع ترین روی سیفار رو بعد تست چون از یک معماری که قابلیت بالایی دارد موقع ترین روی سیفار بخاطر مسائل اورفیتینگ و ... خوب روی دیتاست کوچک تیون نشود . فرضا شما که میفرمایید معماری شما که نسبت به رزنت در سیفار خوب کار میکند ولی نسبت به امیج نت نه ، این همان برمیگرده به ساده بوده معماری شما که پتانسیل شکست دادن امیج نت رو ندارد.
سلام
اول در مورد کسایی که معماری طراحی میکنن. اینطور نیست که اونها معماری رو بر اساس ایمیج نت طراحی کنن. اونها یک طرح و ایده رو پیاده میکنن و اول از نظر مفهومی چک میکنن وقتی اکی بود یه فاز کوچیک تست مییگرن اکی بود حالا میرن رو ایمیج نت. بعد برای ایمیج نت "تنظیم"ش میکنن. اگه کامنت قبلی دقت کنی نوشتم مثلا معماری دنزنت هم تو ایمیجنت هم تو سیفار۱۰ خیلی عالی کار میکنه. چون مفهومی که استفاده کرده خیلی خوب داره جواب میده. اما قرار نیست معماری ای که مختص گرفتن بهترین نتیجه رو ایمیج نت ساخته شده بدون تغییر برای کاربرد دیگه ای انتظار داشته باشیه "بهترین" خروجی یا بهینه ترینش رو بده . خیلی از معماری ها رو حساب سعی و خطا بدست اومدن. اما وقتی شما زیاد کار کنی به یه دانش یا بهتر بگم به شهود عینی میرسی از اینکه چه اتفاقی داره رخ میده مشکل چیه و چطور برای رفع اون مشکل باید حرکت کرد. خیلی از معماری های جدید از این جهت بوجود اومدن و محققایی که پشتشون هستن آدمهای با تجربه و با دانشی هستن. و اینم بگم هنوز خیلی کارهای دیگه مونده که کسی نکرده چون همه افراد دسترسی به سخت افزار خوب ندارن. من میتونم به یقین بگم شما بعنوان مثال اگه یه سخت افزار یا زیرساخت مناسب داشته باشی و بشینی همینطور ترین کنی (البته نه بی هدف) کم کم به تمامی مواردی که در  مقاله های گوگل نت و رزنت و... اومده میرسی . یک سیر طبیعی هست. پس این یک نکته که هر دو حالت رو داریم.

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

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

در مورد بخش دوم آفرین یه نکته مهم همینه دقیقا که یه دیتاست بزرگتر نیازهاش فرق میکنه و دقیقا یه بحث اورفیتینگ و... هست. برای همین میبینیم که نیاز به تنظیمات خیلی مهمه. یک معماری اگه بر مبنای درستی طراحی و بدرستی هم پیاده سازی بشه باید بتونه در سناریوهای مختلف بخوبی عمل بکنه. بعضی موارد در دیتاست های کوچیکتر صادق نیستن و دقیقا به مشکلاتی که گفتی بر میخورن. شما قصد داری یک راه حل ارایه کنی. اگر قرار باشه معماری انتخاب بشه که روی دیتاست های کوچیک خوب کار نکنه اون بدرد نمیخوره. حتی اگه استیت او در ارت ایمیج نت یا گنده تر از اونو داشته باشه. اگر بگیم بخاطر اورفیتینگ هست باید یک مدل کوچکتر مناسب اون دیتاست جدید طراحی بشه اگر باز این مشکل باشه نشونگر غیربهینه بودن اون معماریه برای اون کاربرد مورد نظر.
اینجا بحث قیاس بین بهتر بودن یا بدتر بودن یه معماری نسبت به اون یکی نیست. این بین شاید بنظر نیاد اما خیلی داستان هست. من اینو در جواب شما گفتم که چطوری میشه یه معماری یه جا خوب کار کنه یه جا نه. و اینکه نیاز به تنظیم داریم اخر یا نه. ربطی به بحث نداره اما SimpleNet هیچوقت بطور واقعی رو ایمیج نت مثل رزنت ترین نشد (نه با همون پیش پردازش ها و نه حتی با تعداد پارامترهای مشابه) برای همین من مطرحش نکردم. در قیاسش با سیفار۱۰ هم از نظر تعداد پارامتر و سربار پردازشی مساوی با فاصله زیاد رزنت و wrn‌ و...رو پشت سر گذاشته (البته نسخه دومش) که نشونگر اینه بیسی که معماری مبتنی بر اون هست صحیح بوده. آیا در دیتاست های بزرگتر به همین خوبیه؟‌ بستگی به تنظیم و تست داره تا مشخص بشه)

در مورد بحث سادگی معماری باید دقت کنی این هیچ ربطی به بهتر یا بدتر بودن نداره که چون یک معماری ساده است پتانسیلش رو نداره. یک نمونه خوب همین مواردی بود که صحبت کردیم تو سیفار10/100 (با تعداد پارامتر یکسان و یا متفاوت معماری پیچیده تر(مثل رزنت ) از یه معماری ساده تر تو یه دیتاست کوچیک بدتر عمل میکنه.) یک نمونه تو زمینه ایمیج نت معماری موبایل نت هست که طرح بسیار ساده ای داره و دقت بسیار خوبی ارایه میکنه و بسیار بهینه اس.
حالا بخش اول فرمایش شما:‌درسته نمیشه رو همه چیز تست کرد. اما باید به اندازه کافی تست داشت. معماری های مختلفی بیرون هست که رو دیتاست های مختلفی ترین و تست شدن میشه با نگاه کردن به اونها دید یک معماری (بهتره بگیم یه مفهوم جدید که پیاده سازی شده ) در حالتهای نزدیک به کاربرد ما چطوری کار میکنن.
مثلا اگه من دیتاستم کوچیکه میرم ببینم یک معماری که انتخاب کردم (مثلا دنزنت) علاوه بر نتایج عالیش ایا رودیتاست های کوچیک هم خوب کار میکنه؟ میبینم اره!‌ پس این انتخاب منه. و میرم رو تست و تنظیمش برای کار خودم.
نکته بعدی سوال کردن از بقیه اس. این باعث میشه کسی اطلاع و یا تجربه ای داشته باشه بتونه بهتر معرفی کنه.
نکته اخر هم اینکه بعد مدتی شما تجربه بدست میاری و وقتی یک مقاله میخونی متوجه میشی کانسپتش چقدر پتانسیل داره خوبه یا نه و اگه خوبه میشینی خودت بر اون اساس طراحی میکنی و یه یه معماری خاص منظوره خیلی خوب پیاده میکنی.
ممنون از شما
...