شبکه های عصبی: گره ها و لایه های پنهان

برای ساخت یک شبکه عصبی که غیرخطی بودن‌ها را یاد می‌گیرد، با ساختار مدل آشنای زیر شروع کنید: یک مدل خطی به فرم $y' = b + w_1x_1 + w_2x_2 + w_3x_3$.

می‌توانیم این معادله را مطابق شکل زیر نمایش دهیم، که در آن $x_1$، $x_2$ و $x_3$ سه گره ورودی ما (به رنگ آبی) و $y'$ گره خروجی ما (به رنگ سبز) است.

تمرین ۱

در مدل بالا، مقادیر وزن و بایاس به صورت تصادفی مقداردهی اولیه شده‌اند. برای آشنایی با رابط کاربری و بررسی مدل خطی، کارهای زیر را انجام دهید. فعلاً می‌توانید منوی کشویی Activation Function را نادیده بگیرید؛ بعداً در ماژول در مورد این موضوع بحث خواهیم کرد.

  1. برای محاسبه مقدار گره خروجی برای مقادیر ورودی $x_1 = 1.00$، $x_2 = 2.00$ و $x_3 = 3.00$، روی دکمه پخش (▶️) بالای شبکه کلیک کنید.

  2. روی گره دوم در لایه ورودی کلیک کنید و مقدار را از ۲.۰۰ به ۲.۵۰ افزایش دهید. توجه داشته باشید که مقدار گره خروجی تغییر می‌کند. گره‌های خروجی (به رنگ سبز) را انتخاب کنید و پنل محاسبات را بررسی کنید تا ببینید چگونه مقدار خروجی محاسبه شده است.

  3. برای مشاهده مقادیر پارامترهای وزن ($w_1$، $w_2$، $w_3$) و بایاس ($b$) روی گره خروجی (به رنگ سبز) کلیک کنید. مقدار وزن را برای $w_3$ کاهش دهید (باز هم توجه داشته باشید که مقدار گره خروجی و محاسبات زیر تغییر کرده است). سپس، مقدار بایاس را افزایش دهید. بررسی کنید که چگونه این تغییرات بر خروجی مدل تأثیر گذاشته‌اند.

اضافه کردن لایه‌ها به شبکه

توجه داشته باشید که وقتی مقادیر وزن و بایاس شبکه را در تمرین ۱ تنظیم کردید، رابطه ریاضی کلی بین ورودی و خروجی تغییر نکرد. مدل ما هنوز یک مدل خطی است.

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

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

این لایه پنهان جدید به مدل ما اجازه می‌دهد تا داده‌های ورودی را با استفاده از مجموعه‌ای دیگر از پارامترها دوباره ترکیب کند. آیا این می‌تواند به مدل ما در یادگیری روابط غیرخطی کمک کند؟

تمرین ۲

ما یک لایه پنهان شامل چهار نورون به مدل اضافه کرده‌ایم.

برای محاسبه‌ی مقدار چهار گره‌ی لایه‌ی پنهان و گره‌ی خروجی برای مقادیر ورودی $x_1 = 1.00$، $x_2 = 2.00$ و $x_3 = 3.00$، روی دکمه‌ی پخش (▶️) در بالای شبکه کلیک کنید.

سپس مدل را بررسی کنید و از آن برای پاسخ به سوالات زیر استفاده کنید.

این مدل شبکه عصبی چند پارامتر (وزن و بایاس) دارد؟
۴
مدل اصلی ما در تمرین ۱ چهار پارامتر داشت: w11 ، w21 ، w31 و b. از آنجا که این مدل شامل یک لایه پنهان است، پارامترهای بیشتری وجود دارد.
۱۲
توجه داشته باشید که تعداد کل پارامترها شامل پارامترهایی است که برای محاسبه مقادیر گره در لایه پنهان از مقادیر ورودی استفاده می‌شوند و همچنین پارامترهایی که برای محاسبه مقدار خروجی از مقادیر گره در لایه پنهان استفاده می‌شوند.
۱۶
توجه داشته باشید که تعداد کل پارامترها شامل پارامترهای وزنی و پارامترهای بایاس می‌شود.
۲۱
برای محاسبه هر یک از ۴ مقدار گره در لایه پنهان، ۴ پارامتر استفاده می‌شود - ۳ وزن (یکی برای هر مقدار ورودی) و یک بایاس - که مجموعاً ۱۶ پارامتر می‌شود. سپس ۵ پارامتر برای محاسبه مقدار خروجی استفاده می‌شود: ۴ وزن (یکی برای هر گره در لایه پنهان) و یک بایاس. در مجموع، این شبکه عصبی ۲۱ پارامتر دارد.

سعی کنید پارامترهای مدل را تغییر دهید و تأثیر آن را بر مقادیر گره لایه پنهان و مقدار خروجی مشاهده کنید (می‌توانید پنل محاسبات زیر را مرور کنید تا ببینید چگونه این مقادیر محاسبه شده‌اند).

آیا این مدل می‌تواند غیرخطی‌ها را یاد بگیرد؟

بله
روی هر یک از گره‌های لایه پنهان و گره خروجی کلیک کنید و محاسبات زیر را مرور کنید. در مورد همه این محاسبات چه چیزی متوجه می‌شوید؟
خیر

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

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