שְׁאֵלָה:
האם משתמשים בשיטות חיפוש קווים בלמידה עמוקה? למה לא?
Haitao Du
2018-01-05 00:41:20 UTC
view on stackexchange narkive permalink

הרבה מדריכים ברשת מדברים על ירידת שיפוע וכמעט כולם משתמשים בגודל צעד קבוע (שיעור למידה $ \ alpha $).מדוע אין שימוש בחיפוש קווים (כגון חיפוש קווים במעקב אחורה או חיפוש קווים מדויק)?

"וכמעט כולם משתמשים בגודל צעד קבוע" - אתה בטוח?["שיעור למידה"] (http://cs231n.github.io/neural-networks-3/#ratio) פרמטרים היפר אמורים להתאים את גודל הצעד לתנאים.אלגוריתם אדם מאוד פופולרי (https://machinelearningmastery.com/adam-optimization-algorithm-for-deep-learning/) אכן מתאים את גודל הצעד.
הממ, למעשה שיטות שיפוע בגודל הצעד המסתגל היו קיימות לפחות משנת 2011, והן אף מצוטטות בדף ויקיפדיה [ירידת שיפוע סטוכסטית] (https://en.wikipedia.org/wiki/Stochastic_gradient_descent).זה לא בדיוק חדשות חמות.אפילו SGD וניל משמש כמעט תמיד עם קצב למידה שמשתנה עם מספר האיטרציות (* לוח זמנים *).עכשיו, שאלה * מאוד * טובה תהיה: מדוע, גם אם יש כל כך הרבה שיטות ירידה בשיפוע אדפטיבי, SGD עדיין שולט בעולם הלמידה העמוקה?השאלה הרבה פחות טריוויאלית ממה שנדמה.
@Aksakal כן, אני חושב שזה לא קבוע.אבל מעולם לא ראיתי שימוש בשורות חיפוש ...
מעקב אחר חיפוש קו מתקן כיוון ואז מחפש דרך להפחית את הפונקציה.אז אלא אם כן יש לך דרך מושכלת לבחור את הכיוון לחיפוש, אתה מחפש אופטימיזציה מייגעת.
אני לא רואה שחיפוש קווים הגיוני ל- SGD (בניגוד לירידה בשיפוע [אצווה]) - אז הייתי אומר שזו הסיבה.
אני חושד שהסיבה שבגללה חיפוש קווים אינו פופולרי במיוחד הוא אצווה בירידה בהדרגה.אתה מקבל אצווה ואז מחשב את השיפוע.זה לא הגיוני מאוד ללכת הלוך ושוב על הקו בגלל הרעש במדרון.עדיף להמשיך עם האצווה הבאה ואולי לחסל את גודל הצעד.
חיפוש קו אינו מומלץ ליישומי למידת מכונה מכיוון שהוא יקר מאוד מבחינה חישובית.
@DerrellD'Souza ** חיפוש קווים מדויק ** הוא יקר, אך האם ** חיפוש בקו אחר ** בקו לא ידרוש רק כמה מעברים קדימה (מה שאפשר לעשות במיני אצווה בהישג יד)?
שתיים תשובות:
Cliff AB
2018-01-05 07:30:54 UTC
view on stackexchange narkive permalink

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

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

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

EDIT

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

נחמד מאוד (+1), אבל אני לא בטוח מדוע בדוגמה האחרונה אתה מדבר על מדגם יחיד.אני מסכים שלחישוב חיפוש השורות על בסיס מיני אצווה אין שום היגיון, אך מיני אצווה עדיין מכילה 512 דוגמאות (בדרך כלל, וכשמדברים על ImageNet): כמובן שאין ערך קבוע למספר הדוגמאות במיני-אצווה, אבל מיני מיני-אצוות לדוגמא מרגישים קצת קיצוניים.האם השתמשת בהם רק כדי להבהיר את הנקודה שלך, או שחסר לי משהו?
מדגם יחיד של @DeltaIV: הוא בעיקר כדי להבהיר עד כמה זה יכול להיות רע בבעיה מאוד פשוטה.אם היינו עושים מיני אצווה עם 512 דגימות על רגרסיה לוגיסטית עם 512+ משתנים, היינו רואים את אותה הבעיה.
@DeltaIV ו- Cliff - הממ, חיפוש קווים מדויק יכול להיות יקר מאוד (מזעור ממשי לכיוון השיפוע), אך ניתן לבצע ** חיפוש בקו אחר מסלול ** על ידי בדיקת ערך פונקציית הפסד לכיוון השיפוע פשוט על ידי ביצועכמה מעברים קדימה (שמיני-אצווה איטרטיבי ו- SGD דורשים בכל מקרה).האם לא יכול היה לטעון כי איטרציה של שני השלבים האלה ** הזנה קדימה + התפלגות אחורה ** אכן תהיה _יקרה_ יותר מאשר בדיקת העברת הזנות למספר גדלי צעדים?
@Josh: אני יכול להיות מבולבל בשאלתך, אבל נקודת המפתח היא שאפילו הערכת מטרת היעד * פעם אחת * מתכווננת לגודל המדגם, בעוד אצווה אחת לא.אז פשוט לבצע בדיקה יחידה של פונקציית האובדן הוא לעתים קרובות יקר יותר ** ** ** מאשר שלב ה- SGD בפועל, כלומר אתה מאבד מיד את היתרון של SGD: עדכונים מהירים.
תודה @CliffAB אבל SGD גם לא מעריכה טכנית את ההפסד (על האצווה) בכל שלב כצעד הראשון בתפיסת גב לחישוב שיפוע?כלומר, אני לא מציע לחפש קווים במעקב אחרי ההפסד המלא, אלא על ההפסד במנה (אני יודע שזה לא יהיה חיפוש בקו אחר המפסד כשלעצמו)
@Josh: אה, בסדר, אתה מציע לחשב את ההפסד על פני המדגם.לרוע המזל זה בדרך כלל לא רעיון טוב, עיין בפסקה האחרונה של תשובתי.
תודה @CliffAB - כן, אבל אני לא עוקב.SGD עצמו דורש גם "לחשב את ההפסד על פני המדגם", לא?(כלומר backpropagation דורש לדעת את השגיאה על המדגם, כלומר את תפוקת האובדן על המדגם).אם חסר לי משהו ברור כאן אנא יידע אותי.שמח לעקוב אחר שאלה נפרדת להבהרה נוספת אם מועילה.שוב תודה.
@Josh: המפתח הוא שאתה * לא * רוצה לייעל את ההפסד על פני האצווה הקטנה.זה לעולם לא יתכנס ובדרך כלל יספק הערכות גרועות מאוד.מצד שני, שימוש ב- SGD עם קצב למידה קטן יתקרב מאוד לאומדן האופטימלי.
בסדר תודה ש- @CliffAB הבנתי את זה, אז רק כדי להיות ברור, ואילו הערכת האובדן עבור המדגם היא ריאלית מבחינה חישובית ו"על תקן "במורכבות עם מה שכבר צריך לחשב ** כל שלב של SGD ** (תקן אותי אם אניטועה), מה שאתה אומר זה יכול להיות שזה לא רעיון טוב מכיוון שהוא עלול לא להתכנס ולספק הערכות גרועות.האם הבנתי את זה נכון?רק מנסה לוודא שאנחנו תופסים את הסיבות הנכונות לטובת השארת רקורד טוב כאן לאחרים שעשויים לקרוא את זה ולעזור בשיפור זה לאורך זמן.
Tim
2018-01-05 00:47:37 UTC
view on stackexchange narkive permalink

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

תשובה טובה (+1) אבל זה יכול להיות אפילו טוב יותר (שפע?) אם הוספת דיון מדוע אנחנו עדיין מסתמכים כל כך הרבה על SGD, גם אם אדם, AdaGrad ו- RMSProp קיימים כבר לא מעט שנים.
+1 כאשר אתה אומר "קצב למידה מסתגל" האם משתמשים בשיטות חיפוש קווים?
@DeltaIV: כל השיטות המהודרות "האחרות" בנויות על גבי SGD.הנושא העיקרי הוא שהשיטות האחרות מנצלות את הידע המקומי בכדי לבצע קפיצות יעילות יותר, ולא רק נקודות דגימה אקראיות לחישוב שיפוע.אבל SGD הוא כל כך פשוט ומהיר, וזה לא נורא לגמרי בפני עצמו.
@AlexR.טעית.השיטות האחרות אינן רק שיפורים בהשוואה ל- SGD.כולם מכלילים * גרוע * יותר מ- SGD.בחר כל ארכיטקטורה אחרונה ונסה לאמן אותה ב- ImageNet עם אדם (למשל).אני מהמר ששימוש ב- SGD אקבל שגיאת הכללה טובה יותר ממך, עבור אותו מספר איטרציות, כל עוד נגיע למשטר הרמה.זה ידוע: ראה [כאן] (https://arxiv.org/abs/1712.07628) לניסיון (כושל בעצם) להתגבר על זה
@AlexR.העניין הוא שלא ש- SGD הוא פשוט ו / או מהיר.הפשטות לא משנה, מכיוון שכל הספריות הראויות מיישמות את SGD, Adam, AdaGrad ו- RMSProp (ועוד, לפעמים).המהירות חשובה עוד יותר, מכיוון שזמן ההוצאה של אדם, למשל, לחישוב העדכונים ברמת הפרמטר הוא אינסופי בהשוואה לזמן האימון הכולל של מודל כמו ResNet.הנקודה היחידה היא שמסיבה כלשהי איננו מבינים עד היום לחלוטין, SGD מכליל טוב יותר מהם.אז בעצם אם אתה רוצה לנצח את SOTA, לעתים קרובות אתה נאלץ * להשתמש בו, או לפחות לעבור אליו בהמשך במהלך האימון.
@DeltaV: אני מניח שדיברנו על דברים שונים.שיטות ה- SGD המהודרות מהירות ללא עוררין מבחינת התכנסות ל * משהו * ופחות נתקעות במינימה המקומית.האם הדגמים כללים היטב או לא זה נושא אחר לגמרי.העניין הוא ש- SGD וניל עם קצב למידה בתכנית קבועה בלבד הוא ככל הנראה * לא * הפיתרון הטוב ביותר לאופטימיזציות אלה.העיתון שציטטתם מציע תכנית מעורבת של אדם ו- SGD, בדיוק משום שאדם טוב בהרבה בהתחלה ומכיוון ש- SGD מתפקד טוב יותר בהמשך.
@DeltaIV: בנושא למה, הסבר אחד ממש מסודר הוא באמצעות SGD מבוסס אנטרופיה.ראה מאמר זה: https://arxiv.org/abs/1611.01838.pdf
@AlexR.זה לא נושא אחר לגמרי: למעשה, זה נושא מאוד קשור.ראה את כל הספרות על מינימום חד לעומת רחב.והנייר שציטטתי מראה בדיוק את זה: על ידי ערבוב בין אדם לבין SGD, הם לא מצליחים להשיג את המהירות של אדם בשלב הראשוני של האופטימיזציה, ושגיאת ההכללה הנמוכה יותר של SGD בשלב הסופי (איור 4) בכל המקרים פרט לשני המקרים,אולם הם המקרים היחידים בהם אדם כבר תאם את שגיאת ההכללה של SGD.כך שבשני המקרים הללו הם מתקרבים למעשה * גרוע * יותר מאדם, ובכל המקרים האחרים זה לא תואם את ההכללה 1 /
2 / שגיאה של SGD.לכן המאמר בעצם מאכזב, למרות שהוא יכול להצביע על כיוון למחקר עתידי.לא ידעתי על SGD מבוסס אנטרופיה ואני מודה לך על הקישור, אני אקרא אותו.
@DeltaIV מעניין מאוד.פתחתי את העיתון אליו קישרת, והוא מתייחס ל [Wilson et al 2017] (https://arxiv.org/abs/1705.08292) הדפסה מוקדמת לטענה ש- SGD כללית יותר טוב מאדם וכו ';אז כשאתה אומר שזה "ידוע", אתה מתכוון ידוע מאז חצי שנה, נכון?
אלוהים, אולי אני פשוט זקן או משהו כזה ... אבל המאמרים האלה שמשווים את השגיאה מחוץ לדגימה עם אלגוריתמי אופטימיזציה שונים הם פשוט בלגן גדול.בוא נתקשר לאנליסטים המספריים ונראה אם הם יכולים להציל אותנו.
@amoeba :-P לא, אני לא מתכוון לזה.ראשית כל, העובדה ש- SGD הכללה טוב יותר הייתה ידועה בקהילה הרבה לפני העיתון של וילסון ואח '.נייר Adagrad הוא משנת 2011, Adadelta הוא מ 2012 ואדם הוא משנת 2014: ResNet בשנת 2015 ו- DenseNet בשנת 2016 כולם משתמשים ב- SGD.כל אלה הם חבר'ה חכמים המעודכנים יותר ב- Deep Learning ממני (ורבים אחרים כאן), שכל הדגמים שלהם ניצחו את SOTA ב- ImageNet, אז למה כולם השתמשו ב- SGD אם השיטות ההסתגלותיות האלה היו כל כך טובות?שנית, אם אנו באמת זקוקים למאמר לתארוך הגילוי ש- SGD מכליל טוב יותר, זה יהיה 1 /
2 / https://arxiv.org/abs/1609.04836, אז לפני יותר משנה.אבל זה היה "ידוע נפוץ" לפני כן ... וגם היום קשה להכות את יכולת ההכללה של SGD.ראה למשל https://openreview.net/forum?id=HJjePwx0- המשתמשת בשיטת אזור אמון (אשר, אתה תסכים איתי, אינן חדשות חמות בעולם האופטימיזציה).הם עדיין מתקשים להוכיח ששיטת ה- TR הסטוכסטית שלהם כללית יותר טוב מ- SGD.SGD הוא אלגוריתם אופטימיזציה מחורבן, אך "טוב באופן בלתי סביר" בהכשרת DNNs (לפחות CNN) עם שגיאת הכללה נמוכה.
@DeltaIV תודה.אני לא עושה הרבה מהלמידה העמוקה בעצמי, ולא הייתי מודע לכך בכלל.בשנת 2012 בערך כשצפיתי בהרצאות Coursera של הינטון, הוא דגל בעיקר ב- RMSprop ובשנים האחרונות 1-2 ההתרשמות שלי הייתה שכולם משתמשים באדם (המחליף את RMSprop, על פי מאמר אדם).כאשר [שיחקתי עם קוד אוטומטי] (https://stats.stackexchange.com/a/307746/28666) בשנה שעברה, הבנתי שאדם עובד הרבה יותר מהר מ- SGD, ומאז פשוט הנחתי שאדם הוא ברירת מחדל בימינו.
@amoeba אה קורס הינטון!בחירה מצויינת.אני אולי טועה אבל אני חושב שהינטון מעולם לא פרסם מאמר ספציפי ב- RMSProp, "האגדה" מספרת שהוא בעצם הציג אותו בקורס קורסרה.אדם אכן מהיר בהרבה מ- SGD בהפחתת השגיאה בהתחלה, אך משום מה זה מסתיים במינימום סופי המתאים לשגיאה גבוהה יותר במערך הבדיקה מאשר SGD.זה ממש מצער - אבל אני חושב שנמצא משהו טוב יותר מ- SGD עד 2020.
amoeba + deltaIV: בבית הספר היסודי, היועץ שלי דן בשלב מסוים עד כמה עצירה מוקדמת היא סוג (לא ממושמע למדי) של רגולציה;בעצם הרעיון הוא שלקראת סוף האלגוריתם, אתה פשוט מתאים לרעש.באופן אישי לא ראיתי טיעונים משכנעים בעיתונים שנדונו כי משהו אחר מתרחש כאשר המחברים טוענים "תוצאות SGD> תוצאות שיטות הסתגלות";SGD הוא איטי יותר, כך שהוא פחות תורן לאחר 100 תקופות.אבל למען האמת, זה מבוסס על רחיפה מהירה.
@CliffAB אני זוכר בהרצאתו של אנדרו נג, הוא הזכיר כי עצירה מוקדמת אינה טובה, מכיוון שהיא מערבבת הרבה צמרות יחד (לא מכוונת "פרמטרים היפר באמצעות אורתוגונליזציה").באופן ספציפי, הוא חושב שעלינו להקטין תחילה את הטיה של המודל (לעשות טוב באימונים) ואז להפחית את השונות של המודל (לנסות להכליל טוב יותר בבדיקות).הפסקת ערבוב מוקדם של ערבוב הדברים הללו ומקשה על איתור באגים.
@CliffAB כן, ניתן לראות בבירור את הקשר בין עצירה מוקדמת להסדרה לריבועים קטנים ביותר, כאשר [ירידת שיפוע פועלת על בסיס הערך העצמי] (https://stats.stackexchange.com/a/321617/28666) וערכים עצמיים קטנים הםאחרונים להתכנס;ואילו עונש רכס מעניש גם ערכים עצמיים קטנים.עכשיו רק הסתכלתי במהירות על וילסון ואח '.מקושרים לעיל, אך לפחות בדוגמה הקטנה ביותר שלהם הריבועים SGD לעומת אדם שונה אינו * לא * מוסבר על ידי עצירה מוקדמת לעומת מאוחרת.הם טוענים שהם מתכנסים לפתרונות שונים.
@CliffAB אני מציינת אמבה שנייה כי התאמת יתר אינה הסבר מתקבל על הדעת להבדל בביצועים.ראה למשל https://arxiv.org/pdf/1609.04836.pdf סעיף 2.2 ואילך, שם הם שוללים באופן ספציפי התאמה יתירה כגורם שורש.במקום זאת, נראה * שאדם, או לפי SGD עם קבוצות גדולות, מוצא מינימום חד יותר.הם לא יכולים לטעון זאת בוודאות מכיוון שלא ניתן למדוד את החדות בצורה מדויקת (זה ידרוש מאמץ חישובי עצום), אך המחברים משתמשים בקירוב, כך שהם לפחות מראים כמה ראיות סבירות.
ההערות אינן לדיון מורחב;השיחה הזו הועברה לצ'אט (http://chat.stackexchange.com/rooms/71339/discussion-on-answer-by-tim-are-line-search-methods-used-in-deep-learning-למה- n).


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