شبکه عصبی پیچشی:
CNN یا شبکه عصبی پیچشی (Convolutional Neural Network | CNN / ConvNet) یک الگوریتم یادگیری عمیق است که تصویر ورودی را دریافت میکند و به هر یک از اشیاء یا ویژگی های موجود در تصویر براساس میزان اهمیت آن (وزنهای قابل یادگیری و بایاس) تخصیص میدهد و قادر به متمایزسازی آنها از یکدیگر است. در الگوریتم ConvNetدر مقایسه با دیگر الگوریتمهای دستهبندی به پیشپردازش (PreProcessing) کمتری نیاز است. درحالیکه فیلترهای تشخیص با روشهای قبلی بهصورت دستی مهندسی شدهاند در حالی که در شبکه عصبی پیچشی (ConvNets) با آموزش بهاندازه کافی، توانایی فراگیری این فیلترها را وجود دارد.
الزام استفاده از شبکه عصبی کانولوشن چیست؟
دستهبندی تصاویر (image classification) در حقیقت فرایندی است که در آن تعدادی تصویر از ورودی میگیریم و در خروجی، کلاس آنها (سگ، ماشین، خانه و …) یا درصد احتمال تعلق به هر کلاس را مشخص میکنیم. برای ما انسانها، این کار تقریباً جزء بدیهیات است، در حقیقت از زمانی که متولد میشویم تا وقتی که به یک انسان بالغ تبدیل شویم، بهمرور و به شکل طبیعی این کار را بهخوبی فرا میگیریم. به طور دقیقتر، ما هرگاه به محیط پیرامون خود نگاه میکنیم، تمام اشیاء را تشخیص و به هر یک از آنها یک نام (label) اختصاص میدهیم. انجام چنین عملی، یعنی تشخیص و نامگذاری اشیای موجود در یک محیط، برای کامپیوترها کمی بیشتر از انسان ها دشوار است.
ورودی و خروجی در یک شبکه عصبی کانولوشن یا CNN:
وقتی یک کامپیوتر تصویری را بهعنوان ورودی دریافت میکند، آن را بهصورت آرایهای از اعداد میبیند. تعداد آرایهها به سایز تصویر (بر اساس پیکسل) بستگی دارد. برای مثال اگر یک تصویر رنگی با فرمت JPG و اندازه ۴۸۰*۴۸۰ پیکسل را به کامپیوتر ارائه دهیم، آرایه جانشین آن دارای ۴۸۰*۴۸۰*۳ خانه خواهد بود، عدد ۳ به RGB برمیگردد. هرکدام از خانههای نیز عددی بین ۰ تا ۲۵۵ را میگیرند. این عدد شدت پیکسلی را نشان میدهد. این اعداد هرچند برای ما بیمعنی به نظر میرسند، اما در دستهبندی تصاویر با استفاده از شبکه عصبی کانولوشن، تنها ابزار در دست ما، چنین اعدادی هستند. ایده اصلی آن است که به رایانه آرایهای از اعداد شبیه آن چه توضیح دادیم، میدهیم و کامپیوتر نیز در خروجی چنین چیزی را مشخص میکند، این تصویر با احتمال ۸۰ درصد گربه، با احتمال ۱۵ درصد سگ و با احتمال ۵ درصد پرنده است.
شیوه عملکرد شبکه عصبی کانولوشن چیست؟
تا این جای کار با مسئله مدنظر و ورودی و خروجی آشنا شدیم. بیایید به این فکر کنیم که با چه متدی مسئله را حل کنیم. چیزی که ما از کامپیوتر میخواهیم آن است که به تصاویر نگاه کند و ویژگیهای منحصربهفرد یک شیء خاص مثل کتاب را بداند و تشخیص دهد، در تصویر کتاب موجود است یا نه. ما انسانها نیز هنگام تشخیص اشیا، این فرایند را بهصورت ناخودآگاه انجام میدهیم.
ما مثلاً وقتی یک سگ را میبینیم، برای آن که تشخیصش دهیم، ابتدا به اندام جزئیتر آن مانند گوشها، پنجهها، پاها و…توجه میکنیم و ضمن تطبیق با الگوهای موجود در ذهنمان، میفهمیم که در حال دیدن یک سگ هستیم. یک کامپیوتر نیز برای درک و تشخیص تصویرهای پیچیدهای مثل تصویر یک سگ، ابتدا ویژگیهای (feature) سادهتر آن تصویر مانند؛ لبهها و خمها را تشخیص میدهد. در یک شبکه عصبی، لایههای متعددی وجود دارند؛ در هر یک از این لایهها، ویژگیهای خاصی تشخیص داده میشوند و در نهایت، در لایة آخر، تصویر به طور کامل شناسایی میشود. روندی که توضیح دادیم، فرایند کلی نحوه کار یک شبکه عصبی کانولوشن بود.