שְׁאֵלָה:
כיצד לבחור את מספר השכבות והצמתים הנסתרים ברשת העצבית של הזנה?
Rob Hyndman
2010-07-20 05:15:03 UTC
view on stackexchange narkive permalink

האם קיימת שיטה סטנדרטית ומקובלת לבחירת מספר השכבות, ומספר הצמתים בכל שכבה, ברשת עצבית העברת הזנה? אני מעוניין בדרכים אוטומטיות לבניית רשתות עצביות.

בין כל התשובות הנהדרות, מצאתי שמאמר זה מועיל http://dstath.users.uth.gr/papers/IJRS2009_Stathakis.pdf
@DebpriyaSeal לא * זה * שימושי אם כי ...
אחת עשרה תשובות:
#1
+532
doug
2010-08-02 07:20:30 UTC
view on stackexchange narkive permalink

אני מבין ששאלה זו נענתה, אך אינני חושב שהתשובה הקיימת באמת עוסקת בשאלה מעבר להצביע על קישור הקשור בדרך כלל לנושא השאלה. בפרט, הקישור מתאר טכניקה אחת לתצורת רשת פרוגרמטית, אך זו אינה " [a] שיטה סטנדרטית ומקובלת " לתצורת רשת.

על ידי ביצוע סט קטן של כללים ברורים, ניתן לקבוע באופן פרוגרמטי ארכיטקטורת רשת מוכשרת (כלומר, מספר וסוג השכבות העצביות ומספר הנוירונים המורכבים מכל שכבה). בעקבות סכמה זו זה ייתן לך ארכיטקטורה מוכשרת אך כנראה לא אופטימלית.

אך לאחר אתחול רשת זו, תוכל לכוון את התצורה בצורה איטרטיבית במהלך האימון באמצעות מספר אלגוריתמים נלווים; משפחה אחת של עבודות אלה על ידי גיזום צמתים המבוססים על ערכים (קטנים) של וקטור המשקל לאחר מספר מסוים של תקופות אימונים - במילים אחרות, ביטול צמתים מיותרים / מיותרים (עוד על כך בהמשך).

כך שלכל NN יש שלושה סוגים של שכבות: קלט , מוסתר ו פלט .


יצירת ארכיטקטורת NN פירושה לפיכך להגיע לערכים למספר השכבות מכל סוג ולמספר הצמתים בכל אחת מהשכבות הללו.

שכבת הקלט

פשוט - לכל NN יש בדיוק אחד מהם - אין יוצאים מן הכלל שאני מודע להם.

ביחס למספר הנוירונים המרכיבים שכבה זו, פרמטר זה הוא לחלוטין ונחוש באופן ייחודי ברגע שאתה יודע את צורת נתוני האימון שלך. באופן ספציפי, מספר הנוירונים המורכבים משכבה זו שווה למספר התכונות (העמודות) בנתונים שלך . תצורות NN מסוימות מוסיפות צומת נוסף אחד למונח הטיה.


שכבת הפלט

כמו שכבת הקלט, לכל NN יש שכבת פלט בדיוק אחת . קביעת גודלו (מספר הנוירונים) היא פשוטה; זה נקבע לחלוטין על ידי תצורת הדגם שנבחרה.

האם ה- NN שלך פועל במצב מכונה או במצב רגרסיה (מוסכמת ה- ML של שימוש במונח המשמש גם בסטטיסטיקה אך הקצאת שונה הכוונה לזה מאוד מבלבלת). מצב מכונה: מחזיר תווית מחלקה (למשל, "חשבון פרימיום" / "חשבון בסיסי"). מצב רגרסיה מחזיר ערך (למשל, מחיר).

אם ה- NN הוא רגרסור, אז לשכבת הפלט יש צומת יחיד.

אם ה- NN הוא מסווג, יש לו גם צומת יחיד אלא אם משתמשים ב softmax ובמקרה זה לשכבת הפלט יש צומת אחד לכל תווית מחלקה במודל שלך.

השכבות הנסתרות

אז כללים מעטים אלה קובעים את מספר השכבות והגודל (נוירונים / שכבה) עבור שכבות הקלט והפלט. זה משאיר את השכבות הנסתרות.

כמה שכבות נסתרות? ובכן, אם הנתונים שלך ניתנים להפרדה ליניארית (דבר שאתה יודע לעיתים קרובות עד שתתחיל לקודד NN), אינך זקוק לשכבות נסתרות כלל. כמובן, אתה לא צריך NN כדי לפתור את הנתונים שלך, אבל זה עדיין יעשה את העבודה.

