شبکه های عصبی: تمرین های تعاملی

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

تمرین 1

ویجت زیر یک شبکه عصبی را با پیکربندی زیر راه اندازی می کند:

  • لایه ورودی با 3 نورون حاوی مقادیر 0.00 ، 0.00 و 0.00
  • لایه پنهان با 4 نورون
  • لایه خروجی با 1 نورون
  • تابع فعال سازی ReLU برای تمام گره های لایه پنهان و گره خروجی اعمال می شود

تنظیمات اولیه شبکه را مرور کنید (توجه: هنوز روی دکمه های ▶️ یا >| کلیک نکنید )، و سپس کارهای زیر ویجت را کامل کنید.

وظیفه 1

مقادیر سه ویژگی ورودی به مدل شبکه عصبی همه 0.00 است. روی هر یک از گره های شبکه کلیک کنید تا تمام مقادیر اولیه را ببینید. قبل از زدن دکمه Play ( ▶️ ) به این سوال پاسخ دهید:

به نظر شما چه نوع مقدار خروجی تولید خواهد شد: مثبت، منفی یا 0؟
مقدار خروجی مثبت
مقدار خروجی منفی
مقدار خروجی 0

اکنون روی دکمه Play (▶️) در بالای شبکه کلیک کنید و تمام مقادیر لایه پنهان و گره خروجی را تماشا کنید. پاسخ شما در بالا درست بود؟

برای توضیح اینجا را کلیک کنید

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

y = ReLU(w 11 * 0.00 + w 21 * 0.00 + w 31 * 0.00 + b)

y = ReLU(b)

بنابراین مقدار هر گره لایه پنهان برابر با مقدار ReLU بایاس (b) خواهد بود که اگر b منفی باشد 0 و اگر b 0 یا مثبت باشد، خود b خواهد بود.

سپس مقدار گره خروجی به صورت زیر محاسبه می شود:

y = ReLU(w 11 * x 11 + w 21 * x 21 + w 31 * x 31 + w 41 * x 41 + b)

وظیفه 2

قبل از اصلاح شبکه عصبی به سوال زیر پاسخ دهید:

اگر بعد از اولین لایه پنهان، یک لایه مخفی دیگر به شبکه عصبی اضافه کنید و به این لایه جدید 3 گره بدهید و تمام پارامترهای ورودی و وزن/بایاس را ثابت نگه دارید، محاسبات کدام گره های دیگر تحت تأثیر قرار می گیرد؟
تمام گره های شبکه، به جز گره های ورودی
فقط گره ها در اولین لایه پنهان
فقط گره خروجی

اکنون شبکه عصبی را تغییر دهید تا یک لایه پنهان جدید با 3 گره به صورت زیر اضافه شود:

  1. روی دکمه + در سمت چپ لایه مخفی متن 1 کلیک کنید تا یک لایه مخفی جدید قبل از لایه خروجی اضافه کنید.
  2. روی دکمه + بالای لایه جدید مخفی دو بار کلیک کنید تا 2 گره دیگر به لایه اضافه شود.

پاسخ شما در بالا درست بود؟

برای توضیح اینجا را کلیک کنید

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

وظیفه 3

روی گره دوم (از بالا) در اولین لایه پنهان گراف شبکه کلیک کنید. قبل از هر گونه تغییر در پیکربندی شبکه، به سوال زیر پاسخ دهید:

اگر مقدار وزن w 12 را تغییر دهید (در زیر اولین گره ورودی، x 1 نمایش داده می شود)، محاسبات کدام گره های دیگر می تواند برای برخی از مقادیر ورودی تحت تأثیر قرار گیرد؟
هیچ کدام
گره دوم در اولین لایه پنهان، تمام گره ها در لایه پنهان دوم و گره خروجی.
تمام گره های اولین لایه پنهان، لایه پنهان دوم و لایه خروجی.

اکنون، در قسمت متن وزن w 12 (در زیر اولین گره ورودی، x 1 نمایش داده می شود) کلیک کنید، مقدار آن را به 5.00 تغییر دهید و Enter را بزنید. به روز رسانی های نمودار را مشاهده کنید.

پاسخ شما درست بود؟ هنگام تأیید پاسخ خود مراقب باشید: اگر مقدار گره تغییر نکند، آیا این بدان معناست که محاسبه اساسی تغییر نکرده است؟

برای توضیح اینجا را کلیک کنید

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

آیا فکر می‌کنید پاسخ «هیچ‌کدام» است زیرا با تغییر مقدار وزن، هیچ یک از مقادیر گره در شبکه تغییر نمی‌کند؟ توجه داشته باشید که یک محاسبه اساسی برای یک گره ممکن است بدون تغییر مقدار گره تغییر کند (به عنوان مثال، ReLU(0) و ReLU(-5) هر دو خروجی 0 تولید می کنند). تنها با نگاه کردن به مقادیر گره، در مورد اینکه چگونه شبکه تحت تأثیر قرار گرفته است، فرضیاتی را مطرح نکنید. حتما محاسبات را نیز بررسی کنید.

تمرین 2

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

وظیفه شما: یک شبکه عصبی را پیکربندی کنید که بتواند نقاط نارنجی را از نقاط آبی در نمودار زیر جدا کند و در داده های آموزشی و آزمایشی کمتر از 0.2 از دست بدهد.

دستورالعمل:

در ویجت تعاملی زیر:

  1. با آزمایش برخی از تنظیمات پیکربندی زیر، فراپارامترهای شبکه عصبی را تغییر دهید:
    • با کلیک بر روی دکمه های + و - در سمت چپ عنوان لایه های پنهان در نمودار شبکه، لایه های پنهان را اضافه یا حذف کنید.
    • با کلیک بر روی دکمه های + و - بالای ستون لایه پنهان، نورون ها را از یک لایه پنهان اضافه یا حذف کنید.
    • نرخ یادگیری را با انتخاب یک مقدار جدید از کشویی نرخ یادگیری در بالای نمودار تغییر دهید.
    • تابع فعال سازی را با انتخاب یک مقدار جدید از منوی کشویی Activation در بالای نمودار تغییر دهید.
  2. برای آموزش مدل شبکه عصبی با استفاده از پارامترهای مشخص شده، روی دکمه Play (▶️) در بالای نمودار کلیک کنید.
  3. مشاهده تجسم مدل برازش داده‌ها در حین پیشرفت آموزش و همچنین مقادیر Test loss و Training loss در بخش Output .
  4. اگر مدل در داده‌های آزمایشی و آموزشی به ضرر کمتر از 0.2 نرسید، روی تنظیم مجدد کلیک کنید و مراحل 1 تا 3 را با مجموعه‌ای از تنظیمات پیکربندی متفاوت تکرار کنید. این روند را تا رسیدن به نتایج مطلوب تکرار کنید.

برای راه حل ما اینجا را کلیک کنید

ما توانستیم به ضرر تست و تمرین زیر 0.2 برسیم:

  • افزودن 1 لایه پنهان حاوی 3 نورون.
  • انتخاب نرخ یادگیری 0.01.
  • انتخاب یک تابع فعال سازی ReLU.