اولین شبکه عصبی
در این تمرین، اولین شبکه عصبی کوچک خود را آموزش خواهیم داد. شبکههای عصبی راهی برای یادگیری مدلهای غیرخطی بدون استفاده از تلاقیهای مشخصه به ما میدهند.
وظیفه 1: مدلی که داده شد دو ویژگی ورودی ما را در یک نورون واحد ترکیب می کند. آیا این مدل غیرخطیها را یاد میگیرد؟ برای تایید حدس خود آن را اجرا کنید.
وظیفه 2: سعی کنید تعداد نورون های لایه پنهان را از 1 به 2 افزایش دهید و همچنین سعی کنید از یک فعال سازی خطی به یک فعال سازی غیرخطی مانند ReLU تغییر دهید. آیا می توانید مدلی ایجاد کنید که بتواند غیرخطی ها را یاد بگیرد؟ آیا می تواند داده ها را به طور موثر مدل کند؟
وظیفه 3: سعی کنید با استفاده از یک فعال سازی غیرخطی مانند ReLU، تعداد نورون های لایه پنهان را از 2 به 3 افزایش دهید. آیا می تواند داده ها را به طور موثر مدل کند؟ چگونه کیفیت مدل از اجرا به اجرا متفاوت است؟
وظیفه 4: با افزودن یا حذف لایه های پنهان و نورون ها در هر لایه، آزمایش را ادامه دهید. همچنین میتوانید نرخهای یادگیری، منظمسازی و سایر تنظیمات یادگیری را تغییر دهید. کمترین تعداد نورونها و لایههایی که میتوانید استفاده کنید که از دست دادن تست 0.177 یا کمتر است، چقدر است؟
آیا افزایش اندازه مدل تناسب را بهبود می بخشد یا اینکه چقدر سریع همگرا می شود؟ آیا این میزان دفعات همگرایی آن به یک مدل خوب را تغییر می دهد؟ برای مثال، معماری زیر را امتحان کنید:
- اولین لایه پنهان با 3 نورون.
- لایه پنهان دوم با 3 نورون.
- لایه پنهان سوم با 2 نورون.
(پاسخ ها درست در زیر تمرین ظاهر می شوند.)
برای پاسخ به کار 1 روی نماد مثبت کلیک کنید.
Activation روی Linear تنظیم شده است، بنابراین این مدل نمی تواند هیچ گونه غیرخطی را یاد بگیرد. ضرر بسیار زیاد است و ما می گوییم مدل کمتر از داده ها است.
برای پاسخ به Task 2 روی نماد مثبت کلیک کنید.
تابع فعال سازی غیرخطی می تواند مدل های غیر خطی را یاد بگیرد. با این حال، یک لایه مخفی منفرد با 2 نورون نمیتواند همه غیرخطیهای موجود در این مجموعه داده را منعکس کند و حتی بدون نویز تلفات زیادی خواهد داشت: هنوز هم با دادهها کمتر است. این تمرینها غیر قطعی هستند، بنابراین برخی از دویدنها یک مدل مؤثر را یاد نمیگیرند، در حالی که سایر دویدنها کار بسیار خوبی را انجام میدهند. بهترین مدل ممکن است شکل شما را نداشته باشد!
برای پاسخ به وظیفه 3 روی نماد مثبت کلیک کنید.
ماهیت غیر قطعی زمین بازی در این تمرین می درخشد. یک لایه مخفی منفرد با 3 نورون برای مدل سازی مجموعه داده ها کافی است (نویز وجود ندارد)، اما همه اجراها به یک مدل خوب همگرا نمی شوند.
3 نورون کافی است زیرا تابع XOR را می توان به صورت ترکیبی از 3 نیم صفحه بیان کرد (فعال سازی ReLU). شما می توانید این را از نگاه کردن به تصاویر نورون که خروجی تک تک نورون ها را نشان می دهد، مشاهده کنید. در یک مدل خوب با 3 نورون و فعال سازی ReLU، 1 تصویر با یک خط تقریبا عمودی وجود خواهد داشت که X 1 را مثبت (یا منفی، علامت ممکن است تغییر دهد)، 1 تصویر با یک خط تقریبا افقی، تشخیص علامت X 2 ، و 1 تصویر با یک خط مورب، تشخیص تعامل آنها.
با این حال، همه اجراها به یک مدل خوب همگرا نمی شوند. برخی از اجراها بهتر از یک مدل با 2 نورون نیستند، و شما می توانید نورون های تکراری را در این موارد مشاهده کنید.
برای پاسخ به وظیفه 4 روی نماد مثبت کلیک کنید.
یک لایه مخفی منفرد با 3 نورون میتواند دادهها را مدلسازی کند، اما هیچ افزونگی وجود ندارد، بنابراین در بسیاری از اجراها به طور موثر یک نورون را از دست میدهد و یک مدل خوب را نمیآموزد. یک لایه منفرد با بیش از 3 نورون دارای افزونگی بیشتری است، و بنابراین احتمال بیشتری برای همگرایی به یک مدل خوب دارد.
همانطور که دیدیم، یک لایه پنهان تنها با 2 نورون نمی تواند داده ها را به خوبی مدل سازی کند. اگر آن را امتحان کنید، می توانید ببینید که تمام موارد موجود در لایه خروجی فقط می توانند اشکالی باشند که از خطوط آن دو گره تشکیل شده اند. در این مورد، یک شبکه عمیقتر میتواند مجموعه دادهها را بهتر از اولین لایه پنهان به تنهایی مدلسازی کند: تک تک سلولهای عصبی در لایه دوم میتوانند با ترکیب نورونها در لایه اول، اشکال پیچیدهتری مانند ربع سمت راست بالا را مدلسازی کنند. در حالی که اضافه کردن لایه پنهان دوم میتواند مجموعه داده را بهتر از اولین لایه پنهان به تنهایی مدلسازی کند، ممکن است منطقیتر باشد که گرههای بیشتری به لایه اول اضافه کنیم تا خطوط بیشتری بخشی از کیت باشند که لایه دوم شکلهای خود را از آن میسازد. .
با این حال، یک مدل با 1 نورون در اولین لایه پنهان نمی تواند یک مدل خوب را هر چقدر هم که عمیق باشد یاد بگیرد. این به این دلیل است که خروجی لایه اول فقط در امتداد یک بعد (معمولاً یک خط مورب) تغییر می کند، که برای مدل سازی این مجموعه داده به خوبی کافی نیست. لایه های بعدی نمی توانند این را جبران کنند، مهم نیست چقدر پیچیده است. اطلاعات موجود در داده های ورودی به طور غیرقابل جبرانی از بین رفته است.
اگر به جای تلاش برای داشتن یک شبکه کوچک، لایه های زیادی با نورون های زیادی داشته باشیم، برای یک مشکل ساده مانند این، چه؟ خب، همانطور که دیدیم، لایه اول این قابلیت را دارد که تعداد زیادی شیب خطوط مختلف را امتحان کند. و لایه دوم این قابلیت را خواهد داشت که آنها را به اشکال مختلف انباشته کند، با تعداد زیادی اشکال در لایه های بعدی.
با اجازه دادن به مدل برای در نظر گرفتن بسیاری از اشکال مختلف از طریق بسیاری از نورونهای مخفی مختلف، فضای کافی برای مدل ایجاد کردهاید تا به راحتی بر روی نویز مجموعه آموزشی نصب شود و به این اشکال پیچیده اجازه میدهد تا با اشکالات دادههای آموزشی مطابقت داشته باشند. به جای حقیقت زمینی تعمیم یافته. در این مثال، مدل های بزرگتر می توانند مرزهای پیچیده ای برای مطابقت با نقاط داده دقیق داشته باشند. در موارد شدید، یک مدل بزرگ میتواند جزیرهای را در اطراف یک نقطه از نویز یاد بگیرد که به آن به خاطر سپردن دادهها گفته میشود. با اجازه دادن به مدل بسیار بزرگتر، خواهید دید که در واقع اغلب بدتر از مدل ساده تر با نورون های کافی برای حل مشکل عمل می کند.
راه اندازی شبکه عصبی
این تمرین دوباره از دادههای XOR استفاده میکند، اما به تکرارپذیری شبکههای عصبی آموزشی و اهمیت مقداردهی اولیه میپردازد.
وظیفه 1: مدل را چهار یا پنج بار اجرا کنید. قبل از هر آزمایش، دکمه Reset the network را بزنید تا یک مقدار اولیه تصادفی جدید دریافت کنید. (دکمه Reset the network ، فلش دایرهای بازنشانی درست در سمت چپ دکمه Play است.) اجازه دهید هر آزمایش حداقل 500 مرحله اجرا شود تا از همگرایی اطمینان حاصل شود. خروجی هر مدل به چه شکلی همگرا می شود؟ این در مورد نقش مقداردهی اولیه در بهینه سازی غیر محدب چه می گوید؟
وظیفه 2: سعی کنید با افزودن یک لایه و چند گره اضافی، مدل را کمی پیچیده تر کنید. آزمایشات را از کار 1 تکرار کنید. آیا این ثبات اضافی به نتایج اضافه می کند؟
(پاسخ ها درست در زیر تمرین ظاهر می شوند.)
برای پاسخ به کار 1 روی نماد مثبت کلیک کنید.
مدل آموخته شده در هر اجرا اشکال مختلفی داشت. تلفات آزمون همگرا تقریباً 2 برابر از کمترین به بالاترین تغییر کرد.
برای پاسخ به Task 2 روی نماد مثبت کلیک کنید.
افزودن لایه و گره های اضافی نتایج قابل تکرار بیشتری را ایجاد کرد. در هر اجرا، مدل حاصل تقریباً یکسان به نظر می رسید. علاوه بر این، از دست دادن آزمون همگرا واریانس کمتری را بین اجراها نشان داد.
مارپیچ شبکه عصبی
این مجموعه داده یک مارپیچ نویزدار است. بدیهی است که یک مدل خطی در اینجا ناموفق خواهد بود، اما حتی ایجاد تلاقی ویژگی های تعریف شده به صورت دستی ممکن است سخت باشد.
وظیفه 1: بهترین مدلی را که می توانید آموزش دهید، فقط با استفاده از X 1 و X 2 . به راحتی می توانید لایه ها و نورون ها را اضافه یا حذف کنید، تنظیمات یادگیری مانند نرخ یادگیری، نرخ منظم سازی و اندازه دسته ای را تغییر دهید. بهترین ضرر آزمایشی که می توانید دریافت کنید چیست؟ سطح خروجی مدل چقدر صاف است؟
وظیفه 2: حتی با شبکه های عصبی، برای دستیابی به بهترین عملکرد اغلب مقداری از مهندسی ویژگی مورد نیاز است. ویژگیهای محصول متقاطع یا تغییرات دیگری مانند sin (X 1 ) و sin (X 2 ) را اضافه کنید. مدل بهتری سراغ دارید؟ آیا سطح خروجی مدل صاف تر است؟
(پاسخ ها درست در زیر تمرین ظاهر می شوند.)
برای پاسخ های احتمالی روی نماد مثبت کلیک کنید.
ویدئوی زیر نحوه انتخاب هایپرپارامترها در Playground را برای آموزش مدلی برای داده های مارپیچی که از دست دادن تست را به حداقل می رساند، توضیح می دهد.