מעבר לזה, כפי שאתה בוודאי יודע, יש הר של פרשנות לשאלת תצורת השכבה הנסתרת ב- NNs (ראה את שאלות נפוצות בנושא NN בטירוף לקבלת סיכום מצוין של אותה פרשנות). נושא אחד בנושא זה שיש בו הסכמה הוא הבדל הביצועים מהוספת שכבות נסתרות נוספות: המצבים בהם הביצועים משתפרים ברובד מוסתר שני (או שלישי וכו ') מעטים מאוד. שכבה נסתרת אחת מספיקה לרוב הגדול של הבעיות.

אז מה לגבי גודל השכבה (ים) הנסתרים - כמה נוירונים? ישנם כמה כללי אצבע שמקורם באמפירית, מהם הנפוצים ביותר הוא ' הגודל האופטימלי של השכבה הנסתרת הוא בדרך כלל בין גודל הקלט לגודל שכבות הפלט '. ג'ף היטון, מחבר הספר מבוא לרשתות עצביות בג'אווה מציע עוד כמה.

לסיכום, עבור רוב הבעיות, אפשר כנראה להגיע לביצועים ראויים (אפילו ללא שלב אופטימיזציה שני. ) על ידי הגדרת תצורת השכבה הנסתרת תוך שימוש בשני כללים בלבד: (i) מספר השכבות הנסתרות שווה לאחת; ו- (ii) מספר הנוירונים בשכבה זו הוא הממוצע של הנוירונים בשכבות הקלט והפלט.


אופטימיזציה של תצורת הרשת

גיזום מתאר מערך טכניקות לקצץ את גודל הרשת (לפי צמתים ולא שכבות) כדי לשפר את ביצועי החישוב ולעיתים את ביצועי הרזולוציה. עיקר הטכניקות הללו הוא הסרת צמתים מהרשת במהלך האימון על ידי זיהוי אותם צמתים, שאם יוסרו מהרשת לא ישפיעו באופן ניכר על ביצועי הרשת (כלומר, רזולוציית הנתונים). (גם מבלי להשתמש בטכניקת גיזום פורמלית, תוכלו לקבל מושג גס אילו צמתים אינם חשובים על ידי התבוננות במטריקס המשקל שלכם לאחר האימון; משקולות נראים קרובים מאוד לאפס - הם הצמתים בשני קצות המשקולות הללו שלעתים קרובות הוסר במהלך הגיזום. ברור שאם אתה משתמש באלגוריתם גיזום במהלך האימון אז התחל בתצורת רשת שיש סיכוי גבוה יותר שיש לה עודף (כלומר 'גיזום') צמתים - במילים אחרות, כאשר אתה מחליט על ארכיטקטורת רשת, שגיאה בצד של נוירונים נוספים, אם אתה מוסיף שלב גיזום.

במילים אחרות, על ידי יישום אלגוריתם גיזום ברשת שלך במהלך האימון, אתה יכול לגשת לתצורת רשת אופטימלית; האם אתה יכול לעשות זאת ב"קדימה "אחת (כגון אלגוריתם מבוסס אלגוריתם) אני לא יודע, אם כי אני יודע שבינתיים, אופטימיזציה דו-שלבית זו שכיחה יותר.

היכן ממוקמת השאלות הנפוצות המפורסמות של NN? :)
אתה מצהיר שברוב הבעיות צריך רק שכבה נסתרת אחת. אולי עדיף לומר כי קשה מאוד להכשיר כי רשתות NN בעלות שכבות נסתרות יותר (אם ברצונך לדעת כיצד, בדוק בפרסומי הקבוצה של הינטון באוף טורונטו, "למידה עמוקה") ובכך את הבעיות הדורשות יותר מסתם שכבה נחשבת "בלתי ניתנת לפיתרון" על ידי רשתות עצביות.
@bayerj, מה היתרון הנוסף מרשתות 'למידה עמוקה'?
ניתן לייצג את אותן פונקציות עם פחות פרמטרים אקספוננציאלית, מה שמוביל להכללה טובה יותר.
אתה כותב * אם ה- NN הוא רגרסור, אז לשכבת הפלט יש צומת יחיד. *. מדוע רק צומת יחיד? מדוע לא אוכל לקבל מספר יציאות רציפות?
@gerrit בהחלט יכול להיות שתפוקות רציפות מרובות אם תפוקת היעד שלך מוערכת בווקטור. הגדרת פונקציית הפסד מתאימה ליציאות בעלות וקטור יכולה להיות קצת יותר מסובכת מאשר בפלט אחד.
איפה יותר מסובך פירושו: אתה בעצם מסכם את השגיאות האישיות. עם זאת, ייתכן שיהיה עליהם לשקלל, אחרת שגיאה אחת שולטת בכל השאר (למשל מכיוון שיש לה טווח גדול בהרבה). ZScores על תפוקות האימון היא דרך אחת ברורה לעשות זאת, אך אולי לא מה שאתה רוצה.
חשבתי שזה ההפך מזה: _ אם ה- NN הוא מסווג, אז יש לו גם צומת יחיד, אלא אם כן משתמשים ב- softmax ובמקרה כזה בשכבת הפלט יש צומת אחד לכל תווית מחלקה במודל שלך.
אתה יכול לבנות רשת עצבית עם מספר שכבות קלט אם תרצה בכך.השכבה הראשונה תצטרך להיות שכבת קלט, אך שכבות עוקבות יכולות להיות מורכבות הן מתאי עצב מוסתרים והן מתאי עצב קלט, או אם תרצו, תוכלו לקבל שכבת קלט נוספת באותה רמה כמו שכבה נסתרת.
@doug תודה על התשובה הנפלאה הזו.זה איפשר לי להפחית את ה- ANN שלי משלוש שכבות נסתרות עד 1 ולהשיג את אותו דיוק סיווג על ידי הגדרת המספר הנכון של נוירונים מוסתרים ... פשוט השתמשתי בממוצע של קלט ופלט שסוכמו יחד.תודה!
@davips לא, זה כתוב נכון כאן.[Softmax] (https://en.wikipedia.org/wiki/Softmax_function) עובד בדומה למפה סיגמואידית או אחרת למרחב [-1,1], אלא שהיא ממפה למספר מימדים / פלטים, בדיוק כמו שדאג מזכיר.
@MikeWilliamson אני חושד שזה טרמינולוגיה / שימוש ב"נושא "עם הרבה מסגרות ה- ML הנפוצות.נראה שכיח שיש חבורה של נוירונים "פלטיים" ואז אתה ממקסם אותם ואז אתה בוחר את הגבוה ביותר בתור הפלט היחיד;ואנשים נכנסים באופן שגוי את ה"בחירה הגבוהה ביותר "לסופטמקס.
"פשוט - לכל NN יש בדיוק אחד מהם - אין יוצאים מן הכלל שאני מודע להם."לא נכון, הנה דוגמה בתיעוד של Keras לשתי שכבות קלט (ושתי פלט): https://keras.io/getting-started/functional-api-guide/#multi-input-and-multi-output-models
האם התשובה משתנה בצורה כלשהי אם ה- MLP נועד לקירוב הפונקציה Q במשימת RL?
האם "מבחני אבלציה" הם סוג של גיזום?
האם יש למישהו נייר או ספר, שהעובדה ש"שכבה נסתרת אחת מספיקה לרוב הגדול של הבעיות. "ניתן להוכיח?או שצוטט?תודה!
מאמר זה טוען שאם אין לך שכבה נסתרת רחבה יותר משכבת הקלט, לא תוכל ליצור אזורי החלטה מנותקים במרחב הקלט.לכן, אני חושב שזה צריך להיות מועיל להתנסות בזה במקום רק הממוצע בין שכבת הקלט והפלט.https://arxiv.org/abs/1803.00094
תודה על התשובה הנחמדה הזו !!בואו ניקח בחשבון את הדוגמה הבאה: דגם 1) 500 יחידות קלט, 100 יחידות נסתרות, 200 יחידות פלט;דגם 2) 500 יחידות קלט, 100 יחידות נסתרות, 5 יחידות נסתרות (שכבה נסתרת שנייה), 200 יחידות פלט.היתרון של מודל A לעומת מודל B הוא: אימונים מהירים יותר, שגיאת ייצור נמוכה יותר (?) והיתרון של מודל B לעומת מודל A: בגלל השונות הגבוהה במספר היחידות, אני קצת לא בטוח איךלשים את האפקט במילים.האם אתה יכול לחשוב על יתרון של מודל זה (לעומת מודל A)?
#2
+158
hobs
2015-02-06 13:22:32 UTC
view on stackexchange narkive permalink

