Cu siguranță, să începem cu articolul.
Modelele de deep learning au devenit un aspect semnificativ al tehnologiei actuale, iar diferiți algoritmi de optimizare, precum Adam Optimizer, joacă un rol crucial în execuția lor. Keras, o bibliotecă Python open source gratuită, puternică și ușor de utilizat, pentru dezvoltarea și evaluarea modelelor de deep learning, încorporează bibliotecile eficiente de calcul numeric Theano și TensorFlow. Importanța ajustării ratei de învățare în astfel de algoritmi de optimizare este primordială, deoarece poate influența direct procesul de învățare al modelului. În acest articol, vom discuta despre cum să degradăm rata de învățare în optimizatorul Adam din Keras, într-un mod pas cu pas. Aici vom acoperi, de asemenea, bibliotecile și funcțiile implicate în acest proces.
Necesitatea ajustării ratei de învățare
Rata de învățare este un hiperparametru important în algoritmii de optimizare, inclusiv în optimizatorul Adam . Aceasta determină dimensiunea pasului la fiecare iterație în timp ce se deplasează spre minimul funcției de pierdere. Mai exact, o rată de învățare mai mică necesită mai multe epoci de antrenament, având în vedere pașii mai mici în actualizările de ponderi, în timp ce o rată de învățare mai mare ar putea atinge un punct de convergență mai rapid, dar riscă să depășească minimul funcției de pierdere.
Prin urmare, este o abordare comună de a ajusta și degrada rata de învățare pe epoci, adesea denumită scădere a ratei de învățare. Scăderea ratei de învățare asigură că modelul de învățare ajunge la fundul funcției de pierdere, evitând pași mari în faza ulterioară de antrenament care ar putea provoca fluctuații semnificative.
Implementarea scăderii ratei de învățare în Keras
În Keras, această ajustare poate fi realizată cu ajutorul funcțiilor de apel invers 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, în conformitate cu epocile, poate modifica rata de învățare. În timp ce, ReduceLROnPlateau monitorizează o cantitate și dacă nu se observă nicio îmbunătățire pentru un număr de „răbdare” de epoci, rata de învățare este redusă.
Lucrul cu Adam Optimizer
Când avem de-a face cu optimizatorul Adam, inițializam instanța acestuia specificând rata de învățare. În timpul procesului de compilare a modelului, introducem această instanță de optimizare.
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)
În codul de mai sus, îi atribuim adam_opt optimizatorul Adam cu o rată de învățare de 0.001 și o rată de dezintegrare de 1e-6.
În concluzie , rata de învățare reglează modul în care navigăm către funcția de cost minim. Prin ajustarea eficientă a acestei rate de învățare, putem îmbunătăți performanța și eficiența modelului nostru. Combinația dintre Keras și Python face ca ajustarea ratelor de învățare să fie o sarcină simplă, oferindu-ne mai mult control asupra proceselor noastre de optimizare a modelului.