|
(זה באמת נושא *הרבה* יותר פשוט מהרושם שההסבר המסורבל שלי כאן עשוי ליצור...)
פונקציית ה-xor היא פונקציה בוליאנית פשוטה שאת טבלת-האמת שלה אפשר לראות כאן XOR_gate [Wikipedia]. נגיד שרוצים ללמוד אותה: הקלט יהיה טבלת האמת שמופיעה בערך (בסה"כ 4 דגימות), ואחרי האימון - אם הוא נעשה בהצלחה - תוכל להציג לרשת זוג של ערכים בוליאנים, היא תחזיר את התוצאה של הפעלת xor עליהם (למשל עבור הקלט (0,0) היא תחזיר 0, ועבור הקלט (0,1) היא תחזיר 1).
אפשר לחשוב על הבעיה כבעיית קלאסיפיקציה, בה על הרשת להתאים לזוג-סדור של ערכים בוליאניים את התווית "0" או את התווית "1". מודל קלאסיפקציה לינארי, הוא כזה שינסה לפתור את הבעיה על ידי מציאת "מישור מפריד" במרחב הקלט שמצד אחד שלו מצויים כל הקלטים להם מתאימה התווית "0" ומצידו אחר מצויים כל הקלטים להם מתאימה התווית "1". פונקציות בוליאניות כמו and או or אפשר ללמוד באופן הזה, אבל את הפונקציה xor אי אפשר (המחשה).
"מסתבר" שאם מרכיבים הרבה מודלים לינארים קטנים (לא משנה כמה מהם, ולא משנה איך מרכיבים אותם) - התוצאה המתקבלת היא מודל לינארי. לכן רשתות מסובכות וגדולות כרצונך המורכבות אך ורק מ-"נוירונים לינאריים" לעולם לא תוכלנה ללמוד פונקציה פשוטה כמו xor.
הנושא והמציאות ההיסטורית קצת מורכבים יותר: פרספטרונים - גם בשנות השישים - הם לא "נוירונים לינארים", למרות שבפני עצמם הם כן "מודלים לינארים". אז רשת של פרספטרונים בעלת-שכבה אחת לא יכולה ללמוד את פונקציית xor, אבל רשת בעלת שתי שכבות של פרספטרונים כן יכולה - ולמעשה יש "משפט אוניברסליות" שאומר שרשת כזו יכולה ללמוד כל פונקציה סבירה.
|
|