התשובה של @ doug עבדה בשבילי. יש כלל אצבע נוסף המסייע לבעיות למידה בפיקוח. בדרך כלל ניתן למנוע התאמת יתר אם תשמור על מספר הנוירונים שלך למטה:

$$ N_h = \ frac {N_s} {(\ alpha * (N_i + N_o))} $$

$ N_i $ = מספר נוירוני קלט.
$ N_o $ = מספר נוירוני התפוקה.
$ N_s $ = מספר הדגימות בערכת נתוני האימון.
$ \ alpha $ = גורם קנה מידה שרירותי בדרך כלל 2-10.

אחרים ממליצים להגדיר $ alpha $ לערך שבין 5 ל -10, אבל אני מוצא שער של 2 יהיה לעיתים קרובות עובדים ללא התאמת יתר. אתה יכול לחשוב על אלפא כגורם הענף היעיל או מספר המשקלים שאינם אפסיים עבור כל נוירון. שכבות נשירה יביאו את גורם הענף ה"יעיל "למטה מהגורם המסועף הממוצע בפועל עבור הרשת שלך.

כפי שהוסבר על ידי טקסט מעולה NN זה של עיצוב, אתה רוצה להגביל את מספר הפרמטרים החופשיים במודל שלך ( התואר או מספר המשקלים שאינם אפסיים) לחלק קטן ממידות החופש בנתונים שלך. דרגות החופש בנתונים שלך הם מספר הדוגמאות * דרגות חופש (ממדים) בכל דוגמא או $ N_s * (N_i + N_o) $ (בהנחה שהם כולם עצמאיים). אז $ \ alpha $ היא דרך לציין כמה כללי אתה רוצה שהמודל שלך יהיה, או כמה אתה רוצה למנוע התאמת יתר.

הליך אוטומטי שתתחיל עם אלפא של 2 (פי שניים יותר דרגות חופש בנתוני האימון שלך מהמודל שלך) ותעבוד עד 10 אם השגיאה (אובדן) עבור מערך האימונים שלך קטנה משמעותית מאשר עבור שלך מערך בדיקה.

