קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
רשת נוירונים ראשונה
בתרגיל הזה נאמן את רשת הנוירונים הקטנה הראשונה שלנו.
רשתות נוירונים יאפשרו לנו ללמוד מודלים לא ליניאריים
שימוש בהצלבות תכונות מפורשות.
משימה 1: המודל כפי שניתן כאן משלב את שתי תכונות הקלט
של נוירון יחיד. האם המודל הזה ילמד אי-ליניאריות? צריך להפעיל אותו כדי לאשר
הוא ניחוש.
משימה 2: נסו להגדיל את מספר נוירונים בשכבה הסמויה
1 עד 2, וגם לנסות לשנות מהפעלה לינארית להפעלה לא ליניארית
כמו ReLU. אתם יכולים ליצור מודל שיכול ללמוד על לא ליניאריות? האם ניתן לבנות מודלים
את הנתונים בצורה יעילה?
משימה 3: נסו להגדיל את מספר נוירונים בשכבה הנסתרת
2 עד 3, באמצעות הפעלה לא ליניארית כמו ReLU. האם היא יכולה ליצור מודל של הנתונים
יעילה? איך איכות המודל משתנה מהרצה להרצה?
משימה 4: המשיכו בניסוי על ידי הוספה או הסרה של שכבות מוסתרות
ונוירונים לכל שכבה. אתם גם מוזמנים לשנות את קצב הלמידה,
הרגולריזציה והגדרות למידה אחרות. מה הכי קטן
את מספר הנוירונים והשכבות שבהם אפשר להשתמש, שגורמים לאובדן הבדיקה
של 0.177 ומטה?
האם הגדלה של גודל המודל משפרת את ההתאמה, או באיזו מהירות הוא מתכנס?
האם זה משנה את התדירות שבה הוא מתכנס למודל טוב? לדוגמה, כדאי לנסות את
את הארכיטקטורה הבאה:
השכבה הסמויה הראשונה עם שלושה נוירונים.
שכבה שנייה מוסתרת עם 3 נוירונים.
שכבה שלישית מוסתרת עם שני נוירונים.
(התשובות מופיעות מתחת לתרגיל).
לוחצים על סמל הפלוס כדי לקבל תשובה למשימה 1.
ההפעלה מוגדרת למצב לינארי, כך שהמודל הזה לא יכול ללמוד
את כל הלא-ליניאריות. האובדן גבוה מאוד, ואנחנו אומרים שהמודל לא מתאים
של הנתונים.
לוחצים על סמל הפלוס כדי לקבל תשובה למשימה 2.
פונקציית ההפעלה הלא ליניארית יכולה ללמוד מודלים לא ליניאריים. אבל, לפעמים
שכבה נסתרת אחת עם שני נוירונים לא יכולה לשקף את כל הליניאריות
את מערך הנתונים הזה, ואובדן יהיה גבוה גם בלי רעש: הוא עדיין
פחות מתאים לנתונים. התרגילים האלה לא קבועים, לכן חלק מהתרגילים
לא ילמד מודל יעיל, ואילו הפעלות אחרות יניבו עבודה די טובה.
ייתכן שלמודל הטוב ביותר אין את הצורה שציפית לקבל!
לוחצים על סמל הפלוס כדי לקבל תשובה למשימה 3.
התרגיל הזה ממחיש את האופי הלא דטרמיני של מגרש המשחקים. א'
מספיק שכבה נסתרת אחת עם שלושה נוירונים כדי לבנות מודל של מערך הנתונים,
אבל לא כל הריצות יתמזגו למודל טוב.
3 נוירונים מספיקים כי אפשר לבטא את פונקציית XOR כשילוב של 3 חצאי מישורים (הפעלת ReLU). אפשר לראות זאת על ידי עיון
בתמונות נוירונים, שמראה את הפלט של הנוירונים הנפרדים. במודל טוב
עם שלושה נוירונים והפעלה של ReLU, תופיע תמונה אחת עם
קו אנכי, שמזוהה כ-X1 כחיובי (או שלילי, ייתכן שהסימן
להיות מוחלפת), תמונה אחת עם קו כמעט אופקי, מזהה את הסימן
X2 ותמונה אחת עם קו אלכסון, מזהים את
אינטראקציה חוזרת.
עם זאת, לא כל הריצות יתאחדו למודל טוב. חלק מההפעלות לא יעשו
טוב יותר ממודל עם שני נוירונים, ואפשר לראות נוירונים כפולים
במקרים שונים.
לוחצים על סמל הפלוס כדי לקבל תשובה למשימה 4.
שכבה נסתרת אחת עם שלושה נוירונים יכולה ליצור מודל של הנתונים, אבל
יתירות, לכן ברצפים רבים הוא מאבד באופן אפקטיבי את מערכת הנוירונים ולא לומד
מודל טוב. בשכבה יחידה עם יותר מ-3 נוירונים יש יותר יתירות,
ולכן יש סבירות גבוהה יותר שהן יתכנסו למודל טוב.
כפי שראינו, שכבה נסתרת אחת שמכילה רק שני נוירונים לא יכולה ליצור מודל של הנתונים
נו. אם תנסה אותו, תוכל לראות שכל הפריטים בשכבת הפלט
יכולות להיות רק צורות שמורכבות מהקווים משני הצמתים האלה. במקרה הזה,
חיבור עמוק יותר יכול ליצור מודל של מערך הנתונים בצורה טובה יותר מאשר השכבה הסמויה הראשונה בלבד:
נוירונים בודדים בשכבה השנייה יכולים ליצור מודלים של צורות מורכבות יותר, כמו
בריבוע הימני העליון, על ידי שילוב נוירונים בשכבה הראשונה. במהלך ההוספה
השכבה השנייה והמוסתרת עדיין יכולה לבנות מודל של מערך הנתונים בצורה טובה יותר מהמודל המוסתר הראשון
לשכבת תשומת הלב, כדאי להוסיף עוד צמתים לשכבה הראשונה
כך שיהיו עוד קווים חלק מהערכה שממנה השכבה השנייה יוצרת
צורות.
אבל מודל עם נוירון אחד בשכבה הסמויה הראשונה לא יכול ללמוד
לא משנה כמה עמוק הוא נמצא. הסיבה לכך היא שהפלט של המודל
השכבה משתנה רק לאורך מאפיין אחד (בדרך כלל קו אלכסוני), שאינו
מספיק כדי לבנות מודל של מערך הנתונים הזה. שכבות מאוחרות יותר לא יכולות לפצות על זה, לא
לא משנה עד כמה הוא מורכב, את המידע בנתוני הקלט לא ניתן לשחזר
אבד.
מה אם במקום לנסות ליצור רשת קטנה, היו לנו הרבה שכבות עם
הרבה נוירונים, לבעיה פשוטה כמו זו? ובכן, כמו שראינו,
יוכלו לנסות הרבה שיפועים קויים שונים. והשנייה
יוכלו לצבור אותן בצורות שונות,
עם המון צורות למטה, בשכבות הבאות.
בכך שהוא מאפשר למודל להתייחס לכל כך הרבה צורות שונות דרך כל כך הרבה צורות
כמה נוירונים נסתרים שונים, יצרתם מספיק מקום כדי שהמודל יוכל להתחיל
לבצע התאמות בקלות של הרעש בערכת האימון,
צורות מורכבות שמתאימות לפרטים של נתוני האימון,
אמת קרקע כללית. בדוגמה הזו, מודלים גדולים יותר יכולים להיות מורכבים
כדי להתאים לנקודות הנתונים המדויקות. במקרים קיצוניים, מודל גדול
ללמוד אי מסביב לנקודת רעש מסוימת, שנקראת
לזכור הנתונים. אם מאפשרים למודל להיות הרבה יותר גדול,
רואים שלמעשה הוא מניב ביצועים גרועים יותר מהמודל הפשוט יותר
מספיק נוירונים כדי לפתור את הבעיה.
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2024-08-22 (שעון UTC)."],[[["This exercise explores training a neural network to learn nonlinearities and model data effectively."],["Increasing the number of neurons and using nonlinear activation functions like ReLU improves model performance."],["A single hidden layer with 3 neurons using ReLU can sufficiently model the data, but model quality varies between runs."],["Deeper and wider networks risk overfitting, potentially memorizing noise instead of generalizing patterns."],["While adding layers can improve model performance, redundant layers and neurons might lead to worse results compared to a simpler, well-structured model."]]],[]]