Problème de gradient explosif
Dans la vidéo, vous avez découvert deux problèmes pouvant survenir avec les modèles RNN : les gradients qui s’annulent et les gradients qui explosent.
Cet exercice explore le problème du gradient explosif, en montrant que la dérivée d’une fonction peut croître de façon exponentielle, et comment le résoudre avec une technique simple.
Les données sont déjà chargées dans l’environnement sous les noms X_train, X_test, y_train et y_test.
Vous utiliserez l’optimiseur Stochastic Gradient Descent (SGD) et la fonction de perte Mean Squared Error (MSE).
Dans la première étape, vous observerez l’explosion du gradient en calculant le MSE sur les jeux d’entraînement et de test. À l’étape 2, vous modifierez l’optimiseur en utilisant le paramètre clipvalue pour corriger le problème.
Dans Keras, Stochastic Gradient Descent est disponible sous le nom SGD.
Cet exercice fait partie du cours
Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Create a Keras model with one hidden Dense layer
model = Sequential()
model.add(Dense(25, input_dim=20, activation='relu', kernel_initializer=he_uniform(seed=42)))
model.add(Dense(1, activation='linear'))
# Compile and fit the model
model.compile(loss='mean_squared_error', optimizer=____(learning_rate=0.01, momentum=0.9))
history = model.fit(X_train, y_train, validation_data=(____, ____), epochs=100, verbose=0)
# See Mean Square Error for train and test data
train_mse = model.____(X_train, y_train, verbose=0)
test_mse = model.evaluate(X_test, y_test, verbose=0)
# Print the values of MSE
print('Train: %.3f, Test: %.3f' % (____, ____))