נוסחה זו מאוד מעניינת ומועילה.האם יש התייחסות לנוסחה זו?זה יהיה מועיל יותר.
@prashanth שילבתי כמה קביעות ונוסחאות בטקסט NN Design שהוזכר לעיל.אבל אני לא חושב שזה נקרא במפורש בצורה שאני מראה.והגרסה שלי היא קירוב גס מאוד עם הרבה הנחות פשוטות.אז YMMV.
אני לא רואה כיצד גודל סט האימונים רלוונטי לכך.מה אם מערך המבחנים שלך יגדל בהמשך?חוץ מזה אתה רוצה משהו שמכליל לא משהו שיכול להתאים לנתוני האימון שלך.
@konpsych אם מערך האימונים שלך גדל והמודל שלך לא מתאים היטב לדוגמאות החדשות האלה, זו הזדמנות להגדיל את מספר הנוירונים.עם זאת, אתה צודק, תיאורטית.אם פיתחת גישת רגולציה אפקטיבית ביותר (למשל נשירה אקראית) ותוכל להכליל מכמה דוגמאות לדוגמאות מבחן רבות, אז ערכת האימונים DOF יכולה להיות הרבה פחות מ- NN DOF שלך.אבל לא יכולתי ליישם בעצמי "מנוע הכללה" כל כך יעיל.הנמוך ביותר שיכולתי ללכת על "אלפא" היה ערך 2.
ראשית רציתי לכתוב מערך אימונים במקום ערכת מבחנים בתגובה הקודמת.אולי הנוסחה הזו הגיונית אם אנו קוראים אותה כ"אתה זקוק לפחות לנוירונים רבים כדי ללמוד מספיק תכונות (ה- DOF שהזכרת) ממערך הנתונים ".אם התכונות של מערך הנתונים מייצגות את האוכלוסייה ועד כמה המודל יכול להכליל אולי זו שאלה אחרת (אך חשובה).
-1
-1
@Cyberguille ** הרבה ** קורה;) התחל בכמה דרגות חופש שאתה חושב שהתופעה שאתה מדגמן דורשת.התקדם עד ל"גבול "בנוסחה זו.באפשרותך להרחיב את "יכולת" המודל או את דרגות החופש שלך על ידי הוספת עוד נוירונים, שכבות, משקולות (חיבורים) על מנת לשפר את הביצועים.המשך "להסדיר" את המודל שלך עם נשירה אקראית, פונקציות הפעלה סטוכסטיות, עלות משקל וכו ', במיוחד כשאתה מתקרב או חורג מ"הגבול "בכלל אצבע זה.
@hobs אבל מורכבות הזמן גוברת כשמוסיפים עוד נוירונים, אולי אני צריך לבצע את זה במחשב טוב ובזמן רב.אז מורכבות הזמן תלויה בקלט (אורך סט האימונים), זה לא טוב.אולי זה עובד ללא סט אימונים כה גדול.
@Cyberguille כן.אינך יכול לבצע אופטימיזציה לדיוק ולמורכבות בו זמנית.המגבלה ** העליונה ** אינה מניחה דבר לגבי מגבלות משאבים.ספר לי אם אתה מוצא כלל אצבע טוב המאזן את מגבלות החישוב שלך ואת הדיוק עבורך.
נוסחה זו מרמזת שאם מספר דגימות האימון הוא גדול באמת, למשל.מיליון, ואז מספר הצמתים הנסתרים יהיה בסדר גודל של מאות אלפים.האם זה באמת מומלץ?
שלום, הנוסחה מעניינת, מה אם יש לי מספר רשתות וכניסות מרובות אך יציאות בודדות.למשל רשת BiDAF או רשת סיאמית.יש לחשב שכבות נסתרות בנפרד עבור כל רשת, או להחיל גודל אחד על כל הרשתות באמצעות ממוצע.
@Wazzzy בהחלט מחשבים עבור רשתות בודדות.והנוסחה הזו היא רק נקודת התחלה מאוד גסה.רשתות NN אמיתיות עם ביצועים חדישים מסוגלות להרחיב את דרגות החופש שלהן (מספר משקולות שאינן אפסיות) להרבה יותר גדולה ממה שמערך הנתונים שלהן בדרך כלל יתמוך (עם נוסחה זו) באמצעות גישות רגולציה אחרות, כמו "נשירה אקראית", כדי להפיץ את הלמידה ברחבי הרשת.
האם אתה בטוח שזו הערכה טובה עבור רשתות עם יותר משכבה נסתרת אחת?האם זה לא המקרה מאשר במספר שכבות נסתרות מספר הפרמטרים גדול בהרבה מ- $ N_h \ cdot (N_i + N_o) $?
כן, @mateus, יהיה עליכם להחיל כלל אצבע זה על כל שכבה נסתרת אם תרצו הערכה טובה יותר.אך אולי התלות ההדדית של המשקולות בכל שכבה מפחיתה את קצב הצמיחה במגוון / מורכבות המודלים ככל שמתווספים שכבות.גם אם יוחל באופן איטרטיבי על כל שכבה, כלל אצבע זה פחות ופחות שימושי ככל שתוסיף עוד שכבות.
@mateus, אולי כלל אצבע מעט טוב יותר עבור מספר שכבות הוא הפתרון 'N_h' (המספר הממוצע של נוירונים מוסתרים לשכבה) ל 'N_s = (N_i + N_o) * N_h ^ N_hidden_layers'.אבל עדיין לא הייתי משתמש בנוסחה זו.זה רק לבעיות בסיסיות מאוד (בעיות צעצועים) כאשר אינך מתכנן ליישם שום גישת הסדרה אחרת.
@hobs, אם אני מבין נכון את הנוסחה שלך עבור 400.000 דוגמאות בערכת האימונים, שיש להם 4 תכונות לביצוע סיווג בינארי הייתי צריך: '400000 / (10 * (4 + 1)) == 8000' ~ 8000 נוירונים בשכבה הנסתרת- האם הערכה נכונה זו?
@MaxU כן זה נכון.זה מספר טוב להתחיל איתו, אבל זה הרבה נוירונים והרבה משקולות עבור 4 דרגות חופש בלבד בכל דגימה.כך שאם בנתונים שלך יש הרבה דוגמאות מיותרות, ייתכן שתגלה שמדובר ביותר מדי נוירונים.אתה יכול להשתמש ב- PCA בקבוצות משנה של הנתונים שלך (להתייחס לכל מדגם כאל מימד חדש ב- PCA שלך) כדי לאמוד את יתירות הליניארית בנתונים שלך.ספר לנו כיצד זה מסתדר עבורך.
@hobs אתה מתכוון עם "נוירונים נסתרים", סך הנוירונים הנסתרים בכל השכבות הנסתרות של ה- NN, או רק בשכבה נסתרת אחת?כלומר, נניח שיש לי 2 שכבות נסתרות, ו- Nh = 50 בשבילי.האם זה אומר שיכולתי להיות (צריך) שיהיו לי 50 נוירונים נסתרים בשכבה הנסתרת הראשונה, ו -50 נוירונים נסתרים בשנייה, או שהם יחדיו צריכים להיות 50?כמו 25 בראשון ו -25 בשנייה?
@ZelelB כלל אצבע זה אינו מדויק להחריד.אני כבר לא משתמש בנוסחה זו לשום דבר פרט לשכבה נסתרת מחוברת לחלוטין.אז אם יש לך רשת רב שכבתית או שאתה משתמש ב- CNN או RNN אתה צריך להגביל את המספר הכולל של נוירונים ומשקולות על סמך אינטואיציה או הנחיה של מישהו אחר.הפתרון הטוב ביותר הוא להשתמש ב- scholar.google.com כדי לברר את מספר הנוירונים והשכבות (ומשקולות או DOF) בהם משתמשים אחרים בהצלחה.
@HammanSamuel אני לא יודע.זה תלוי בכמה נשירה אקראית אתה משתמש, ובאופי ה"פיזיקה "הבסיסית של הקשר בין הנתונים שלך למשתנה היעד שלך וכמה כוח סוס חישובי וזמן אתה מוכן להשקיע בבעיה.התחל תמיד עם הרשת הפשוטה ביותר שאפשר לדמיין שתעבוד אי פעם על הבעיה שלך.זהו גבול עליון גס מאוד, לא נקודת התחלה מומלצת לגודל הרשת או לארכיטקטורה (אם כי אני יודע שזה מה ש- OP ביקשה).
אני מאמן רשת לצלם 50x50 פיקסלים ולחזות את גבולות הצורה המופיעה בה.עם 6,000 דוגמאות בערכת האימונים שלי וערך של 2 בלבד, N_h = 6000 / (2 * (2500 + 4)) = 1.20.אז יכול להיות שיש לי 1.20 נוירונים ברשת שלי?או שחסר לי משהו או שזה לא משתנה טוב.
@spaarky21 כן, זה עבור ANNs מחוברים לחלוטין (צפופים) ולא CNNs.רשתות צפופות אינן עובדות היטב ברוב בעיות קורות החיים.נוירון 1 עשוי להתאים לבעיה שלך אם אתה חושב ש- NN צפוף יכול לפתור את זה.זה בהחלט מקום טוב להתחיל בו.נוירון 1 שווה ערך לרגרסיה לוגיסטית.
#3
+68
jj_
2015-11-04 04:20:40 UTC
view on stackexchange narkive permalink

מתוך מבוא לרשתות עצביות לג'אווה (מהדורה שנייה) מאת ג'ף היטון - תצוגה מקדימה זמינה בחינם ב Google ספרים ובעבר ב אתר המחבר:

מספר השכבות הנסתרות

יש באמת לקבל שתי החלטות לגבי השכבות הנסתרות: כמה שכבות נסתרות יהיו בפועל ברשת העצבית וכמה נוירונים יהיו בכל אחת מהשכבות הללו. ראשית נבדוק כיצד לקבוע את מספר השכבות הנסתרות לשימוש ברשת העצבים.

לעתים נדירות נתקל בבעיות הדורשות שתי שכבות נסתרות. עם זאת, רשתות עצביות עם שתי שכבות נסתרות יכולות לייצג פונקציות עם כל סוג של צורה. אין כרגע סיבה תיאורטית להשתמש ברשתות עצביות עם יותר משתי שכבות נסתרות. למעשה, לבעיות מעשיות רבות אין שום סיבה להשתמש ביותר משכבה נסתרת אחת. טבלה 5.1 מסכמת את היכולות של ארכיטקטורות רשת עצביות עם שכבות נסתרות שונות.

טבלה 5.1: קביעת מספר השכבות הנסתרות

 | מספר השכבות הנסתרות | תוצאה | 0 - מסוגל לייצג פונקציות או החלטות ניתנות להפרדה ליניארית בלבד. 1 - יכול לקרוב לכל פונקציה המכילה מיפוי רציף ממרחב סופי למשנהו. 2 - יכול לייצג החלטה שרירותית הגובלת לדיוק שרירותי עם פונקציות הפעלה רציונליות ויכול לקרוב כל מיפוי חלק לכל דיוק. 

