Problème de gradient explosif
Dans l'exercice vidéo, vous avez découvert deux problèmes pouvant survenir lors de l'utilisation de modèles RNN : les problèmes de gradient disparu et de gradient explosif.
Cet exercice explore le problème de l'explosion du gradient, en montrant que la dérivée d'une fonction peut augmenter de manière exponentielle, et comment le résoudre à l'aide d'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 un optimiseur Stochastic Gradient Descent (SGD) et l'erreur quadratique moyenne (MSE) comme fonction de perte.
Dans un premier temps, vous observerez l'explosion du gradient en calculant l'erreur quadratique moyenne (MSE) sur les ensembles d'entraînement et de test. À l'étape 2, vous allez modifier l'optimiseur à l'aide du paramètre « clipvalue
» afin de résoudre le problème.
La descente stochastique du gradient dans Keras est chargée sous le nom d'SGD
.
Cet exercice fait partie du cours
Réseaux neuronaux 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' % (____, ____))