برای ساخت یک شبکه عصبی که غیرخطی بودنها را یاد میگیرد، با ساختار مدل آشنای زیر شروع کنید: یک مدل خطی به فرم $y' = b + w_1x_1 + w_2x_2 + w_3x_3$.
میتوانیم این معادله را مطابق شکل زیر نمایش دهیم، که در آن $x_1$، $x_2$ و $x_3$ سه گره ورودی ما (به رنگ آبی) و $y'$ گره خروجی ما (به رنگ سبز) است.
تمرین ۱
در مدل بالا، مقادیر وزن و بایاس به صورت تصادفی مقداردهی اولیه شدهاند. برای آشنایی با رابط کاربری و بررسی مدل خطی، کارهای زیر را انجام دهید. فعلاً میتوانید منوی کشویی Activation Function را نادیده بگیرید؛ بعداً در ماژول در مورد این موضوع بحث خواهیم کرد.
برای محاسبه مقدار گره خروجی برای مقادیر ورودی $x_1 = 1.00$، $x_2 = 2.00$ و $x_3 = 3.00$، روی دکمه پخش (▶️) بالای شبکه کلیک کنید.
روی گره دوم در لایه ورودی کلیک کنید و مقدار را از ۲.۰۰ به ۲.۵۰ افزایش دهید. توجه داشته باشید که مقدار گره خروجی تغییر میکند. گرههای خروجی (به رنگ سبز) را انتخاب کنید و پنل محاسبات را بررسی کنید تا ببینید چگونه مقدار خروجی محاسبه شده است.
برای مشاهده مقادیر پارامترهای وزن ($w_1$، $w_2$، $w_3$) و بایاس ($b$) روی گره خروجی (به رنگ سبز) کلیک کنید. مقدار وزن را برای $w_3$ کاهش دهید (باز هم توجه داشته باشید که مقدار گره خروجی و محاسبات زیر تغییر کرده است). سپس، مقدار بایاس را افزایش دهید. بررسی کنید که چگونه این تغییرات بر خروجی مدل تأثیر گذاشتهاند.
اضافه کردن لایهها به شبکه
توجه داشته باشید که وقتی مقادیر وزن و بایاس شبکه را در تمرین ۱ تنظیم کردید، رابطه ریاضی کلی بین ورودی و خروجی تغییر نکرد. مدل ما هنوز یک مدل خطی است.
اما اگر یک لایه دیگر بین لایه ورودی و لایه خروجی به شبکه اضافه کنیم چه میشود؟ در اصطلاحات شبکه عصبی، لایههای اضافی بین لایه ورودی و لایه خروجی، لایههای پنهان نامیده میشوند و گرههای موجود در این لایهها، نورون نامیده میشوند.
مقدار هر نورون در لایه پنهان به همان روش خروجی یک مدل خطی محاسبه میشود: مجموع حاصلضرب هر یک از ورودیهای آن (نورونهای لایه شبکه قبلی) و یک پارامتر وزن منحصر به فرد، به علاوه بایاس را در نظر بگیرید. به طور مشابه، نورونهای لایه بعدی (در اینجا، لایه خروجی) با استفاده از مقادیر نورونهای لایه پنهان به عنوان ورودی محاسبه میشوند.
این لایه پنهان جدید به مدل ما اجازه میدهد تا دادههای ورودی را با استفاده از مجموعهای دیگر از پارامترها دوباره ترکیب کند. آیا این میتواند به مدل ما در یادگیری روابط غیرخطی کمک کند؟
تمرین ۲
ما یک لایه پنهان شامل چهار نورون به مدل اضافه کردهایم.
برای محاسبهی مقدار چهار گرهی لایهی پنهان و گرهی خروجی برای مقادیر ورودی $x_1 = 1.00$، $x_2 = 2.00$ و $x_3 = 3.00$، روی دکمهی پخش (▶️) در بالای شبکه کلیک کنید.
سپس مدل را بررسی کنید و از آن برای پاسخ به سوالات زیر استفاده کنید.
سعی کنید پارامترهای مدل را تغییر دهید و تأثیر آن را بر مقادیر گره لایه پنهان و مقدار خروجی مشاهده کنید (میتوانید پنل محاسبات زیر را مرور کنید تا ببینید چگونه این مقادیر محاسبه شدهاند).
آیا این مدل میتواند غیرخطیها را یاد بگیرد؟
اگر روی هر یک از گرههای لایه پنهان کلیک کنید و محاسبات زیر را مرور کنید، خواهید دید که همه آنها خطی هستند (شامل عملیات ضرب و جمع).
اگر سپس روی گره خروجی کلیک کنید و محاسبه زیر را مرور کنید، خواهید دید که این محاسبه نیز خطی است. محاسبات خطی انجام شده روی خروجی محاسبات خطی نیز خطی هستند، به این معنی که این مدل نمیتواند غیرخطی بودنها را یاد بگیرد.