ההחלטה על מספר שכבות הנוירונים הנסתרים היא רק חלק קטן מהבעיה. עליכם לקבוע גם כמה נוירונים יהיו בכל אחת מהשכבות הנסתרות הללו. תהליך זה מכוסה בסעיף הבא.

מספר הנוירונים בשכבות הנסתרות

ההחלטה על מספר הנוירונים בשכבות הנסתרות היא מאוד חלק חשוב בהחלטה על ארכיטקטורת הרשת העצבית הכוללת שלך. למרות שכבות אלה אינן אינטראקציה ישירה עם הסביבה החיצונית, יש להם השפעה עצומה על התפוקה הסופית. יש לשקול היטב את מספר השכבות הנסתרות ואת מספר הנוירונים בכל אחת מהשכבות הנסתרות הללו.

שימוש במעט מדי נוירונים בשכבות הנסתרות יביא למשהו שנקרא underfitting. התחסות מתרחשת כאשר יש מעט מדי נוירונים בשכבות הנסתרות בכדי לזהות את האותות בצורה מספקת במערך נתונים מסובך.

שימוש ביותר מדי נוירונים בשכבות הנסתרות יכול לגרום למספר בעיות. ראשית, יותר מדי נוירונים בשכבות הנסתרות עלולים לגרום להתאמת יתר. התאמת יתר מתרחשת כאשר לרשת העצבית יש יכולת כה רבה של עיבוד מידע שכמות המידע המוגבלת הכלולה בערכת האימונים אינה מספיקה כדי לאמן את כל הנוירונים בשכבות הנסתרות. בעיה שנייה יכולה להתרחש גם כשנתוני האימון מספיקים. מספר גדול במיוחד של נוירונים בשכבות הנסתרות יכול להגדיל את הזמן שלוקח להכשיר את הרשת. משך זמן האימון יכול לעלות עד כדי כך שאי אפשר להכשיר כראוי את הרשת העצבית. ברור שיש להגיע לפשרה כלשהי בין יותר מדי למעט מדי נוירונים בשכבות הנסתרות.

יש הרבה שיטות אצבע לקביעת המספר הנכון של הנוירונים לשימוש בשכבות הנסתרות, כגון כדלקמן:

  • מספר הנוירונים הנסתרים צריך להיות בין גודל שכבת הקלט לגודל שכבת הפלט.
  • מספר הנוירונים הנסתרים צריך להיות 2/3 מגודל שכבת הקלט, בתוספת גודל שכבת הפלט.
  • מספר הנוירונים הנסתרים צריך להיות פחות מכפול מגודל שכבת הקלט.

שלושת הכללים הללו מספקים נקודת מוצא לשקול. בסופו של דבר, הבחירה בארכיטקטורה עבור הרשת העצבית שלך תגיע לניסוי וטעייה. אבל מה זה בדיוק הכוונה לניסוי וטעייה? אינך רוצה להתחיל לזרוק רשת אקראית של שכבות ונוירונים. זה יהיה מאוד זמן רב. פרק 8, "גיזום רשת עצבית" יחקור דרכים שונות לקביעת מבנה אופטימלי עבור רשת עצבית.


אני גם אוהב את הטקסט הבא מ תשובה שמצאתי ב- researchgate.net , שמעבירה הרבה בכמה מילים ספורות:

סטפן ב פטרסן · אוניברסיטת אלבורג

[...]

על מנת להבטיח את יכולתה של הרשת להכליל את מספר הצמתים יש להשאיר נמוך ככל האפשר. אם יש לך עודף גדול של צמתים, הרשת שלך הופכת לבנק זיכרון שיכול לזכור את מערך האימונים לשלמות, אך אינו מבצע ביצועים טובים בדוגמאות שלא היו חלק ממערך האימונים.

האם ידוע לך במקור את הציטוט של סטפן ב 'פטרסן?
אני מצטער שלא.ניסיתי לחפש אותו אבל לא מצאתי אותו ... אני חושב שהמאמר הוסר מהאינטרנט.אולי תוכלו ליצור איתו קשר ישירות?
האם אין לקחת בחשבון את גודל מערך האימונים?יש לי מערך טבלאות עם ~ 300,000 דוגמאות ייחודיות (מחירי רכב).לשכבת הקלט 89 צמתים.אימונים ברשת ללא הסדרה ורק 89 צמתים בשכבה נסתרת אחת, אני מקבל את אובדן האימונים למישור לאחר כמה תקופות.מישורי RMSE במחיר של ~ 1,800 דולר (צומת פלט בודד הוא מחיר בבעיית רגרסיה זו).
אני חושב שמקור הציטוט של סטפן ב 'פטרסן היה כאן: https://www.researchgate.net/post/How_to_decide_the_number_of_hied_layers_and_nodes_in_a_hidden_layer
אומנם תשובה זו העתיקה בעיקר דברים מתוך ספר שההתייחסות אליו ניתנת בתשובה, אך היא איכשהו עונה על השאלה.
#4
+46
Dikran Marsupial
2010-09-03 13:40:44 UTC
view on stackexchange narkive permalink

