ComenzarEmpieza gratis

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().

La gráfica es de una función de una sola variable que contiene múltiples mínimos locales y un mínimo global.

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

Ver curso

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 y x_2 como matrices numpy.

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(____, ____)
Editar y ejecutar código