بررسی شبکه عصبی کانولوشن (CNN) – بخش اول
در این مقاله قصد داریم به تشریح عناصر شبکه عصبی بپردازیم.
پرسپترون (Perceptron)
پرسپترون یکی از انواع پای و ابتدایی شبکههای عصبی است که قابلیت یادگیری دارد. برای توسعه پرسپترون از رفتار بیولوژیکی نرونها ایده گرفته میشود. یک پرسپترون، همانند یک نرون، یک سیگنال ورودی دریافت میکند. آن سیگنال را پردازش میکند و یک پاسخ را شبیهسازی میکند. یک پرسپترون میتواند برای حل مسئله جداییپذیر تشخیص خطی آموزش داده شود.
نمایش یک پرسپترون
در شکل زیر نحوه عملکرد یک پرسپترون نمایش داده شده است.
بردار ویژگی (Feature Vector)
کارهای یادگیری ماشین (Machine learning) معمولاً برحسب چگونگی پردازش یک نمونه توسط سیستم یادگیری ماشین توصیف میشوند. یک نمونه، مجموعهای از ویژگیهای استخراجشده از اشیا و رویدادهایی است که باید توسط سیستم یادگیری ماشین پردازش شوند. ما معمولاً یک نمونه را به شکل بردار X ∈ Rn نمایش میدهیم، بهطوریکه هر ورودی x_i بردار نمایانگر یک ویژگی باشد.برای مثال، ویژگیهای تصاویر اغلب مقادیر پیکسلهای تصویر هستند.
طبقهبندی (classification)
برنامه کامپیوتری مبتنی بر الگوریتم طبقهبندی تشخیص میدهد که ورودی به کدام K دسته تعلق دارد. در انجام عمل طبقهبندی معمولاً یک الگوریتم یادگیری جهت تولید تابع {f:Rn→{1,….,k وجود دارد. اگر f(x) = y باشد، مدل بردار ورودی x را به کلاس y اختصاص میدهد. نوع دیگری از طبقهبندی نیز وجود دارد که خروجیهای تابع f ، احتمالات اختصاص یک ورودی به چندین کلاس میباشند. تشخیص اشیاء (object recognition) نمونهای از کاربرد طبقهبندی است؛ در تشخیص اشیاء ، ورودی یک تصویر است (معمولاً به شکل مجموعهای از مقادیر روشنایی پیکسل تعریف میشود)، و خروجی شماره شناسایی شده در تصویر است. برای مثال، ربات Willow Garage PR2 میتواند بهعنوان یک پیشخدمت کار کند، نوشیدنیهای مختلف را تشخیص دهد و آنها را به مشتریان تحویل دهد (Goodfellow et al., 2010). تشخیص اشیاء جدید با یادگیری عمیق به بهترین شکل ممکن انجام میشود (Krizhevsky et al., 2012,loffe and Szegedy, 2015). تشخیص اشیا، فناوری اصلی مورداستفاده در تشخیص کامپیوتری چهرهها است (Taigman et al., 2014) که برای برچسبگذاری خودکار افراد استفاده میشود و امکان ارتباط بهتر بین رایانه و کاربران را فراهم میسازد.
ما در این مقاله چگونگی فرآیند آموزش پرسپترون را تشریح میکنیم.
الگوریتم آموزش (Training Algorithm)
الگوریتم یادگیری ماشین، الگوریتمی است که قادر به یادگیری از دادههای موجود است. اما منظور ما از یادگیری چیست؟ میچل (1997) یادگیری را اینطور تعریف کرده است: "یک برنامه کامپیوتری در صورتی از تجربه E با توجه به کلاسهای وظایف T و مقیاس عملکرد P یاد میگیرد که کارایی آن در وظیفه T برحسب مقیاس عملکرد P با استفاده از تجربه E بهبود یابد."
میتوان طیف وسیعی از تجارب E، کارهای T و مقیاس عملکردهای P را تصور کرد ، ما در این مقاله قصد ارائه تعریف رسمی از حالتهای ممکن برای این موجودیتها نداریم. در عوض در بخشهای بعدی توضیحات و نمونههایی از انواع مختلف کارها، مقیاسهای عملکرد و تجارب مختلف مورداستفاده برای ساخت الگوریتمهای یادگیری ماشین ارائهشده است.
آموزش پرسپترون
در شکل زیر، از توابع ریاضی ذکرشده در بالا جهت حصول نتایج موردنظر ما استفادهشده است.
تکرار (Epoch)
یک تکرار (epoch) ، یک گذر کامل از کل مجموعه آموزشی در هنگام آموزش مدل یادگیری ماشین است. در یک تکرار، تمام نمونههای آموزشی یکبار به مدل شما ارائه میشوند. بنابراین، تعداد کل تکرارها در آموزش یک مدل معادل تعداد دورهها در کل مجموعه داده آموزشی است.
آموزش پرسپترون
همانطور که در بخش الگوریتم آموزش توضیح داده شد، هدف ما افزایش عملکرد کارهای T است. در هر تکرار، ما پرسپترون را برای پیشبینی خروجی دلخواه در یک جهت و بهصورت پیشرو (feed-forward) حرکت میدهیم. هنگامیکه خروجیها پیشبینی شده (محاسبه شده) با مقادیر مطلوب سازگار نباشد، وزنهای پرسپترون را تغییر میدهیم. تغییر مقادیر وزنها (w) به معنی افزایش یا کاهش وزنها میباشد. این تغییر همان عملی است که در الگوریتم آموزش برای کمینه کردن خطای کلی تعریفشده است.
هنگام بهینهسازی وزنها در آموزش هر مدل، همیشه خطا وجود دارد. نتیجه تابع خطای آموزش معمولی باید مشابه شکل زیر باشد.
در این مقاله، اصول نظری را بررسی کردیم. در بخش بعدی، کدهای موردنیاز برای پیادهسازی این شبکه عصبی را ارائه خواهیم کرد. همچنین حالا که در این مورد اطلاعاتی را کسب کردید، شاید آموزش های زیر بتواند برای شما مفید باشند:
- آموزش یادگیری عمیق (Deep learning)
- مجموعه آموزش های شبکه های عصبی مصنوعی در متلب
- آموزش شبکههای عصبی مصنوعی
**