כרגע אני עובד על מחקר אמפירי על כך (מאשר איש מעבד של מאות הדמיות על מתקן HPC שלנו!). העצה שלי תהיה להשתמש ברשת "גדולה" והסדרה, אם אתה משתמש בסידור אז ארכיטקטורת הרשת הופכת פחות חשובה (בתנאי שהיא גדולה מספיק כדי לייצג את הפונקציה הבסיסית שאנחנו רוצים לתפוס), אבל אתה צריך לכוון את הסדירות פרמטר כראוי.

אחת הבעיות בבחירת ארכיטקטורה היא שמדובר בשליטה נפרדת, ולא רציפה, על מורכבות הדגם, ולכן יכולה להיות מכשיר קצת בוטה, במיוחד כאשר המורכבות האידיאלית נמוכה.

עם זאת, כל זה כפוף למשפטים "ללא ארוחת צהריים חינם", בעוד שהסדרה היא יעילה ברוב המקרים, תמיד יהיו מקרים בהם בחירת האדריכלות עובדת טוב יותר, והדרך היחידה כדי לברר אם זה נכון לבעיה העומדת בפנינו היא לנסות את שתי הגישות ולבצע אימות צולב.

אם הייתי בונה בונה רשתות עצביות אוטומטיות, הייתי משתמש במונטה קרלו ההיברידית של רדפורד ניל (HMC) ) גישה מבוססת דגימה בייסיאנית, והשתמש ברשת גדולה לעבוד ולהשתלב מעל המשקולות ולא לייעל את המשקולות של רשת אחת. עם זאת זה יקר מבחינה חישובית וקצת "אמנות שחורה", אך התוצאות שמקבל פרופ 'ניל מצביעות על כך שזה שווה את זה!

"אני עובד כרגע על מחקר אמפירי" - האם יש עדכון כלשהו?
לא, 'לא רפוי, אני עדיין ממליץ על רשת גדולה (ish) ורגולציה, אבל אין כדור כסף, חלק מהבעיות אינן זקוקות להסדרה, אך חלק ממערכי הנתונים זקוקים לכוונון גודל שכבה מוסתר, כמו גם להסדרה.למרבה הצער הסוקרים לא אהבו את העיתון :-(
#5
+15
Vicente Cartas
2010-07-20 05:47:45 UTC
view on stackexchange narkive permalink

ככל הידוע לי אין דרך לבחור באופן אוטומטי את מספר השכבות והנוירונים בכל שכבה. אבל ישנן רשתות שיכולות לבנות באופן אוטומטי את הטופולוגיה שלהן, כמו EANN (רשתות עצביות מלאכותיות אבולוציוניות, המשתמשות באלגוריתמים גנטיים כדי לפתח את הטופולוגיה).

ישנן מספר גישות, מודרניות פחות או יותר שנראו כאילו תן תוצאות טובות היה NEAT (Neuro Evolution of Augmented Topologies).

#6
+15
prashanth
2016-02-16 20:18:00 UTC
view on stackexchange narkive permalink

• מספר הצמתים הנסתרים: אין נוסחת קסם לבחירת המספר האופטימלי של נוירונים מוסתרים. עם זאת, ישנם כללי אגודל הזמינים לחישוב מספר הנוירונים הנסתרים. קירוב גס ניתן להשיג על ידי כלל הפירמידה הגיאומטרית שהוצע על ידי מאסטרס (1993). עבור רשת תלת שכבתית עם n קלט ו- m נוירונים של פלט, בשכבה הנסתרת יהיו $ \ sqrt {n * m} $ נוירונים.

Ref:

1 מאסטרס, טימותי. מתכונים מעשיים של רשת עצבית ב- C ++. מורגן קאופמן, 1993.

[2] http://www.iitbhu.ac.in/faculty/min/rajesh-rai/NMEICT-Slope/lecture/c14/ l1.html

נראה כי כלל זה עובד די טוב עם מספר ערכות נתונים שונות ושלוש שכבות נסתרות.דבר אחד בטוח, באמצעות כלל זה, מספר הנוירונים בשכבה (ים) הנסתרים יהיה פחות ממספר תכונות הקלט (גודל $ n $).
אם אני משתמש בפרמטר קלט 15 שיחזיר סוף סוף פלט אחד בהתאם לנוסחה שלך, נוירונים מאוחרים יותר מוסתרים יהיו רק 3-4 עבור מודל זה.האמנם.
@RahulJha כן לפי הכלל.אבל קחו את התוצאה עם קורט מלח.זו רק אחת מאפשרויות רבות.עברו גם על תשובות אחרות.
זה עדיין בגדר תעלומה עבורי.
#7
+8
shuriken x blue
2015-12-14 11:43:53 UTC
view on stackexchange narkive permalink

דרכים אוטומטיות לבניית רשתות עצביות באמצעות חיפוש גלובלי של פרמטר היפר:

שכבות קלט ופלט הן בגודל קבוע.

מה יכול להשתנות:

  • מספר השכבות
  • מספר הנוירונים בכל שכבה
  • סוג השכבה

