Vyřešeno: Snížení rychlosti učení keras optimalizátoru Adama

Poslední aktualizace: 09/25/2023

Jistě, začneme s článkem.

Modely hlubokého učení se v dnešní době staly významným aspektem technologií a různé optimalizační algoritmy, jako je Adam Optimizer, hrají v jejich provádění klíčovou roli. Keras, výkonná a snadno použitelná bezplatná open source knihovna Pythonu pro vývoj a vyhodnocování modelů hlubokého učení, obklopuje efektivní knihovny pro numerické výpočty Theano a TensorFlow. Důležitost úpravy rychlosti učení v takových optimalizačních algoritmech je prvořadá, protože může přímo ovlivnit proces učení modelu. V tomto článku si probereme, jak krok za krokem snížit rychlost učení v optimalizátoru Adam v Kerasu. Zde se také budeme zabývat knihovnami a funkcemi zapojenými do tohoto procesu.

Nutnost úpravy míry učení

Rychlost učení je důležitým hyperparametrem v optimalizačních algoritmech, včetně optimalizátoru Adam . Určuje velikost kroku v každé iteraci při pohybu směrem k minimu ztrátové funkce. Konkrétně nižší rychlost učení vyžaduje více trénovacích epoch vzhledem k menším krokům v aktualizacích vah, zatímco vyšší rychlost učení může dosáhnout bodu konvergence rychleji, ale riskuje překročení minima ztrátové funkce.

Jde tedy o běžný přístup k úpravě a degradaci rychlosti učení v průběhu epoch, často označované jako pokles rychlosti učení. Pokles rychlosti učení zajišťuje, že model učení se dostane na dno ztrátové funkce, čímž se vyhne velkým krokům v pozdější fázi tréninku, které by mohly způsobit výrazné výkyvy.

Implementace Learning Rate Decay v Keras

V Keras lze této úpravy dosáhnout pomocí funkcí LearningRateScheduler a ReduceLROnPlateau zpětného volání.

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 může v souladu s epochami měnit rychlost učení. Zatímco ReduceLROnPlateau monitoruje množství, a pokud není pozorováno žádné zlepšení pro „trpělivý“ počet epoch, rychlost učení se sníží.

Práce s Adamem Optimizerem

Při práci s optimalizátorem Adam inicializujeme jeho instanci zadáním rychlosti učení. Během procesu kompilace modelu zadáme tuto instanci optimalizátoru.

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)

Ve výše uvedeném kódu přiřazujeme adam_opt optimalizátoru Adam s rychlostí učení 0.001 a rychlostí úpadku 1e-6.

Závěrem lze říci , že rychlost učení reguluje, jak se orientujeme v funkci minimálních nákladů. Efektivní úpravou této rychlosti učení můžeme zlepšit výkon a efektivitu našeho modelu. Kombinace Kerasu s Pythonem usnadňuje úpravu rychlosti učení, což nám dává větší kontrolu nad procesy optimalizace modelu.

Související příspěvky: