به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (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 امتیاز)
انتخاب شده توسط
واقعا عالی توضیح دادید...خیلی خیلی متشکرم...یه سوالی هم دارم...1-آیا به این کاری که در بالا توضیح دادید ، fine tuning گفته میشه؟   "ین ویژگی شبکه های عمیق باعث میشه که بتونیم از یک شبکه ای که برای یک وظیفه مانند تشخیص بر چسب در داده های imagenet آموزش داده شده برای کاربرد های دیگر مثل شناسایی تصاویر پزشکی استفاده کنیم."
2-چند تا لایه انتهایی شبکه pre train شده رو ، باید برای دادهای خودمان مجددا train کنیم؟ بستگی به نوع شبکه مون داره؟ من یه جا خوندم که لایه های fc , softmax  رو باید پاک کنیم...
اگرمطلبی (برای پیاده سازی در matconvnet) برای این کار هم میشناسید ، لطفا معرفی کنید....سپاس...
1- بله ، هنگامی که از مدلی که قبل آموزش داده برای وزن های اولیه یک مدل آموزش استفاده کنیم اصطلاحا finetune میگن
2- لایه softmax لایه ای نیست که آموزش ببینه. تعداد نورون های  لایه قبل از اون که در بسیاری از مدل ها fc هست برابر با تعداد کلاس ها است پس طبیعتا باید تغییر کنه و مجددا آموزش ببینه. اما اینکه به غیر از اون چند لایه دیگه هم تغییر کنه مربوط به مساله میشه و جواب دقیق نمیشه داد. البته ۲ عامل در این تصمیم گیری نقش مهمی دارند : تعداد داده های آموزش و شباهت مساله به مساله اولیه که شبکه pretrain روی اون آموزش دیده
تعداد: وقتی داده های ما کم باشند تعداد پارامتر های کمی رو میتونیم آموزش بدیم پس لایه های کمتری رو آموزش میدیم
شباهت : هرچه ذات مساله و داده ها نزدیک تر باشند نیاز به آموزش لایه های کمتر داریم ( مثلا ذات داده های پزشکی با تصاویر imagenet که معمولا مدل ها روی اون آموزش دیده اند خیلی متفاوته پس آموزش فقط یک لایه نتیجه مطلوبی نمیده)
متاسفانه من اصلا با matconvnet کار نکردم و هیچ آشنایی ندارم بهتره سایر دوستان راهنمایی کنند.
خیلی متشکرم...لطف کردید...برای finetune داده های پزشکی ، شما چه مدل pretrain شده رو توصیه میکنید؟
من تجربه کار با تصاویر پزشکی ندارم شاید سایر دوستان نظر بهتری داشته باشند.
اما در کل ببینید چه مدل های آموزش دیده شده ای در اختیار دارین ( با چه داده های آموزش دیده شدند) معمولا در هر پلت فرمی و هر شبکه ای مدل آموزش دیده شده با imagenet به راحتی پیدا میشه. اما شاید مدل دیگه ای هم باشه که نزدیک تره به مساله شما باشه.
از طرف دیگر پیشنهاد میکنم کار رو با مدل alexnet شروع کنید این مدل بسیار قوی است و به علت سادگی مدل و کم بودن تعداد لایه ها کار با اون به مراتب راحت تره. بعد از اینکه روی این شبکه به بهترین جواب رسیدید شاید بد نباشه شبکه های پیچیده تر رو هم امتحان کنید که پیشنهاد من به ترتیب vgg16 و inception هست.
یک دنیا ممنونم...موفق و پیروز باشید
+1 امتیاز

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

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