ניתן להשתמש בשיטות מרובות לכך בעיית אופטימיזציה דיסקרטית, עם שגיאת הרשת מחוץ לדוגמא כפונקציית העלות.

  • 1) חיפוש רשת / אקראי על שטח הפרמטר, כדי התחל ממיקום מעט טוב יותר
  • 2) שפע של שיטות שניתן להשתמש בהן למציאת הארכיטקטורה האופטימלית. (כן, זה לוקח זמן).
  • 3) עשו סדיר, שטפו, חזרו.
#8
+8
Martin Thoma
2017-08-01 11:39:17 UTC
view on stackexchange narkive permalink

רשמתי דרכים רבות ללימוד טופולוגיה ב עבודת התואר השני שלי, פרק 3.הקטגוריות הגדולות הן:

  • גישות גדלות
  • גיזום מתקרב
  • גישות גנטיות
  • למידת חיזוק
  • בדים עצביים קונבנציונליים
#9
+8
chainD
2017-10-13 12:06:46 UTC
view on stackexchange narkive permalink

מצטער אני עדיין לא יכול לפרסם תגובה אז בבקשה לשאת איתי.בכל מקרה, נתקלתי בשרשור הדיון הזה שהזכיר לי מאמר שראיתי ממש לאחרונה.אני חושב שזה עשוי לעניין אנשים שמשתתפים כאן:

AdaNet: למידה מבנית אדפטיבית של רשתות עצביות מלאכותיות

קורינה קורטס, חאבייר גונזלבו, ויטלי קוזנצוב, מהריאר מוהרי, סקוט יאנג;ההליכים של הוועידה הבינלאומית ה -34 בנושא למידה ממוחשבת, PMLR 70: 874-883, 2017.

תקציר אנו מציגים מסגרת חדשה לניתוח ולמידה רשתות עצביות מלאכותיות.הגישה שלנו בו זמנית ומסתגלת לומד הן את מבנה הרשת והן את משקולותיה.ה מתודולוגיה מבוססת על ומלווה בתלות נתונים חזקה למידה תיאורטית מבטיחה, כך שהרשת הסופית אדריכלות מסתגלת ככל הנראה למורכבות של כל בעיה נתונה.

#10
+5
Dan Erez
2017-12-15 20:53:22 UTC
view on stackexchange narkive permalink

ברצוני להציע שיטה פחות נפוצה אך יעילה במיוחד.

בעיקרון, אתה יכול למנף קבוצה של אלגוריתמים הנקראים "אלגוריתמים גנטיים" המנסים תת קבוצה קטנה של האפשרויות הפוטנציאליות (מספר אקראי של שכבות וצמתים לכל שכבה). לאחר מכן היא מתייחסת לאוכלוסיית האפשרויות הזו כאל "הורים" שיוצרים ילדים על ידי שילוב / מוטציה של אחד או יותר מההורים כמו שאורגניזמים מתפתחים. הילדים הטובים ביותר וכמה ילדים בסדר אקראיים מוחזקים בכל דור ודור, והכשירים ביותר שורדים.

עבור ~ 100 פרמטרים או פחות (כגון בחירת מספר השכבות, סוגי השכבות ומספר הנוירונים לשכבה), שיטה זו יעילה במיוחד. השתמש בו על ידי יצירת מספר ארכיטקטורות רשת פוטנציאליות לכל דור והדרכה חלקית עד שניתן לאמוד את עקומת הלמידה (100-10k מיני קבוצות בדרך כלל תלוי בפרמטרים רבים). לאחר מספר דורות, כדאי לך לשקול את הנקודה שבה ברכבת ובאימות מתחילים להיות אחוזי שגיאה (התאמת יתר) שונים באופן משמעותי כתפקיד האובייקטיבי שלך לבחירת ילדים. זה יכול להיות רעיון טוב להשתמש בתת-קבוצה קטנה מאוד של הנתונים שלך (10-20%) עד שתבחר מודל סופי כדי להגיע למסקנה מהר יותר. כמו כן, השתמש בזרע יחיד לצורך אתחול הרשת שלך כדי להשוות נכון את התוצאות.

10-50 דורות אמורים להניב תוצאות נהדרות עבור רשת בגודל הגון.

דרך מעניינת נוספת היא אופטימיזציה של Bayesian שהיא גם שיטת אופטימיזציה של קופסאות שחורות במיוחד למספר מצומצם יחסית של פרמטרים.https://arxiv.org/pdf/1206.2944.pdf
#11
+4
sapy
2018-05-28 09:02:25 UTC
view on stackexchange narkive permalink

מספר השכבות הנסתרות ומה הם יכולים להשיג:

0 - מסוגל לייצג פונקציות או החלטות ניתנות להפרדה ליניארית בלבד.

1 - יכול לקרוב לכל פונקציה המכילה מיפוי מתמשך ממרחב סופי אחד למשנהו.

2 - יכול לייצג החלטה שרירותית הגובלת לדיוק שרירותי עם פונקציות הפעלה רציונליות ויכול להיות מקורב לכל מיפוי חלק לכל דיוק.

יותר מ -2 - שכבות נוספות יכולות ללמוד ייצוגים מורכבים (מעין הנדסת תכונות אוטומטיות) עבור שכבות שכבה.

מקורות בבקשה.- *סוקר*


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 2.0 עליו הוא מופץ.
Loading...