Éviter les minimums locaux
Le problème précédent a montré à quel point il est facile de rester coincé dans des minimums locaux. Nous avions un problème d'optimisation simple à une variable et, malgré tout, la descente de gradient n'a pas réussi à trouver le minimum global parce qu'il fallait d'abord traverser des minimums locaux. Une façon d'éviter ce problème consiste à utiliser le momentum, qui permet à l'optimiseur de franchir les minimums locaux. Nous allons de nouveau utiliser la fonction de perte du problème précédent, qui a été définie et mise à votre disposition sous le nom loss_function().

Plusieurs optimiseurs dans tensorflow ont un paramètre de momentum, notamment SGD et RMSprop. Vous utiliserez RMSprop dans cet exercice. Notez que x_1 et x_2 ont été initialisés à la même valeur cette fois-ci. De plus, keras.optimizers.RMSprop() a déjà été importé pour vous à partir de tensorflow.
Cette activité fait partie du cours
Introduction à TensorFlow en Python
Instructions de l’exercice
- Configurez l'opération
opt_1pour utiliser un taux d'apprentissage (learning rate) de 0.01 et un momentum de 0.99. - Configurez
opt_2pour utiliser l'optimiseur RMSprop (propagation du carré moyen) avec un taux d'apprentissage de 0.01 et un momentum de 0.00. - Définissez l'opération de minimisation pour
opt_2. - Affichez
x_1etx_2sous forme de tableauxnumpy.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Initialize x_1 and x_2
x_1 = Variable(0.05,float32)
x_2 = Variable(0.05,float32)
# Define the optimization operation for opt_1 and opt_2
opt_1 = keras.optimizers.RMSprop(learning_rate=____, momentum=____)
opt_2 = ____
for j in range(100):
opt_1.minimize(lambda: loss_function(x_1), var_list=[x_1])
# Define the minimization operation for opt_2
____
# Print x_1 and x_2 as numpy arrays
print(____, ____)