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

با تشکر

0 امتیاز

با سلام

من دیتاستی دارم که هزاران عکس توش دارم . ولی فقط یک عکس دارم که تصویرگربه است و باقی عکسها چیزهای دیگه هستند. میخوام بدونم ایا میشه تنها با یک تصویر گربه ، شبکه را جوری استفاده کرد که تشخیص بده تصویر گربه کدومه؟
ایا اصلا بدون داشتن داده اموزشی در مورد تصویر گربه می شه تشخیص داد تصویر گربه کدومه؟

سوال شده توسط (150 امتیاز)

1 پاسخ

+3 امتیاز

سلام
این چیزی که شما دنبالش هستید، به عنوان one-shot learning و zero-shot learning روش کار شده
توی one shot، شما مثلا همون یه تصویر گربه رو دارید و بعدا در نظر دارید که با همون یه دونه، گربه ها رو تشخیص بدید
و توی zero shot خیلی جاها همون یه نمونه رو هم ندارید.
توصیه میکنم مقالات مرتبط با این موضوعات رو بخونید چون تنوع های زیادی دارن و متاسفانه خیلی جاها خیلی هم متمرکز در موردشون حرف زده نشده

برای One-shot learning برای نمونه این مقاله ها خوبن، به خصوص برای کار شما که image recognition هست:

Siamese Neural Networks for One-shot Image Recognition

https://www.cs.cmu.edu/~rsalakhu/papers/oneshot1.pdf

One-shot Learning with Memory-Augmented Neural Networks

https://arxiv.org/pdf/1605.06065.pdf

توی بحث one shot learning، شبکه های حافظه دار یا شبکه های wide هم خیلی مورد توجه هستن. نمونه شبکه های حافظه دار رو توی لینک های بالا گذاشتم که ماله deepmind بود، اما برای بحث شبکه های wide، یه سرچی در مورد عبارت wide and deep learning بکنید اطلاعات بیشتری دستگیرتون میشه

برای Zero-Shot هم برای نمونه این مقالات رو ببینید که به نسبت هم جدید هستن

Zero-Shot Learning - The Good, the Bad and the Ugly

https://arxiv.org/abs/1703.04394

برای شروع بحث one shot learning هم از مدلهای ساده مثل شبکه های siamese استفاده کنید و اگه لازم شد کم کم به سمت شبکه هایی مثل NTM برید چون تیون کردن و آموزشش خیلی(خیلی!) به هایپرپارامترها وابستس و به خصوص اگه تجربه های اولتون با شبکه های دیپ باشه ممکنه اذیت بشید
حتی بدون شبکه های اختصاصی، مثلا با knn و این جور چیزا هم میشه one shot learning انجام داد. یعنی مثلا بردارهای ویژگی رو ذخیره کنید و بعدا با knn هر بردار جدید رو با چیزایی که ذخیره کردید مقایسه کنید. توی هر کاری بهتره ساده ترین کار ممکن رو انجام بدید تا یه baseline اولیه برای خودتون داشته باشید

اینم که گفتم بعضی جاها به طور پراکنده راجع به بحث one shot یا zero shot بحث شده، نمونش توی این مقاله در مورد distillation ه

Distilling the Knowledge in a Neural Network

https://arxiv.org/pdf/1503.02531.pdf

بحث distillation چیزیه که توی خیلی از مقالات به اسم teacher student هم مطرح میشه و شما یه شبکه معمولا خیلی قوی آموزش میدید و بعدش خروجی این شبکه رو برای آموزش یه شبکه کوچیکتر استفاده میکنید
حالا آزمایشی که اینجا کردن اینطوری بوده که یه شبکه روی mnist آموزش دادن، بعد از خروجی این شبکه و خوده training set که توش مثلا عدد 3 حذف شده استفاده کردن برای آموزش یه شبکه دیگه
شبکه جدید با اینکه تا حالا عدد 3 رو ندیده بوده اما می تونه با دقت خوبی عدد 3 رو هم تشخیص بده
این دقیقا zero shot learning خالص نیست اما حداقل اگه می خواید توی این زمینه کار کنید بهتره که این موارد رو هم بدونید

==========================

چندتا لینک برای توضیح بیشتر:

https://sorenbouma.github.io/blog/oneshot


https://github.com/MLWave/extremely-simple-one-shot-learning


https://www.coursera.org/learn/convolutional-neural-networks/lecture/gjckG/one-shot-learning

پاسخ داده شده توسط (1.6k امتیاز)
...