شبکه کپسول (مقدمه)

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

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

بیشتر بخوانید: نحوه کسب درآمد از هوش مصنوعی

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

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

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

Max pooling:

عملا امروز کمتر شبکه کانولوشنی میشناسیم که در آن از ایده های pooling استفاده نشود.

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

اثر maxpooling
اثر maxpooling

شاید این سوال پیش بیاید که اگر از این ایده استفاده نکنیم چه اتفاقی رخ خواهد داد ؟ امتحان آن مجانی است اما توصیه میکنیم که برای شبکه کانولوشنی خود آن را امتحان نکنید ! این کار باعث میشود تا فقط قادر به شناسایی تصاویری باشید که بسیار بسیار نزدیک به داده های آموزشی هستند باشید. همچنین زمان آموزش شبکه شما بسیار زیاد تر خواهد شد (در همین تصویر بالا تصور کنید که چه فاجعه ای رخ میدهد وقتی لایه بعدی شما داده هایش دو برابر بشود !)

شاید با خودتان بگویید چه خوب که max pooling قهرمان داستان شبکه عمیق من است ! اما اشتباه نکنید max pooling در عمل باعث میشود تا داده هایی که برای شبکه خود استفاده میکنید از بین برود! ثانیا مشخص نمیکند که ویژگی استخراج شده دقیقا به کدام قسمت از تصویر شما مربوط است ! ثالثا آنچه که اهمیت دارد آن است که شبکه به تصاویر از زاویه دید های مختلف بتواند جواب مناسب بدهد(مثلا تصویر یک ماشین پراید را در نظر بگیرید شبکه باید قادر باشد که پراید را از دید بالا و دید روبرو همچنان درست تشخیص دهد). اما استفاده از max pooling صرفا تضمین کننده این موضوع است که اگر تصویر شما در یک زاویه دید تغییر کند میتواند همچنان پاسخ مناسبی بدهد.

راه حل چیست ؟

راه حل این مشکل استفاده از ایده گرافیک کامپیوتری هست.

همانطور که توضیح دادیم در روش های قدیمی کانولوشنی اگر تصویر از یک زاویه دیگر گرفته شده باشد و شبکه داده آموزش مشابه آن را ندیده باشد قادر به شناسایی نخواهد بود و تنها میتواند در برابر تغییرات تصویر در یک زاویه دید خاص مقاوم باشد. این ویژگی باعث میشود که داده آموزشی بسیار زیادی برای شناسایی اشیاه لازم باشد. اما راه حل برای مقابله با تمام مسائل مطرح شده استفاده از معکوس کرافیگ کامپیوتری هست.

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

شبکه کپسول نت در صدد است تا از این ایده برای شناسایی اشیاه استفاده کند.

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

منبع: hooshio.com

لینک مقاله اصلی

لینک بلاگ آموزشی انگلیسی مربوط به کپسول نت در سایت مدیوم.