سلام .
در شبکه کانولوشن ما با توده های سه بعدی سرو کار داریم . در شبکه های عصبی معمولی (mlp) ما تو هر لایه فقط یکسری نورون داشتیم . مثلا میگفتیم لایه اول ۱۰ تا نورون داره یا ۵ تا نورن داره . لایه دوم مثلا ۲۰ تا نورون داره و الی اخر . و این نورون ها هم همه بهم متصل بودن.
یعنی مثلا نورون شماره ۱ به همه نورونها از مرحله قبل وصل بود . و وقتی اسمی از عمق میومد به معنای تعداد لایه های موجود در شبکه عصبی ما بود.
در شبکه کانولوشن (لایه کانولوشن) اینطور نیست یکم ماجرا فرق میکنه. اینجا ما نورونهایی در سه بعد داریم . یعنی یه اندازه مکانی داریم که اشاره به ابعاد توده داره مثلا ۳*۳ و یک عمق داریم که اشاره به عمق این توده داره مثلا ۱۲ که میشه ۳x3x12 . اون ۱۲ یا عمق در اصل تعداد فیچرمپهای خروجی لایه کانولوشن هست (به عبارت دیگه میشه گفت تعداد نورون هایی که در آن واحد به یک ناحیه خاص از ورودی نگاه میکنن هست که نتیجه اش میشه یک فیچر مپ به ازای هر نورون)
بعد این نورون ها هم با یک مکانیزم محلی روی ورودی اعمال میشن و خروجیشون هم تشکیل یک توده سه بعدی دیگه رو میده .
ادامه آموزش رو بخونید همه اینها مشخص میشه. خصوصا وقتی به بخش دوم برسید یک مثال عملی هم هست که میتونید ببینید عینا چه اتفاقی داره میوفته تقریبا.
نکته مهم:
این سه بعدی بودن توده ها ربطی به سه کاناله بودن تصویر ورودی نداره. عمق لایه کانولوشن یک فراپارامتر هست که توسط ما مشخص میشه و بطور موثر مشخص کننده تعداد فیلترهای اعمال شونده روی توده ورودی هست.(توده ورودی میتونه یک عکس سیاه و سفید باشه میتونه یک سیگنال باشه و... و میتونه نتیجه حاصل از محاسبات از مرحله قبل (لایه های کانولوشن و یا تماما متصل قبل از خودش باشه)
این مثال بخشی از بخش دوم آموزش شبکه کانولوشن هست :
در این قسمت ما نحوه فعالیت صورت گرفته در یک لایه کانولوشن را گام بگام
توسط تصویر نشان میدهیم . بخاطر اینکه نمایش حجم های سه بعدی کمی مشکل
است تمام توده های سه بعدی (توده ورودی (با رنگ آبی ) , توده وزن ها ( با
رنگ قرمز) و توده خروجی (با رنگ سبز) ) بصورت برش هایی نمایش داده شده
اند. اندازه توده ورودی برابر با W1 = 5, H1 = 5,D1= 3 میباشد( به ترتیب
معرف عرض, ارتفاع و عمق) , پارامترهای لایه کانولوشن نیز به ترتیب برابر
با K=2 , F = 3 , S = 2 و P =1 میباشند که به معنای آن است که ما دو
فیلتر با اندازه ۳×۳ داریم که با گام (stride) S =2 بر روی توده ورودی
اعمال میشوند. بنابر این اندازه توده خروجی ما هم برابر با ۳=۱+
۲/(۲+۳-۵) خواهد بود. علاوه بر این , توجه کنید که عمل Padding با مقدار
P=1 بر روی توده ورودی اعمال شده که این عمل باعث ۰ شدن مرز های بیرونی
توده ورودی شده است. در تصاویر زیر میبینید که تعداد تکرار عملیات به
اندازه تعداد عناصر موجود در توده خروجی( به رنگ سبز) است در تصویر
مشاهده میکنید که هر عنصر در توده خروجی از ضرب عنصر به عنصر توده وزن
(ماتریس وزن برنگ قرمز ) با توده ورودی (برنگ آبی) و سپس جمع تمامی عناصر
با هم و نهایتا افزودن بایاس به نتیجه نهایی بدست می آید.(Convolution)
بعنوان مثال برای عنصر اول توده خروجی داریم :
( (۰*-۱)+(۰*-۱)+(۰*۰)+(۰*-۱)+(۲*۰)+(۱*-۱)+(۰*-۱)+(۱*۰)+
(۰*۰))+( (۰*۱)+(۰*۱)+(۰*-۱)+(۰*-۱)+(۰*۰)+(۰*۰)+(۰*۰)+(۲*۱)+
(۰*۰))+( (۰*۰)+(۰*-۱)+(۰*۱)+(۰*۱)+(۲*۱)+(۱*۰)+(۰*۱)+(۰*۰)+
(۰*-۱) )+۱=۴