Evitar los mínimos locales
El problema anterior mostraba lo fácil que es quedarse atascado en mínimos locales. Teníamos un problema de optimización simple en una variable y el descenso gradiente seguía sin dar con el mínimo global cuando teníamos que recorrer primero los mínimos locales. Una forma de evitar este problema es utilizar el impulso, que permite al optimizador superar los mínimos locales. Utilizaremos de nuevo la función de pérdida del problema anterior, que se ha definido y está a tu disposición en loss_function()
.
Varios optimizadores de tensorflow
tienen un parámetro de impulso, entre ellos SGD
y RMSprop
. En este ejercicio utilizarás RMSprop
. Observa que x_1
y x_2
se han inicializado esta vez con el mismo valor. Además, keras.optimizers.RMSprop()
también ha sido importado para ti desde tensorflow
.
Este ejercicio forma parte del curso
Introducción a TensorFlow en Python
Instrucciones de ejercicio
- Configura la operación
opt_1
para que utilice una tasa de aprendizaje de 0,01 y un impulso de 0,99. - Configura
opt_2
para que utilice el optimizador de propagación cuadrática media (RMS) con una tasa de aprendizaje de 0,01 y un impulso de 0,00. - Define la operación de minimización para
opt_2
. - Imprime
x_1
yx_2
como matricesnumpy
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# 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(____, ____)