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

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

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

تمرین 1

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

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

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

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

افزودن لایه ها به شبکه

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

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

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

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

تمرین 2

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

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

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

این مدل شبکه عصبی چند پارامتر (وزن و بایاس) دارد؟
4
مدل اصلی ما در تمرین 1 چهار پارامتر داشت: w 11 , w 21 , w 31 و b. از آنجایی که این مدل دارای یک لایه پنهان است، پارامترهای بیشتری وجود دارد.
12
توجه داشته باشید که تعداد کل پارامترها شامل پارامترهای مورد استفاده برای محاسبه مقادیر گره در لایه پنهان از مقادیر ورودی و پارامترهای مورد استفاده برای محاسبه مقدار خروجی از مقادیر گره در لایه پنهان است.
16
توجه داشته باشید که تعداد کل پارامترها شامل پارامترهای وزن و پارامترهای بایاس می شود.
21
4 پارامتر برای محاسبه هر یک از 4 مقدار گره در لایه پنهان استفاده می شود - 3 وزن (یکی برای هر مقدار ورودی) و یک بایاس - که مجموع آنها به 16 پارامتر می رسد. سپس از 5 پارامتر برای محاسبه مقدار خروجی استفاده می شود: 4 وزن (یکی برای هر گره در لایه پنهان) و یک بایاس. در مجموع این شبکه عصبی دارای 21 پارامتر است.

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

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

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

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

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