کانولوشن در مغز

به تصویر زیر نگاه کنید. این یک تصویر سیاه و سفید است اما فقط با چند خط رنگی ما کل آن را رنگی میبینیم!‌ چطور چنین چیزی ممکن است؟

بر اساس نظر Bart Anderson یکی از پژوهشگران حوزه بینایی، نورون های عصبی بخش پردازش رنگی مغز دارای receptive field های بزرگی می باشند و وقتی می خواهند خروجی درست کنند بر روی تکه های بزرگتری از تصویر میانگین میگیرند که باعث می شود در نهایت مغز کل تصویر را رنگی ببینید!

اما receptive field چیست؟ می توانید در ویکی پدیا آن را بخوانید اما آنچه برای ما مهم است کارکرد receptive field‌ است. آن ها ساز و کاری دارند که در ریاضیات به اسم convolution می شناسیم. در شبکه های عصبی هم دقیقا از همین روش استفاده می شود. یعنی ما عملگر convolution را بر ورودی های یک لایه شبکه عصبی اعمال می کنیم. کانولوشن بسیار ساده است. شما یک پنجره (که به آن کرنل هم می گویند) را بر روی ماتریس ورودی در نظر میگیرید (در شکل زیر ناحیه سه در سه زرد رنگ) و هر کدام از مقدار های آن پنجره را بر روی تصویر اصلی ضرب و خروجی را در یک ماتریس دیگر ذخیره می کنید. به طور مثال در اولین مکان یعنی زمانی که پنجره بر روی گوشه سمت چپ بالا هست. ضرب به صورت زیر می شود:

[1,0,1;0,1,0;1,0,1].*[1,1,1;0,1,1;0,0,1]=4

جواب ۴ می شود که اولین خانه ماتریس صورتی سمت راست است. دقت کنید این ضرب ماتریسی نیست بلکه صرفا ضرب نظیر به نظیر و جمع کردن ساده است. سپس پنجره را یک واحد می لغزانید تا دوباره همین کار را بکنید. تصویر زیر این فرآیند را نشان می دهد.

با توجه به نوع ضرایب پنجره اتفاق های مختلفی در خروجی می افتد اما در ساده ترین حالت شما صرفا میانگین پنجره را می گیرید. در مثال چشم این میانگین باعث می شود که پیکسل های همسایه که رنگی ندارند هم رنگ بگیرند و ما کل تصویر را رنگی ببینیم.

در متلب و پایتون می توانید کانولوشن را حساب کنید