آموزش شبکه کانولوشن بخش اول

120 46,074

بسم الله الرحمن الرحیم

خب میخوام انشاالله اگر خدا بخواد به مرور بخش هایی از اسناد و داکیومنتهایی که قبلا خودم نوشتم رو تو سایت قرار بدم .

قرار بود این کار رو بعد از تموم شدن دفاعم بزارم ولی خب این قضیه داره برای من خیلی کش پیدا میکنه (کاغذ بازی دانشگاه و الان وزارت خارجه! و تایید مدارک استاد راهنمام و… ) و نمیدونم آخرش چی میشه . توکل بخدا .

برای همین تصمیم گرفتم زودتر کارو پیش ببرم . این مطالبی که میزارم نوشته های خودم هست که قراره بخشی از مستندات پایان نامم باشه و ماه ها قبل نوشتمشون ولی هنوز کار دارن و ویرایش نشدن برای همین هر بار یه بخشی رو قرار میدم.

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

توجه:

  • منبع این اطلاعات آموزش دانشگاه استنفورد هست : من فقط بخش شبکه های کانولوشن رو اینجا میزارم حتما بقیه بخشها رو بخونید چون عالی هستند.

شبکه های کانولوشن :

شبکه های عصبی کانولوشن تا حد بسیار زیادی شبیه شبکه های عصبی مصنوعی هستند که در بخش قبلی در مورد آنها توضیح داده شد. این نوع شبکه ها متشکل از نورونهایی با وزنها و بایاسهای قابل یادگیری (تنظیم) هستند.[۱] هر نورون تعدادی ورودی دریافت کرده و سپس حاصل ضرب وزنها در ورودی ها را محاسبه کرده و در انتها با استفاده از یک یک تابع تبدیل(فعال سازی) غیرخطی نتیجه ای را ارائه دهد. کل شبکه همچنان یک تابع امتیاز (Score function) مشتق پذیر(differentiable) را ارائه میکند, که در یک طرف آن پیکسل های خام تصویر ورودی و در طرف دیگر آن امتیازات مربوط به هر دسته قرار دارد. این نوع شبکه ها هنوز یک تابع هزینه (Loss function) (مثل SVM,Softmax) در لایه آخر (تماما مرتبط یا fully connected) دارند و تمامی نکات مطرحی در مورد شبکه های عصبی معمولی در اینجا هم صادق است.

با توجه به مطالب گفته شده ,تفاوت شبکه عصبی کانولوشن با شبکه عصبی مصنوعی در چه چیزی میتواند باشد ؟ معماری های شبکه های عصبی کانولوشن بصورت صریح فرض میکنند که ورودی های آنها تصاویر هستند , با این فرض ما میتوانیم ویژگی های مشخصی را درون معماری تعبیه (encode) کنیم .با این عمل تابع پیشرو (forward function) را میتوان بصورت بهینه تر پیاده سازی کرد و همینطور با این کار میزان پارامترهای شبکه نیز بشدت کاهش پیدا میکند.

خلاصه معماری

همانطور که ما میدانیم, شبکه های عصبی یک ورودی دریافت میکنند (در قالب یک بردار ) و سپس آنرا از تعدادی لایه مخفی (Hidden layer) عبور میدهند. و نهایتا یک خروجی که نتیجه پردازش لایه های مخفی است در لایه خروجی شبکه ظاهر میشود. هر لایه مخفی از تعدادی نورون تشکیل شده که این نورون ها به تمام نورون های لایه قبل از خود متصل میشوند. نورونهای هر لایه بصورت مستقل عمل کرده و هیچ ارتباطی با یکدیگر ندارند. آخرین لایه تماما متصل (fully connected layer) به لایه خروجی (output layer) معروف است و معمولا نقش نمایش دهنده امتیاز هر دسته(class) را ایفا میکند.

شبکه های عصبی معمولی برای تصاویر معمول(full images) بخوبی مقیاس پذیر نیستند. بعنوان مثال تصاویر موجود در دیتاست CIFAR-10 [2] اندازه ای برابر با