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

با تشکر

دسته بندی ها

0 امتیاز

با سلام و وقت بخیر خدمت دوستان
لطفا اگر کسی مقاله Binarized Neural Network رو مطالعه کرده توضیحاتی پیرامون آن در اختیار بنده قرار دهد .
خودم خوندمش ولی هنوز برام واضح نشده .
این هم لینک دانلود مقاله
https://arxiv.org/abs/1602.02830
1-ظاهرا در این مقاله قرار است که مقادیر فعال سازی و وزن ها را محدود و بین 1 و-1 در نظر بگیرند که برای اینکار از دو تابع خطی (تابع علامت)و تصادفی استفاده برده اند . چه جوری یعنی بعد از بوجود آمدن هر نقشه ویژگی این تابع را روی تک تک مقادیر آن پیاده سازی کردند؟
2- در ادامه بحث جایی در مورد این نکته بحث شده که مقادیر حقیقی گرادیان در متغیرهای حقیقی ذخیره می شوند. این یعنی چه ؟
3- اینی که میگه SGD پاارمترها را در یک مرحله نویز و کوچک جستجو می کند و این نویز به طور میانگین به وسیله توزیع گرادیان احتمالی در هر وزن ذخیره می شود و به رزولوشن کافی برای ایت تجمیع نیاز است. یعنی چه؟ و چه جوری به تعمیم پذیری بیشتر کمک می کند ؟ خودش گفته که باعث تعمیم پذیری بیشتر می شود.
4- قسمت تزویج گرادیان از طریق گسسته سازی رو هم اصلا متوجه نمی شم.
در کل متن خوبی نداره ؟ به نظر می رسه خیلی کلی گویی کرده و رفته .
4

توسط (219 امتیاز)
ویرایش شده توسط
سلام. کدوم بخشش براتون واضح نیست؟

1 پاسخ

0 امتیاز

سلام
این مقاله همون مقاله BinaryConnect هست . اینجا از نظر نگارشی بهتر نوشتن بنظرم این مقاله رو بخونید نباید مشکلی داشته باشید.
این بکنار اون قضیه دودویی سازی (binarization) در حین عملیات بصورت دینامیک انجام میشه اصطلاحا همون on the fly صورت میگیره. یعنی وقتی یک عمل ضرب بخواد انجام بشه تبدیل صورت میگیره. به این شکل که وزنها مثل همیشه دارای مقدار اعشاری هستن اما اتفاقی که اینجا میوفته بر خلاف چیزی که الان(منظور در پیاده سازی های معمولی) اتفاق می افته یعنی ضرب وزنها با ورودی ها که هر دود اعدادی اعشاری هستن از +1 و -1 برای ضرب و... استفاده میشه . یعنی هر وقت قرار بر انجام forward pass و backwawd pass باشه موقع ضرب کردن وزنها وارد اون توابع دودویی ساز میشن و بعد هرچی شد اون در ضرب شرکت داده میشه . اخرش هم موقع اپدیت وزنها نتیجه هرچی شد بصورت اعشاری ذخیره میشه . یعنی خود وزنها اون precision و دقت خودشون رو حفظ میکنن . اگه اینطور نباشه کلا SGD کار نمیکنه.
همین یک کاری که کردن باعث صرفه جویی بسیار زیادی در حافظه میشه و همینطور سرعت عملیات هم بشدت افزایش پیدا میکنه
بخش سوم سوال شما هم به این اشاره داره که SGD در گام های مختلف براساس تقریبی عمل میکنه که مبتنی بر اندازه مینی بچ هست. یک مینی بچ تقریبی از دیتاست ما قراره باشه و بر اساس اندازه اون این تقریب میتونه دقیقتر و یا بدتر باشه .این مساله به همین اشاره داره. اون رزولوشن هم اشاره به precision متغییر وزن داره یعنی اگر دقت اعشار مناسب وجود نداشته باشه کلا به مشکل میخوریم و ضروریه یک تعداد دقت اعشار حتما وجود داشته باشه اینو درادامه میگه که چرا وزن با مقدار اعشاری وجود داره و اپدیت ها در اون بصورتی که صحبتش رفت ذخیره میشن.
اون بحث مثل رگیولایزر بودن هم داستانش مثل داستان dropconnect هست که وزنها رو بصورت رندوم صفر میکنه(نویز وارد میکنه) اینجا هم همون داستان صادقه.

توسط (4.3k امتیاز)
سلام ,ممنون
مقاله پیشنهادیتون رو می خونم . به محض اینکه همه ابهامات برام روشن شد تیک سبز رو می زنم.
سلام . خواهش میکنم مشکلی نیست.
...