שְׁאֵלָה:
מדוע רשתות עצביות נעשות עמוקות יותר, אך אינן רחבות יותר?
Karnivaurus
2016-07-09 11:35:13 UTC
view on stackexchange narkive permalink

בשנים האחרונות, רשתות עצביות קונבולוציות (או אולי רשתות עצביות עמוקות באופן כללי) נעשו עמוקות יותר ויותר, כאשר רשתות משוכללות עברו משבע שכבות ( AlexNet) ל -1000 שכבות ( רשתות שיור) בטווח של 4 שנים. הסיבה מאחורי העלייה בביצועים מרשת עמוקה יותר היא שניתן ללמוד פונקציה מורכבת יותר ולא ליניארית. בהתחשב בנתוני הדרכה מספקים, הדבר מאפשר לרשתות להבחין ביתר קלות בין כיתות שונות.

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

אז בעוד שהרשתות הפכו "עמוקות יותר", הן לא הפכו "רחבות יותר". מדוע זה?

+1 אבל כדי להיות הוגנים, זה לא שהרשתות האלה יותר מ -1000 שכבות הן "מצב של אמנות" במובן של ביצועים טובים יותר מהאחרות.נייר arxiv שקישרת אליו מדווח על רשת שיורית עם 152 שכבות כמנצחת הנוכחית ב- ImageNet.
האם קראת רשתות שיור רחבות https: //arxiv.org/abs/1605.07146 .... אולי אין סיבה..אופטימיזציה של פונקציה לא קמורה עם ירידת שיפוע אין שום בסיס תיאורטי ... יש רק ניסיון והרבה שגיאות:-)
@seanv507 מעניין מאוד, תודה על הקישור הזה.BTW, הנה שרשור מאוד קשור: http://stats.stackexchange.com/questions/214360 ויש קישור ל [פתיל reddit זה] (https://www.reddit.com/r/MachineLearning/comments/4krp3w / wide_residual_networks /) שם.
אותה שאלה פורסמה ב- Quora יום אחרי [מדוע רשתות עצביות נעשות עמוקות יותר (יותר שכבות) אך לא רחבות יותר (יותר צמתים לשכבה)?] (Https://www.quora.com/Why-are-neural-networks-להיות עמוק יותר-יותר-שכבות-אך-לא-רחבות-יותר-צמתים-לכל-שכבה)
מאוד מאוד קשור: https://stats.stackexchange.com/questions/182734.
נראה שיש סוגים מסוימים של בעיות בלמידת מכונה, כאשר מספר השכבות מגדיל באופן אקספוננציאלי את כמות הפונקציות הכוללת האפשרית, עבור סוגים מסוימים של פונקציות.הגיוני, כאשר כל צומת מסתעף לכל הצמתים בדוגמה האפשרית הבאה.
אתה עשוי להתעניין במאמר זה על רשתות NN רחבות * ו * עמוקות של Google: https://ai.googleblog.com/2016/06/wide-deep-learning-better-together-with.html
ציטוט: "התוצאות שלנו מספקות ראיות מקיפות יותר לכך שעומק עשוי להיות יעיל יותר מרוחב עבור האקספרסיביות של רשתות ReLU".http://papers.nips.cc/paper/7203-the-expressive-power-of-neural-networks-a-view-from-the-width
ארבע תשובות:
J. O'Brien Antognini
2016-07-14 01:11:28 UTC
view on stackexchange narkive permalink

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

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

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

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

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

+1.הערה כלשהי ב- https://arxiv.org/abs/1605.07146?
רק דילגתי עליו, אז אני לא יכול להגיד שום דבר סמכותי, אבל נראה שהמחברים מצאו שלפחות במקרה של רשתות שיוריות רשת רחבה (אך עדיין עומדת 16 שכבות!) עולה על רשת צרה, עמוקה במיוחד (1000 שכבות) נטו.אני לא יודע הרבה על רשתות שיוריות, אך על פי ההקדמה נראה שקושי להכשיר אותן הוא שיכולה להיות נטייה לשכבות שלא ילמדו כלום ובכך לא יתרמו הרבה לתוצאה.נראה כי פחות שכבות, אך חזקות יותר, מונעות זאת.אם זה חל על סוגים אחרים של NN אני לא יודע.
תשובה ברורה ותמציתית, כל הכבוד. @J
Borbei
2016-07-14 02:02:22 UTC
view on stackexchange narkive permalink

אני לא חושב שיש תשובה ברורה לשאלותיך. אבל אני חושב שהחוכמה המקובלת הולכת כדלקמן:

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

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

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

זה עשוי להסביר חלקית את ההצלחה של מודלים עמוקים יותר עם פחות פרמטרים: ל- VGGNet (משנת 2014) יש 16 שכבות עם ~ 140M פרמטרים, ואילו ResNet (משנת 2015) ניצח אותה עם 152 שכבות אך רק ~ 2M פרמטרים

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

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

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

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

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

החלק המכונה של בולצמן המוגבלת ברשתות עמוקות הוא מכפיל גדול על זמן התכנסות.(afaict)
RBMs אינם טבועים בלמידה עמוקה.רבות (כיום, רוב?) רשתות עמוקות מצליחות אינן משתמשות ב- RBM.
תודה על הקישור לעיתון ההוא, לא ראיתי אותו בעבר וזה נראה מאוד רלוונטי.
@Borbei - כיצד הם מבטיחים הפרדת תכונות ללא RBM?
+1.הערה כלשהי ב- https://arxiv.org/abs/1605.07146?
Aksakal
2016-07-14 02:27:51 UTC
view on stackexchange narkive permalink

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

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

שקול מקרה פשוט: גרירת אוויר של מכונית. נגיד, לא ידענו את המשוואה: $$ f \ sim C \ rho A v ^ 2/2 $$ שבו $ A $ - שטח חתך של מכונית, $ \ rho $ - צפיפות אוויר ו- $ v $ - מהירות מכונית. נוכל להבין שמדידות המכוניות חשובות ולהוסיף אותן כתכונות, גם מהירות המכונית תיכנס. אז אנחנו ממשיכים להוסיף תכונות, ואולי נוסיף לחץ אוויר, טמפרטורה, אורך, רוחב של מכונית, מספר מושבים וכו '.

בסופו של דבר נקבל דגם כמו $$ f \ sim \ sum_i \ beta_i x_i $$ אתה רואה כיצד תכונות אלה אינן הולכות להרכיב את עצמן למשוואה "האמיתית" אלא אם נוסיף את כל האינטראקציות והפולינומים. עם זאת, אם המשוואה האמיתית לא הייתה פולינומית נוחה, נניח שיש לה אקספוננטים או פונקציות טרנסצנדנטליות מוזרות אחרות, אז לא יהיה לנו שום סיכוי לחקות אותה באמצעות ערכת תכונות מתרחבת או הרחבת הרשת.

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

אתה מניח פונקציות העברה לינאריות.אך ישנן אפשרויות רבות (נפוצות) אחרות, ולפי [משפט הקירוב האוניברסלי של ANNs] (https://en.wikipedia.org/wiki/Universal_approximation_theorem), אפילו שכבה נסתרת שאינה לינארית (אם היא רחבה מספיק) יכול לקרוב לכל פונקציה נחמדה.כך שייצוגיות לא ממש יכולה להסביר את ההצלחה של רשתות עמוקות.
הדוגמה שלי הייתה ליניארית אבל היא חלה על מערך מקרים רחב יותר.הנחתם פונקציה "נחמדה" אך רבים אינם כל כך נחמדים.למשל כשאני בוחר מכונית לרכישה מדוע שאלגוריתם ההחלטה שלי יהיה פונקציה נחמדה?
Charles Staats
2017-08-21 02:44:16 UTC
view on stackexchange narkive permalink

עבור רשת עצבית מחוברת בצפיפות של עומק $ d $ ורוחב $ w $, מספר הפרמטרים (לפיכך, זיכרון RAM הנדרש להפעלת או אימון הרשת) הוא $ O (dw ^ 2) $. לפיכך, אם יש לך רק מספר מוגבל של פרמטרים, לרוב הגיוני להעדיף עלייה גדולה בעומק על פני הגדלת רוחב קטנה.

מדוע אתה מנסה להגביל את מספר הפרמטרים? מספר סיבות:

  • אתה מנסה להימנע מהתאמת יתר. (למרות שהגבלת מספר הפרמטרים היא מכשיר בוטה מאוד להשגת זה.)
  • המחקר שלך מרשים יותר אם אתה יכול לעלות על המודל של מישהו אחר תוך שימוש באותו מספר פרמטרים.
  • אימון המודל שלך קל הרבה יותר אם המודל (פלוס רגעים אם אתה משתמש באדם) יכול להשתלב בזיכרון של GPU יחיד.
  • ביישומים בחיים האמיתיים, זיכרון RAM לעתים קרובות יקר בעת הצגת מודלים. זה נכון במיוחד עבור ריצת דגמים למשל. טלפון סלולרי, אך לפעמים יכול לחול אפילו על הצגת דגמים מהענן.
מאיפה ה- $ O (dw ^ 2) $ מגיע? עבור שתי שכבות שכנות ברוחב $ w_1, w_2 $, החיבורים ביניהן מתוארים על ידי $ w_1 \ פעמים w_2 $. אז אם יש לך $ (d-2) $ שכבות ברוחב $ w $ (בתוספת קלט ושכבת פלט), מספר הפרמטרים הוא $$ (d-2) w ^ 2 + w \ cdot (\ text { רוחב שכבת קלט}) + w \ cdot (\ text {רוחב שכבת פלט}) = O (dw ^ 2) \ טקסט {.} $$ במקום להגביל את הרוחב, לפעמים משתמשים באסטרטגיה חלופית היא שימוש בחיבורים דלילים. לדוגמה, בעת אתחול טופולוגיית הרשת, אתה יכול להודות בכל חיבור בהסתברות $ 1 / \ sqrt {w} $ כך שמספר הפרמטרים הכולל הוא $ O (dw) $. אך אם תעשה זאת, לא ברור כי הגדלת הרוחב בהכרח תגדיל את יכולת הלמידה של המודל.


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