Vsekakor, začnimo s člankom.
Modeli globokega učenja so v današnji dobi postali pomemben vidik tehnologije, različni optimizacijski algoritmi, kot je Adam Optimizer, pa igrajo ključno vlogo pri njihovem izvajanju. Keras, zmogljiva in enostavna za uporabo brezplačna odprtokodna knjižnica Python za razvoj in vrednotenje modelov globokega učenja, združuje učinkovite knjižnice za numerično računanje Theano in TensorFlow. Pomen prilagajanja hitrosti učenja v takšnih optimizacijskih algoritmih je izjemnega pomena, saj lahko neposredno vpliva na proces učenja modela. V tem članku bomo razpravljali o tem, kako korak za korakom zmanjšati hitrost učenja v optimizatorju Adam v Kerasu. Tukaj bomo obravnavali tudi knjižnice in funkcije, ki sodelujejo v tem procesu.
Potreba po prilagoditvi stopnje učenja
Stopnja učenja je pomemben hiperparameter v optimizacijskih algoritmih, vključno z optimizatorjem Adam . Določa velikost koraka pri vsaki iteraciji, medtem ko se premika proti minimumu funkcije izgub. Natančneje, nižja stopnja učenja zahteva več učnih epoh glede na manjše korake pri posodobitvah uteži, medtem ko lahko večja stopnja učenja hitreje doseže točko konvergence, vendar tvega preseganje minimuma funkcije izgub.
Zato je običajen pristop prilagajanja in poslabšanja stopnje učenja skozi obdobja, kar se pogosto imenuje upad stopnje učenja. Zmanjšanje stopnje učenja zagotavlja, da učni model pride do dna funkcije izgube, pri čemer se izogne velikim korakom v poznejši fazi usposabljanja, ki bi lahko povzročili znatna nihanja.
Implementacija upadanja hitrosti učenja v Kerasu
V Kerasu je to prilagoditev mogoče doseči s pomočjo funkcij za povratni klic LearningRateScheduler in 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 lahko v skladu z epohami spreminja hitrost učenja. Medtem ko ReduceLROnPlateau spremlja količino in če v 'potrpežljivem' številu obdobij ni opaziti izboljšav, se stopnja učenja zmanjša.
Delo z Adam Optimizerjem
Ko imamo opravka z optimizatorjem Adam, inicializiramo njegovo instanco s podajanjem stopnje učenja. Med postopkom prevajanja modela vnesemo ta primerek optimizatorja.
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)
V zgornji kodi dodeljujemo adam_opt optimizator Adam s stopnjo učenja 0.001 in stopnjo razpada 1e-6.
Skratka , stopnja učenja uravnava, kako se približujemo funkciji minimalnih stroškov. Z učinkovitim prilagajanjem te stopnje učenja lahko izboljšamo delovanje in učinkovitost našega modela. Kombinacija Kerasa in Pythona olajša prilagajanje stopenj učenja, kar nam daje večji nadzor nad procesi optimizacije modela.