נפתרה: אדם אופטימיזר קרס קצב למידה מדרדר

העדכון אחרון: 09/25/2023

בהחלט, בואו נתחיל עם המאמר.

מודלים של למידה עמוקה הפכו להיבט משמעותי בטכנולוגיה בעידן של ימינו, ואלגוריתמי אופטימיזציה שונים כמו Adam Optimizer ממלאים תפקיד מכריע בביצועם. Keras, ספריית Python חינמית וחזקה בקוד פתוח, קלה לשימוש, לפיתוח והערכת מודלים של למידה עמוקה, עוטפת את ספריות החישוב הנומריות היעילות Theano ו-TensorFlow. חשיבותה של התאמת קצב הלמידה באלגוריתמי אופטימיזציה כאלה היא עליונה, מכיוון שהיא יכולה להשפיע ישירות על תהליך הלמידה של המודל. במאמר זה, נדון כיצד להפחית את קצב הלמידה ב-Adam Optimizer ב-Keras באופן שלב אחר שלב. כאן נסקור גם ספריות ופונקציות המעורבות בתהליך זה.

ההכרח בהתאמת קצב הלמידה

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

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

יישום של דעיכת קצב למידה בקרס

ב-Keras, ניתן להשיג התאמה זו בעזרת פונקציות התקשרות חוזרת של LearningRateScheduler ו-ReduceLROnPlateau.

from keras.callbacks import LearningRateScheduler
import numpy as np

# Learning rate schedule
initial_learning_rate = 0.1
decay = initial_learning_rate / epochs

def lr_time_based_decay(epoch, lr):
    return lr * 1 / (1 + decay * epoch)

# Fit the model on the batches generated
model.fit(X_train, Y_train, epochs=epochs,callbacks=[LearningRateScheduler(lr_time_based_decay, verbose=1)])

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

עבודה עם Adam Optimizer

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

from keras.optimizers import Adam

# Applying learning rate decay 
adam_opt = Adam(lr=0.001, decay=1e-6)
model.compile(loss='binary_crossentropy', optimizer=adam_opt)

בקוד למעלה, אנו מקצים ל-adam_opt את האופטימיזציה של Adam עם קצב למידה של 0.001 וקצב דעיכה של 1e-6.

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

הודעות קשורות: