شبکه عصبی مصنوعی چیست؟

انسان‌ها توانایی شناسایی الگوهای موجود در اطلاعات را با دقت بسیار بالایی دارند.

هر زمان که شما یک ماشین یا یک دوچرخه را در خیابان می‌بینید، می‌توانید بلافاصله آنچه را که می‌بینید بشناسید. این به این دلیل است که ما طی یک دوره زمانی آموخته‌ایم که ماشین و دوچرخه چگونه به نظر می‌رسند و ویژگی‌های متمایزکننده آنها چیست. آیا شما وقتی یک دوچرخه را می‌بینید، تصور می‌کنید که یه اسب دیده‌اید؟ جواب مسلماً خیر است.

شبکه‌های عصبی مصنوعی (Artificial Neural Networks – ANN) سیستم‌های محاسباتی هستند که قصد تقلید از قابلیت‌های یادگیری انسانی را از طریق معماری پیچیده‌ای شبیه به سیستم عصبی انسان دارند.

در این پست، ما فقط مختصراً بررسی خواهیم کرد که شبکه‌های عصبی چه هستند، مراحل محاسباتی که شبکه‌های عصبی طی می‌کنند (بدون رفتن به ریاضیات پیچیده پشت سر آن)، و چگونگی اجرای آنها با استفاده از کتابخانه Scikit-Learn که یک کتابخانه هوش مصنوعی (Artificial Intelligence – AI) محبوب برای پایتون است.

سیستم عصبی انسان

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

یک نورون معمولی در سیستم عصبی انسان سه قسمت اصلی دارد: دندریت، هسته، و آکسون.

اطلاعات منتقل شده به نورون توسط دندریت‌ها دریافت می‌شود. هسته مسئول پردازش این اطلاعات است.

خروجی یک نورون از طریق آکسون به سایر نورون‌ها منتقل می‌شود، که به دندریت‌های دیگر نورون‌ها به سمت پایین شبکه متصل می‌شود.

پرسپترون‌ها

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

ساده‌ترین شبکه عصبی شامل تنها یک نورون است و یک پرسپترون نامیده می‌شود، همانطور که در شکل زیر نشان داده شده است:

یک پرسپترون دارای یک لایه ورودی و یک نورون است. لایه ورودی به عنوان دندریت عمل می‌کند و مسئول دریافت ورودی‌ها است.

تعداد گره‌ها در لایه ورودی برابر با تعداد ویژگی‌های موجود در مجموعه داده ورودی است.

هر ورودی در یک ضریب وزنی (که معمولا با مقادیر اولیه تصادفی مقداردهی می‌شود) ضرب می‌شود و نتایج با یکدیگر ترکیب می‌شوند. سپس مجموع (Sum) از طریق یک تابع فعالسازی (Activation function) منتقل می‌شود.

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

شبکه عصبی مصنوعی (پرسپترون چند لایه)

حال که می‌دانیم یک پرسپترون تک لایه چیست، می‌توانیم این بحث را به پرسپترون‌های چند لایه، یا بیشتر که به عنوان شبکه‌های عصبی مصنوعی شناخته می‌شوند، گسترش دهیم.

پرسپترون‌های چند لایه (که به طور معمول با عنوان شبکه‌های عصبی مصنوعی نامیده می‌شوند)، ترکیبی از چندین نورون هستند که به شکل یک شبکه به هم متصل شده‌اند.

یک شبکه عصبی مصنوعی یک لایه ورودی، یک یا چند لایه پنهان و یک لایه خروجی دارد (تصویر زیر):

یک شبکه عصبی در دو مرحله اجرا می‌شود: حرکت رو به جلو (Feed-Forward) و پس انتشار خطا (Back Propagation of Error).

پایه یادگیری در شبکه‌های عصبی تکرار است. یکی از روش‌های بسیار پرکاربرد برای تکرار در شبکه‌های عصبی روش پس انتشار خطا است.

در این روش، در هر دور (تکرار) دو مرحله خواهیم داشت. مرحله اول حرکت رو به جلو است که با ضرب داده‌های ورودی در وزن‌ها و سپس جمع آن با انحراف (بایاس) انجام می‌شود. سرانجام در همان مرحله اول به یک خروجی می‌رسیم که احتمالا با خروجی واقعی تفاوت دارد. اینجاست که توسط تابع ضرر (Loss Function) مشخص می‌کنیم که مرحله Feed-Forward چه مقدار خطایی داشته است.

حال که فهمیدیم الگوریتم با توجه به وزن‌ها و انحراف‌ها چه مقدار خطایی دارد، به مرحله دوم در یک تکرار می‌رویم. در این مرحله می‌توانیم به عقب بازگشته و وزن‌ها و انحراف‌ها را آپدیت کنیم. یعنی وزن‌ها و انحراف‌ها را به شکلی تغییر دهیم تا در تکرار بعدی نتیجه‌ای نزدیک‌تر به خروجی واقعی را تولید کند. این تکرار (feed forward و back propagation) آنقدر انجام می‌شود تا خروجی شبکه برای تمامی داده‌های آموزشی به نزدیک‌ترین مقدار واقعی خود (یعنی مقداری که توسط داده‌های آموزشی در اختیار داریم) برسد.

در واقع پس انتشار خطا (همراه با الگوریتم کاهش گرادیان) کار پیدا کردن وزن‌های بهینه با توجه به مقدار خطای شبکه عصبی را بر عهده دارد و این کار را با بازگشت لایه به لایه از خروجی به سمت ورودی انجام می‌دهد.

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

منبع:

https://stackabuse.com/introduction-to-neural-networks-with-scikit-learn/

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

code