Riješeno: adam optimizer keras rate rate degrade

Zadnje ažuriranje: 09/25/2023

Svakako, krenimo s člankom.

Modeli dubokog učenja postali su značajan aspekt tehnologije u današnjoj eri, a različiti optimizacijski algoritmi poput Adam Optimizera igraju ključnu ulogu u njihovoj izvedbi. Keras, moćna i jednostavna besplatna Python knjižnica otvorenog koda za razvoj i procjenu modela dubokog učenja, obuhvaća učinkovite numeričke računske biblioteke Theano i TensorFlow. Važnost prilagodbe stope učenja u takvim algoritmima optimizacije je od najveće važnosti jer može izravno utjecati na proces učenja modela. U ovom ćemo članku raspravljati o tome kako smanjiti stopu učenja u Adamovom optimizatoru u Kerasu korak po korak. Ovdje ćemo također pokriti knjižnice i funkcije uključene u ovaj proces.

Nužnost prilagodbe brzine učenja

Stopa učenja je važan hiperparametar u optimizacijskim algoritmima, uključujući Adamov optimizator. Određuje veličinu koraka u svakoj iteraciji dok se kreće prema minimumu funkcije gubitka. Konkretno, niža stopa učenja zahtijeva više epoha treninga s obzirom na manje korake u ažuriranju težine, dok bi veća stopa učenja mogla brže doseći točku konvergencije, ali riskira prekoračenje minimuma funkcije gubitka.

Stoga je uobičajeni pristup prilagodbe i degradacije stope učenja tijekom epoha, što se često naziva pad stope učenja. Pad stope učenja osigurava da model učenja dođe do dna funkcije gubitka, izbjegavajući velike korake u kasnijoj fazi obuke koji bi mogli uzrokovati značajne fluktuacije.

Implementacija opadanja brzine učenja u Kerasu

U Kerasu se ova prilagodba može postići uz pomoć funkcija povratnog poziva LearningRateScheduler i 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, u skladu s epohama, može promijeniti brzinu učenja. Dok ReduceLROnPlateau nadzire količinu i ako se ne vidi poboljšanje za 'strpljiv' broj epoha, stopa učenja se smanjuje.

Rad s Adamom Optimizer

Kada imamo posla s Adamovim optimizatorom, inicijaliziramo njegovu instancu određivanjem brzine učenja. Tijekom procesa kompilacije modela unosimo ovu instancu optimizatora.

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)

U gornjem kodu dodjeljujemo adam_opt Adam optimizatoru sa stopom učenja od 0.001 i stopom pada od 1e-6.

U zaključku, stopa učenja regulira način na koji se krećemo prema funkciji minimalnog troška. Učinkovitim prilagođavanjem ove stope učenja možemo poboljšati performanse i učinkovitost našeg modela. Kombinacija Kerasa i Pythona čini jednostavan zadatak prilagođavanja stopa učenja dajući nam veću kontrolu nad našim procesima optimizacije modela.

Povezani postovi: