Løst: adam optimizer keras læringshastighet forringes

Siste oppdatering: 09/25/2023

Absolutt, la oss komme i gang med artikkelen.

Dyp læringsmodeller har blitt et viktig aspekt av teknologi i dagens tid, og forskjellige optimaliseringsalgoritmer som Adam Optimizer spiller en avgjørende rolle i utførelsen av dem. Keras, et kraftig og brukervennlig gratis Python-bibliotek med åpen kildekode for utvikling og evaluering av dyp læringsmodeller, omslutter de effektive numeriske beregningsbibliotekene Theano og TensorFlow. Viktigheten av å justere læringshastigheten i slike optimaliseringsalgoritmer er avgjørende, da det direkte kan påvirke modellens læringsprosess. I denne artikkelen skal vi diskutere hvordan man kan redusere læringshastigheten i Adam Optimizer i Keras på en trinnvis måte. Her vil vi også dekke biblioteker og funksjoner involvert i denne prosessen.

Nødvendigheten av justering av lærehastighet

Læringshastighet er en viktig hyperparameter i optimaliseringsalgoritmer, inkludert Adam-optimalisatoren . Den bestemmer trinnstørrelsen ved hver iterasjon mens den beveger seg mot minimumet til tapsfunksjonen. Mer spesifikt krever en lavere læringshastighet flere treningsepoker gitt de mindre trinnene i vektoppdateringene, mens en større læringshastighet kan nå et konvergenspunkt raskere, men risikerer å overskride minimumet til tapsfunksjonen.

Derfor er det en vanlig tilnærming å justere og degradere læringsraten over epoker, ofte referert til som læringshastighetsfall. Forfall av læringshastighet sikrer at læringsmodellen kommer til bunns i tapsfunksjonen, og unngår store trinn i den senere treningsfasen som kan forårsake betydelige svingninger.

Implementering av Learning Rate Decay i Keras

I Keras kan denne justeringen oppnås ved hjelp av LearningRateScheduler og ReduceLROnPlateau tilbakeringingsfunksjoner.

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, i samsvar med epoker, kan endre læringshastigheten. Mens ReduceLROnPlateau overvåker en mengde, og hvis ingen forbedring sees for et "tålmodighets" antall epoker, reduseres læringsraten.

Jobber med Adam Optimizer

Når vi har å gjøre med Adam optimizer, initialiserer vi forekomsten ved å spesifisere læringshastigheten. Under modellkompileringsprosessen legger vi inn denne optimeringsforekomsten.

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)

I koden ovenfor tilordner vi adam_opt Adam-optimalisatoren med en læringsrate på 0.001 og en decay rate på 1e-6.

Avslutningsvis regulerer læringsraten hvordan vi navigerer mot minimumskostfunksjonen. Ved å justere denne læringsraten effektivt kan vi forbedre modellens ytelse og effektivitet. Kombinasjonen av Keras med Python gjør det enkelt å justere læringsrater, noe som gir oss mer kontroll over modelloptimaliseringsprosessene våre.

Relaterte innlegg: