یک شبکه عصبی مصنوعی (Artificial Neural Network یا به اختصار ANN) یا به اختصار شبکه عصبی، مدل محاسباتی (computational model) است که از عملکرد مغز انسان و شبکه نورون های درون مغز انسان استفاده می کند تا بتوانیم داده ها و اطلاعات را پردازش کنیم.

نورون ها و گره ها در شبکه های عصبی

در شباهت و مقایسه با نورون های مغز که وظیفه پردازش پیام های عصبی را دارند، در شبکه های عصبی هر نورون معادل با یک واحد پردازش (Proccess Unit) است که یک سری ورودی را دریافت (لایه ورودی – Input Layer) و سپس یک سری پردازش ها را از طریق عملگرها و رابطه های ریاضی در لایه Hidden Layer انجام می دهد و در نهایت یک سری خروجی (Output Layer) را ایجاد می کند.

بنابراین در یک شبکه عصبی (Neural Network) کوچکترین واحد پردازش یک نورون است که آنرا یک گره (Node) یا واحد (Unit) نیز می نامند. هر گره یک سری ورودی ها را از گره های دیگر  یا از منابع خارجی (External Sources) دریافت می کند. به هر ورودی یک وزن (Weight) انتساب داده می شود. در مفاهیم شبکه های عصبی مصنوعی و یادگیری ماشین (Machine Learning) به این ورودی ها اصطلاحا ویژگی ها (Features) گفته می شود و به خروجی ایجاد شده برچسب (Label) گفته می شود.

مفاهیم و واژگان در یادگیری ماشین

روش های یادگیری ماشین – نظارت شده

روش های یادگیری ماشین – نظارت نشده

الگوریتم های نظارت شده و نظارت نشده

وزن ها و بایاس

در شبکه های عصبی هر اتصال (Connection) دارای یک وزن (Weight) ویژه خودش است که در آغاز به گونه تصادفی برگزیده (انتخاب) می شود. همانطور که در مطلب لایه های شبکه عصبی توضیح داده ایم، ورودی ها در این وزن ها ضرب می شوند. سپس تمامی این حاصل ضرب های ورودی در وزن به تابعی ارسال می شود که آنرا اصطلاحا تابع زیگما ∑ گفته می نامیم.

اگر با مدل رگرسیون خطی (Linear Regression) آشنا باشید، وزن ها در شبکه عصبی، مفهومی همسان به ضریب ها در معادله رگرسیون خطی و ورودی های شبکه نورون نیز، مغهومی همسان با متغیرهای معادله خطی دارند. همچنین مفهوم دیگری به نام بایاس است که این مفهوم در شبکه عصبی، همسان با مفهوم شیب از مبدا در معادله خطی است.

الگوریتم رگرسیون خطی

ایجاد مدل رگرسیون ساده توسط Scikit-Learn

الگوریتم رگرسیون خطی چند متغیره

ایجاد مدل رگرسیون چند متغیره در Scikit Learn

پیش بینی دیابت با رگرسیون خطی و Scikit-Learn

ایجاد مدل رگرسیون لجستیک توسط Scikit-Learn

شناسایی عدد با رگرسیون لجستیک با Scikit-Learn

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

بنابراین با توجه به آن چه که گفتیم، اگر گمان کنیم که نورون دارای 10 ورودی است، پس به چند وزن برای آن نیاز است؟ پاسخ 11 وزن است که 10 وزن برای هر ورودی نورون و یک وزن نیز که همان بایاس است. وزن ها به گونه تصادفی و با مقداری کوچک برای نمونه میان صفر تا 0.3 تعیین می شوند.

تابع فعال سازی

در شکل بالا تابع زیگما ∑ معمولا یک تابع غیر خطی (None Linear Function) است که اصطلاحا آنرا تابع فعال سازی (Activation Function) یا تابع انتقال (Transfer Function) می نامند. تابع فعال سازی برای محدود کردن دامنه خروجی یک نورون استفاده می شود.وظیفه تابع فعال سازی این است که آیا نورون باید فعال (اصطلاحا Fire) شود یا نه؟ در واقع تابع فعال سازی با بررسی مقدار Y و مقایسه آن با مقدار آستانه (Threshold) نورون تصمیم به فعال سازی نورون می گیرد.

هر تابع فعال سازی یک عدد را دریافت می کند و سپس عملیات ریاضی را بر روی آن انجام می دهد تا نهایتا یک عدد بین بازه صفر تا ۱+ یا بین بازه ۱- تا ۱+ را بر می گرداند. بنابراین به بیان ساده می توانیم عملکرد شبکه های عصبی (Neural Network) را محاسبه خروجی تمامی نورون های (گره های) درون شبکه عصبی در نظر بگیریم. توجه کنید که تابع فعال سازی مبتنی بر مفاهیم و عملیات های ریاضی است.

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

تابع فعال سازی در شبکه های عصبی

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

مثال ساده از کاربرد شبکه های عصبی

توجه کنید در مفاهیم شبکه های عصبی و یادگیری ماشین ابتدا یک سری داده های ورودی را داریم که آنها را نمونه (Example) می گوییم و سپس توسط این ورودی ها و داده هایی که بعدا وارد می شوند، می توان نتایج یا خروجی ها را پیش بینی کرد.

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

مثال پیش بینی نمره آزمون بر اساس میزان ساعت مطالعه و میزان ساعت خواب

فرض کنید می خواهیم بر اساس ساعت مطالعه (Hours Study) و ساعت خواب (Hours Sleep)  نمره آزمون (Test Score) را پیش بینی کنیم. شکل زیر داده های نمونه (Example) را نشان می دهد که ورودی ها  شامل میزان ساعت مطالعه و میزان ساعت خوابیدن است. به طور مثال بر اساس نمونه گیری هایی که انجام دادیم اگر فردی ۲ ساعت مطالعه کند و  ۹ساعت خوابیده باشد، از آزمون فردا نمره ۹۲ از ۱۰۰ می گیرد.

در واقع هدف این است که یک سری نمونه داریم و می خواهیم به گونه ای یادگیری (Learning) را انجام دهیم که، بر اساس داده هایی که بعدا وارد می شوند، بتوانیم نمره آزمون یک فرد را پیشگویی کنیم. به طور مثال ماشین باید قادر باشد نمره آزمون را بر اساس ۴ ساعت مطالعه و ۸ ساعت خوابیدن پیشگویی کند.