در تمرینهای تعاملی زیر، شما بیشتر با سازوکار درونی شبکههای عصبی آشنا خواهید شد. ابتدا، خواهید دید که چگونه تغییرات پارامتر و ابرپارامتر بر پیشبینیهای شبکه تأثیر میگذارند. سپس از آموختههای خود برای آموزش یک شبکه عصبی جهت برازش دادههای غیرخطی استفاده خواهید کرد.
تمرین ۱
ویجت زیر یک شبکه عصبی با پیکربندی زیر راهاندازی میکند:
- لایه ورودی با ۳ نورون حاوی مقادیر
0.00 ، 0.00 و 0.00 - لایه پنهان با ۴ نورون
- لایه خروجی با ۱ نورون
- تابع فعالسازی ReLU که برای تمام گرههای لایه پنهان و گره خروجی اعمال میشود
تنظیمات اولیه شبکه را مرور کنید (توجه: هنوز روی دکمههای ▶️ یا >| کلیک نکنید ) و سپس وظایف زیر ویجت را انجام دهید.
وظیفه ۱
مقادیر سه ویژگی ورودی به مدل شبکه عصبی همگی 0.00 هستند. برای مشاهده تمام مقادیر اولیه، روی هر یک از گرههای شبکه کلیک کنید. قبل از زدن دکمه پخش ( ▶️ )، به این سوال پاسخ دهید:
به نظر شما چه نوع مقدار خروجی تولید خواهد شد: مثبت، منفی یا 0؟
مقدار خروجی مثبت
شما مقدار خروجی مثبت را انتخاب کردید. دستورالعملهای زیر را برای انجام استنتاج روی دادههای ورودی دنبال کنید و ببینید آیا درست حدس زدهاید یا خیر.
مقدار خروجی منفی
شما مقدار خروجی منفی را انتخاب کردید. دستورالعملهای زیر را برای انجام استنتاج روی دادههای ورودی دنبال کنید و ببینید آیا درست حدس زدهاید یا خیر.
مقدار خروجی ۰
شما مقدار خروجی ۰ را انتخاب کردید. دستورالعملهای زیر را برای انجام استنتاج روی دادههای ورودی و بررسی صحت حدس خود دنبال کنید.
حالا روی دکمهی پخش (▶️) بالای شبکه کلیک کنید و مشاهده کنید که تمام مقادیر لایهی پنهان و گرهی خروجی نمایش داده میشوند. آیا پاسخ شما در بالا درست بود؟
برای توضیح اینجا کلیک کنید
مقدار دقیق خروجی که دریافت میکنید، بسته به نحوه مقداردهی اولیه تصادفی پارامترهای وزن و بایاس متفاوت خواهد بود. با این حال، از آنجایی که هر نورون در لایه ورودی مقدار ۰ دارد، وزنهای مورد استفاده برای محاسبه مقادیر گرههای لایه پنهان، همگی صفر میشوند. به عنوان مثال، اولین محاسبه گره لایه پنهان به صورت زیر خواهد بود:
y = ReLU(w 11 * 0.00 + w 21 * 0.00 + w 31 * 0.00 + b)
y = ReLU(b)
بنابراین مقدار هر گره لایه پنهان برابر با مقدار ReLU بایاس (b) خواهد بود که اگر b منفی باشد، برابر با 0 و اگر b صفر یا مثبت باشد، خود b خواهد بود.
سپس مقدار گره خروجی به صورت زیر محاسبه میشود:
y = ReLU(w 11 * x 11 + w 21 * x 21 + w 31 * x 31 + w 41 * x 41 + b)
وظیفه ۲
قبل از اصلاح شبکه عصبی، به سوال زیر پاسخ دهید:
اگر بعد از لایه پنهان اول، یک لایه پنهان دیگر به شبکه عصبی اضافه کنید و به این لایه جدید ۳ گره بدهید و تمام پارامترهای ورودی و وزن/بایاس را یکسان نگه دارید، محاسبات کدام گرههای دیگر تحت تأثیر قرار خواهد گرفت؟
تمام گرههای شبکه، به جز گرههای ورودی
شما تمام گرههای شبکه، به جز گرههای ورودی، را انتخاب کردهاید. دستورالعملهای زیر را برای بهروزرسانی شبکه عصبی دنبال کنید و ببینید آیا درست حدس زدهاید یا خیر.
فقط گرههای موجود در اولین لایه پنهان
شما فقط گرههای لایه پنهان اول را انتخاب کردید. دستورالعملهای زیر را برای بهروزرسانی شبکه عصبی دنبال کنید و ببینید آیا درست حدس زدهاید یا خیر.
فقط گره خروجی
شما فقط گره خروجی را انتخاب کردید. دستورالعملهای زیر را برای بهروزرسانی شبکه عصبی دنبال کنید و ببینید آیا درست حدس زدهاید یا خیر.
اکنون شبکه عصبی را اصلاح کنید تا یک لایه پنهان جدید با ۳ گره به صورت زیر اضافه شود:
- برای اضافه کردن یک لایه پنهان جدید قبل از لایه خروجی، روی دکمه + در سمت چپ لایه پنهان متن ۱ کلیک کنید.
- برای اضافه کردن دو گره دیگر به لایه، روی دکمه + بالای لایه پنهان جدید دو بار کلیک کنید.
آیا پاسخ بالا درست بود؟
برای توضیح اینجا کلیک کنید
فقط گره خروجی تغییر میکند. از آنجا که استنتاج برای این شبکه عصبی "پیشخور" است (محاسبات از ابتدا تا انتها پیشرفت میکنند)، اضافه شدن یک لایه جدید به شبکه فقط گرههای بعد از لایه جدید را تحت تأثیر قرار میدهد، نه گرههای قبل از آن را.
وظیفه ۳
روی گره دوم (از بالا) در اولین لایه پنهان نمودار شبکه کلیک کنید. قبل از ایجاد هرگونه تغییر در پیکربندی شبکه، به سوال زیر پاسخ دهید:
اگر مقدار وزن w12 (که در زیر اولین گره ورودی، x1، نمایش داده میشود) را تغییر دهید، محاسبات کدام گرههای دیگر میتواند برای برخی از مقادیر ورودی تحت تأثیر قرار گیرد؟
هیچکدام
شما هیچ کدام را انتخاب نکردید. دستورالعملهای زیر را برای بهروزرسانی شبکه عصبی دنبال کنید و ببینید آیا درست حدس زدهاید یا خیر.
گره دوم در لایه پنهان اول، تمام گرههای لایه پنهان دوم و گره خروجی.
شما گره دوم در لایه پنهان اول، تمام گرههای لایه پنهان دوم و گره خروجی را انتخاب کردید. دستورالعملهای زیر را برای بهروزرسانی شبکه عصبی دنبال کنید و ببینید آیا درست حدس زدهاید یا خیر.
تمام گرههای موجود در لایه پنهان اول، لایه پنهان دوم و لایه خروجی.
شما تمام گرههای لایه پنهان اول، لایه پنهان دوم و لایه خروجی را انتخاب کردید. دستورالعملهای زیر را برای بهروزرسانی شبکه عصبی دنبال کنید و ببینید آیا درست حدس زدهاید یا خیر.
حالا، در فیلد متنی مربوط به وزن w 12 (که در زیر اولین گره ورودی، x 1 ، نمایش داده شده است) کلیک کنید، مقدار آن را به 5.00 تغییر دهید و Enter را بزنید. بهروزرسانیهای نمودار را مشاهده کنید.
آیا پاسخ شما درست بود؟ هنگام تأیید پاسخ خود مراقب باشید: اگر مقدار یک گره تغییر نکند، آیا این بدان معناست که محاسبه زیربنایی آن نیز تغییر نکرده است؟
برای توضیح اینجا کلیک کنید
تنها گرهای که در لایه پنهان اول تحت تأثیر قرار میگیرد، گره دوم (همان گرهای که روی آن کلیک کردهاید) است. محاسبات مقدار برای سایر گرهها در لایه پنهان اول شامل w12 به عنوان پارامتر نیستند، بنابراین تحت تأثیر قرار نمیگیرند. همه گرهها در لایه پنهان دوم تحت تأثیر قرار میگیرند، زیرا محاسبات آنها به مقدار گره دوم در لایه پنهان اول بستگی دارد. به طور مشابه، مقدار گره خروجی نیز تحت تأثیر قرار میگیرد زیرا محاسبات آن به مقادیر گرهها در لایه پنهان دوم بستگی دارد.
آیا فکر کردید که پاسخ «هیچ» است، زیرا هیچ یک از مقادیر گره در شبکه هنگام تغییر مقدار وزن تغییر نکردند؟ توجه داشته باشید که یک محاسبه اساسی برای یک گره ممکن است بدون تغییر مقدار گره تغییر کند (مثلاً ReLU(0) و ReLU(-5) هر دو خروجی 0 تولید میکنند). فقط با نگاه کردن به مقادیر گرهها، در مورد چگونگی تأثیر شبکه فرضیهسازی نکنید؛ حتماً محاسبات را نیز مرور کنید.
تمرین ۲
در تمرینهای مربوط به «تطبیق ویژگیها» در ماژول دادههای دستهبندیشده ، شما به صورت دستی تقاطع ویژگیها را برای برازش دادههای غیرخطی ایجاد کردید. اکنون، خواهید دید که آیا میتوانید یک شبکه عصبی بسازید که بتواند به طور خودکار یاد بگیرد که چگونه دادههای غیرخطی را در طول آموزش برازش دهد یا خیر.
وظیفه شما: یک شبکه عصبی پیکربندی کنید که بتواند نقاط نارنجی را از نقاط آبی در نمودار زیر جدا کند و به میزان خطای کمتر از 0.2 در هر دو داده آموزشی و آزمایشی دست یابد.
دستورالعملها:
در ویجت تعاملی زیر:
- با آزمایش برخی از تنظیمات پیکربندی زیر، ابرپارامترهای شبکه عصبی را تغییر دهید:
- با کلیک روی دکمههای + و - در سمت چپ عنوان HIDDEN LAYERS در نمودار شبکه، لایههای پنهان را اضافه یا حذف کنید.
- با کلیک روی دکمههای + و - بالای ستون لایه پنهان، نورونها را از یک لایه پنهان اضافه یا حذف کنید.
- با انتخاب یک مقدار جدید از منوی کشویی Learning rate در بالای نمودار، نرخ یادگیری را تغییر دهید.
- با انتخاب یک مقدار جدید از منوی کشویی Activation در بالای نمودار، تابع فعالسازی را تغییر دهید.
- برای آموزش مدل شبکه عصبی با استفاده از پارامترهای مشخص شده، روی دکمه پخش (▶️) بالای نمودار کلیک کنید.
- تجسم مدل برازش داده را با پیشرفت آموزش، و همچنین مقادیر تلفات تست و تلفات آموزش را در بخش خروجی مشاهده کنید.
- اگر مدل در دادههای تست و آموزش به میزان زیان کمتر از ۰.۲ دست نیافت، روی تنظیم مجدد کلیک کنید و مراحل ۱ تا ۳ را با مجموعهای متفاوت از تنظیمات پیکربندی تکرار کنید. این فرآیند را تا زمانی که به نتایج دلخواه برسید، تکرار کنید.
برای راهکار ما اینجا کلیک کنید
ما توانستیم با روشهای زیر به زیان کمتر از 0.2 در هر دو روش تست و آموزش دست یابیم:
- اضافه کردن ۱ لایه پنهان حاوی ۳ نورون.
- انتخاب نرخ یادگیری ۰.۰۱.
- انتخاب یک تابع فعالسازی ReLU.