Problema gradientului care dispare
O altă problemă posibilă legată de gradienți este cea în care aceștia dispar, adică tind către zero. Aceasta este o problemă mult mai greu de rezolvat, deoarece nu este ușor de detectat. Dacă funcția de pierdere nu se îmbunătățește la fiecare pas, este pentru că gradienții au ajuns la zero și nu au actualizat ponderile? Sau este pentru că modelul nu reușește să învețe?
Această problemă apare mai frecvent în modelele RNN atunci când este necesară o memorie de lungă durată (în cazul propozițiilor lungi).
În acest exercițiu vei observa problema pe datele IMDB, selectând propoziții mai lungi. Datele sunt încărcate în variabilele X și y, împreună cu clasele Sequential, SimpleRNN, Dense și matplotlib.pyplot ca plt. Modelul a fost pre-antrenat timp de 100 de epoci, iar ponderile și istoricul său sunt stocate în fișierul model_weights.h5 și variabila history.
Acest exercițiu face parte din cursul
Rețele Neuronale Recurente (RNN) pentru Modelare a Limbajului cu Keras
Instrucțiuni pentru exercițiu
- Adaugă un strat
SimpleRNNla model. - Încarcă ponderile pre-antrenate în model folosind metoda
.load_weights(). - Adaugă acuratețea datelor de antrenament, disponibilă în atributul
'acc', la grafic. - Afișează graficul folosind metoda
.show().
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Create the model
model = Sequential()
model.add(____(units=600, input_shape=(None, 1)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])
# Load pre-trained weights
model.____('model_weights.h5')
# Plot the accuracy x epoch graph
plt.plot(history.history[____])
plt.plot(history.history['val_acc'])
plt.legend(['train', 'val'], loc='upper left')
plt.____()