Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/ustmbir/domains/deeplearning.ir/public_html/qa/qa-include/qa-base.php on line 1177
شبکه از پیش آموزش داده شده یا Pre-trained Network چیست؟ - پرسش و پاسخ یادگیری عمیق
به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

+1 امتیاز

ُسلام دوستان
میخواستم بدونم منظور از pre-trained network چیه؟
برا مثال AlexNet رو در نظر بگیرین که به عنوان یک pretrained network شناخته میشه
ولی اگه بخواهیم اون رو برا داده های خودمون (مثلا تصاویر پزشکی) استفاده کنیم (نه برای imageNet و اون 1000 کلاس مشخص) دوباره باید اونو برا داده های خودمون train کنیم . درسته؟
پس منظور از pretrained network برای مثال alexNet برا کلاسه کردن تصاویر پزشکی فقط استفاده از ساختار اونه و تمام وزن ها رو باید از اول برا داده ای پزشکی train کنیم؟

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

2 پاسخ

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

در ابتدا باید گفت هر شبکه مانند alexnet , googlnet .. یک ساختار هستند. یعنی چگونگی قرار گیری لایه های شبکه, تعداد و نوع لایه ها. به عنوان مثال شبکه x از 2 لایه کانولوشن با سایز پنجره ... و 1 لایه ... و ...
هنگامی که یک شبکه آموزش میبینه در اصل تنظیم کردن مقادیر وزن های این لایه هاست . وزنهایی که در وردی هر لایه ضرب میشه و خروجی اون به تابع فعال سازی و ..
پاسخ:
آموزش شبکه های عمیق به علت تعداد بالای پارامتر هاشون نیاز به داده های آموزش زیاد, صرف زمان و سخت افزار مناسب داره. اما اتفاقی که افتاده : وقتی یک شبکه روی یک مجموعه داده خاص مثل imagenet آموزش میبینه فقط اطالاعات مربوط به ان مجموعه رو یاد نمیگیره بلکه اطلاعات کلی راجع به جنس داده ( در اینجا عکس) یاد میگیره. دقیق تر اگر صحبت کنیم, شبکه های عمیق مفاهیم رو به صورت سلسله مراتبی یاد میگیرند. یعنی به عنوان مثال یک شبکه عمیق برای تشخیص تصویر در لایه های اول ویژگی های ساده مثل یال یا بافت تصویر رو یاد میگیره. در لایه های بعدی مفاهیم کمی پیچیده تر مثل دایره یا اشکال ساده و در لایه های آخر مفاهیم سطح بالا و نزدیک به برچسب ها مثل صورت انسان ماشین ...
این ویژگی شبکه های عمیق باعث میشه که بتونیم از یک شبکه ای که برای یک وظیفه مانند تشخیص بر چسب در داده های imagenet آموزش داده شده برای کاربرد های دیگر مثل شناسایی تصاویر پزشکی استفاده کنیم.
توجه کنید لایه های انتهای شبکه اول برای برچسب هایی مانند گربه و سگ و ... آموزش دیده اند و اطلاعاتی در مورد تصاویر پزشکی ندارند. پس این لایه ها نیاز دارند که مجددا آموزش ببیند. اما ویژگی های ساده ای که لایه های اول استخراج میکنند در هر دو نوع داده مشترک هست در نتیجه نیاز نیست مجددا آموزش ببیند.
پس برای استفاده از شبکه های از پیش آموزش دیده ما از وزن های اونها استفاده میکنیم :
لایه های ابتدایی رو تغییر نیمیدیم
لایه های انتهایی رو مجددا آموزش میدیم ( میتونیم از وزن های شبکه برای شروع استفاده کنیم و یا از ابتدا به صورت تصادفی وزن های شروع رو انتخاب کنیم. روش اول مرسوم تر هست ولی باز به نوع مساله بستگی داره )

توسط (418 امتیاز)
انتخاب شده توسط
خیلی متشکرم...لطف کردید...برای finetune داده های پزشکی ، شما چه مدل pretrain شده رو توصیه میکنید؟
من تجربه کار با تصاویر پزشکی ندارم شاید سایر دوستان نظر بهتری داشته باشند.
اما در کل ببینید چه مدل های آموزش دیده شده ای در اختیار دارین ( با چه داده های آموزش دیده شدند) معمولا در هر پلت فرمی و هر شبکه ای مدل آموزش دیده شده با imagenet به راحتی پیدا میشه. اما شاید مدل دیگه ای هم باشه که نزدیک تره به مساله شما باشه.
از طرف دیگر پیشنهاد میکنم کار رو با مدل alexnet شروع کنید این مدل بسیار قوی است و به علت سادگی مدل و کم بودن تعداد لایه ها کار با اون به مراتب راحت تره. بعد از اینکه روی این شبکه به بهترین جواب رسیدید شاید بد نباشه شبکه های پیچیده تر رو هم امتحان کنید که پیشنهاد من به ترتیب vgg16 و inception هست.
یک دنیا ممنونم...موفق و پیروز باشید
+1 امتیاز

سلام. همان‌طور که از معنی واژه مشخص است، شبکه‌های آموزش‌دیده شبکه‌هایی با معماری و وزن‌های تعیین‌شده هستند. این شبکه‌ها قبلا با استفاده از دیتاست مشخصی آموزش داده شده و وزن‌های مناسب بدست‌آمده‌اند. معمولا از شبکه‌های آموزش دیده به دو شکل استفاده می‌کنند. یا با کم کردن learning rate و کارهای دیگه همون شبکه رو برای موارد دیگه آموزش میدن که به اصطلاح به این کار fine-tuning گفته میشه. یا اینکه از خروجی‌های یک یا دو لایه آخر شبکه به عنوان ورودی روش‌های دیگه استفاده می‌کنند. اگر دوباره شبکه رو برای یک موضوع دیگه آموزش بدید تنها معماری شبکه حفظ میشه و وزن‌ها دوباره یاد گرفته می‌شوند.

توسط (115 امتیاز)
...