CommencerCommencer gratuitement

Éviter les minima locaux

L’exercice précédent a montré à quel point il est facile de rester coincé dans des minima locaux. Nous avions un problème d’optimisation simple à une variable, et la descente de gradient n’a tout de même pas trouvé le minimum global lorsqu’il fallait d’abord traverser des minima locaux. Une façon d’éviter ce problème est d’utiliser le momentum, qui permet à l’optimiseur de franchir les minima locaux. Nous allons à nouveau utiliser la fonction de perte du précédent exercice, qui a été définie et est disponible sous le nom loss_function().

Le graphique représente une fonction d’une variable contenant plusieurs minima locaux et un minimum global.

Plusieurs optimiseurs dans tensorflow disposent d’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 cette fois à la même valeur. Par ailleurs, keras.optimizers.RMSprop() a également été importé pour vous depuis tensorflow.

Cet exercice fait partie du cours

Introduction à TensorFlow en Python

Afficher le cours

Instructions

  • Configurez l’opération opt_1 avec un taux d’apprentissage (learning_rate) de 0,01 et un momentum de 0,99.
  • Définissez opt_2 pour utiliser l’optimiseur RMSprop (root mean square propagation) 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_1 et x_2 en tableaux numpy.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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(____, ____)
Modifier et exécuter le code