רשת נוירונים ראשונה
בתרגיל הזה, נאמן את רשת הנוירונים הקטנה שלנו.
רשתות נוירונים מאפשרות לנו ללמוד מודלים לא לינאריים ללא שימוש בצטלבות של תכונות בוטות.
משימה 1: המודל מוגדר כפי שמשלב את שתי תכונות הקלט שלנו לנוירון אחד. האם המודל הזה ילמד על לינאריות? אתם יכולים להריץ אותו כדי לוודא.
משימה 2: נסו להגדיל את מספר הנוירונים בשכבה המוסתרת מ-1 ל-2. נסו גם לעבור מהפעלה לינארית להפעלה לא לינארית, כמו ReLU. האם אתם יכולים ליצור מודל ללמידה של נתונים שאינם לינאריים? האם היא יכולה ליצור מודל
אפקטיבי לנתונים?
משימה 3: נסו להגדיל את מספר הנוירונים בשכבה המוסתרת מ-2 ל-3, באמצעות הפעלה לא לינארית כמו ReLU. האם המודל יכול
לפעול בצורה יעילה? איך איכות המודל משתנה מריצה לריצה?
משימה 4: אתם יכולים להמשיך לערוך ניסויים על ידי הוספה או הסרה של שכבות מוסתרות ונוירונים לכל שכבה. בנוסף, אתם יכולים לשנות את שיעורי הלמידה, את הסידורים והגדרות למידה אחרות. מהו המספר הקטן ביותר של נוירונים ושכבות שניתן להשתמש בהן כדי לאבד את הבדיקה 0.177 או פחות?
האם הגדלת המודל מגדילה את ההתאמה, או במהירות שבה הוא מתמזג?
האם זה משנה את התדירות שבה הוא מתחבר למודל טוב? לדוגמה, נסו את הארכיטקטורה הבאה:
- השכבה המוסתרת הראשונה עם 3 נוירונים.
- שכבה שנייה מוסתרת עם 3 נוירונים.
- שכבה שלישית מוסתרת עם 2 נוירונים.
(התשובות מופיעות מתחת לפעילות הגופנית).
אפשר ללחוץ על סמל הפלוס כדי לענות למשימה 1.
ההפעלה מוגדרת ללינארית, כך שהמודל לא יכול ללמוד אין לינאריות. האובדן הזה גבוה מאוד, ואנחנו אומרים שהמודל לא מתאים לנתונים.
אפשר ללחוץ על סמל הפלוס כדי לענות למשימה 2.
פונקציית ההפעלה הלא-לינארית יכולה ללמוד מודלים לא לינאריים. עם זאת, שכבה מוסתרת אחת עם 2 נוירונים לא יכולה לשקף את כל הא-לינאריות במערך הנתונים הזה, ואובדן גבוה יהיה גם ללא רעש: הוא עדיין לא מתאים לנתונים. תרגילים אלה אינם ברורים, ולכן ריצה מסוימת לא תלמד מודל אפקטיבי. לעומת זאת, ריצות אחרות יעשו עבודה טובה.
ייתכן שלמודל הטוב ביותר אין את הצורה שציפית לה!
אפשר ללחוץ על סמל הפלוס כדי לענות למשימה 3.
הגן של מגרש המשחקים של ארה"ב מציג את התרגיל הזה. כדי ליצור מודלים של נתונים (חסרים רעשים) מספיק שכבה אחת עם 3 נוירונים, אבל לא כל הריצות יתגלו למודל טוב.
3 נוירונים מספיקים כי פונקציית XOR יכולה לנבוע משילוב של 3 מטוסים (הפעלה של ReLU). ניתן לראות זאת על ידי עיון בתמונות הנוירונים, שמראה את הפלט של נוירונים בודדים. במודל טוב עם 3 נוירונים והפעלה של ReLU, תמונה אחת עם קו כמעט אנכי ותזהה את ה-X1 חיובי (או שלילי; ייתכן שהסמל הוחלף), תמונה אחת עם קו אופקי כמעט, זיהוי הסימן X2 ותמונה אחת עם קו אלכסוני ומזהה את האינטראקציה שלהם.
עם זאת, לא כל הריצות יתקדמו למודל טוב. במקרים מסוימים, הריצה לא תהיה טובה יותר מהדגם עם שני נוירונים, וניתן לראות נוירונים כפולים במקרים האלו.
אפשר ללחוץ על סמל הפלוס כדי לענות למשימה 4.
כדי ליצור מודלים של שכבות נסתרת אחת עם 3 נוירונים, לא ניתן ליצור יתירות. לכן, בהפעלות רבות היא עלולה לאבד נוירון ביעילות ולא ללמוד מודל טוב. שכבה אחת עם יותר מ-3 נוירונים מכילה יותר יתירות, ויש סיכוי גבוה יותר שהיא תתמקד במודל טוב.
כפי שראינו, שכבה אחת נסתרת עם שני נוירונים בלבד לא יכולה ליצור מודל מתאים של הנתונים. אם תנסו, תוכלו לראות שכל הפריטים בשכבת הפלט יכולים להיות רק צורות המורכבות מהקווים משני הצמתים האלה. במקרה כזה, רשת עמוקה יותר יכולה ליצור מודל של קבוצת הנתונים בצורה טובה יותר מהשכבה המוסתרת הראשונה בלבד: נוירונים נפרדים בשכבה השנייה יכולים ליצור מודלים מורכבים יותר, כמו הדובר שבפינה הימנית העליונה, על ידי שילוב נוירונים בשכבה הראשונה. אפשר להוסיף את השכבה המוסתרת הזו כדי ליצור מודל נתונים טוב יותר מהשכבה הראשונה המוסתרת בלבד, אבל הגיוני יותר להוסיף עוד צמתים לשכבה הראשונה כדי שקווים רבים יותר יהיו חלק מהמערך שממנו בנויה הצורה השנייה.
עם זאת, מודל עם נוירון אחד בשכבה המוסתרת הראשונה לא יוכל ללמוד מודל טוב, ללא קשר למידת העומק שלו. הסיבה לכך היא שהפלט של השכבה הראשונה משתנה רק לאורך מאפיין אחד (בדרך כלל קו אלכסוני), כלומר אין מספיק מודל למודל נתונים זה. שכבות נוספות אינן יכולות לפצות על כך, ואין לכך חשיבות. המידע בנתוני הקלט אבד באופן בלתי הפיך.
מה שהיה במקום לנסות ליצור רשת קטנה, היו לנו שכבות רבות עם הרבה נוירונים, לבעיה פשוטה? כפי שראינו, בשכבה הראשונה תהיה אפשרות לנסות מדרונות שונים. בשכבה השנייה תהיה אפשרות לצבור אותן בצורות רבות ושונות, כשהמון צורות והמון צורות יהיו למטה בעזרת השכבות הבאות.
מאחר שהמודל יכול להתחשב בצורות רבות ושונות כל כך דרך נוירונים נסתרים שונים, יצרתם מספיק מקום כדי שהמודל יוכל להתחיל לעבור בקלות על הרעש בקבוצת האימון, כך שהצורות המורכבות האלה יתאימו לחוסר ההתאמה בין נתוני האימון לבין האמת הכללית. בדוגמה הזו, למודלים גדולים יותר יכולים להיות גבולות מורכבים שיתאימו לנקודות הנתונים המדויקות. במקרים קיצוניים, מודל גדול יכול ללמוד אי סביב נקודת רעש נפרדת, שנקראת לזיכרון של הנתונים. אם תאפשרו למודל להיות גדול הרבה יותר, תראו שברוב המקרים הביצועים שלו גרועים יותר מהמודל הפשוט, ומספיק נוירונים כדי לפתור את הבעיה.
אתחול נוירולוגי
תרגיל זה משתמש שוב בנתוני ה-XOR, אבל הוא מתייחס לחזרה על האימון של רשתות נוירונים ולחשיבות האתחול.
משימה 1: מריצים את המודל לפי ארבע או חמש פעמים. לפני כל תקופת ניסיון, לוחצים על הלחצן איפוס הרשת כדי לאתחל באופן אקראי חדש.
(הלחצן איפוס הרשת הוא חץ האיפוס העגול שמימין מימין ללחצן Play.) כדי להבטיח שיעור המרות, צריך להריץ כל תקופת ניסיון במשך 500 שלבים לפחות. לאיזו צורה מתמזג כל פלט של דגם?
מה זה אומר על תפקיד האתחול באופטימיזציה שלא כוללת המרות?
משימה 2: כדאי לנסות ליצור מודל מורכב יותר ולהוסיף לו כמה צמתים נוספים, כדי לעשות את זה קצת יותר מורכב. חוזרים על תקופות הניסיון ממשימה 1. האם הוא מוסיף יציבות נוספת לתוצאות?
(התשובות מופיעות מתחת לפעילות הגופנית).
אפשר ללחוץ על סמל הפלוס כדי לענות למשימה 1.
למודל שנלמד היו צורות שונות בכל ריצה. אובדן הבדיקה המצטבר השתנה כמעט פי שניים מהנמוך לגבוה.
אפשר ללחוץ על סמל הפלוס כדי לענות למשימה 2.
הוספת השכבה והצמתים הנוספים הניבו תוצאות שחוזרות על עצמן.
בכל הפעלה, המודל שהתקבל נראה די דומה. יותר מכך, אובדן הבדיקה הממושך מראה פחות שונות בין הריצות.
מסלע נטו נוירוני
קבוצת הנתונים הזו היא ספירלה רועשת. כמובן, מודל לינארי ייכשל כאן, אך ייתכן אפילו שיהיה צורך לבנות צלבים של תכונות שהוגדרו באופן ידני.
משימה 1: לאמן את המודל הטוב ביותר, באמצעות X1 ו-X2 בלבד. אפשר להוסיף או להסיר שכבות ונוירונים, לשנות הגדרות למידה כמו שיעור למידה, שיעור שימור וגודל של אצווה. מהו אובדן הבדיקה הטוב ביותר שניתן לקבל? עד כמה היה חלק
פלט הדגם?
משימה 2: גם ברשתות נוירונים, לרוב יש צורך בהנדסת תכונות כדי להשיג את הביצועים הטובים ביותר. נסו להוסיף עוד תכונות של צלב או שינויים אחרים כמו
sin(X1) ו-sin(X2 ). האם יש לכם מודל טוב יותר? האם הפלט של המודל ברור יותר?
(התשובות מופיעות מתחת לפעילות הגופנית).
כדי לקבל תשובות אפשריות, לוחצים על סמל הפלוס.
בסרטון הבא נסביר איך לבחור היפר-פרמטרים
כדי לאמן את המודל בנתונים הספירליים כדי למזער את אובדן הבדיקה.