Evitare i minimi locali
Nel problema precedente hai visto quanto sia facile rimanere bloccati in minimi locali. Avevamo un semplice problema di ottimizzazione in una variabile e il gradient descent non è comunque riuscito a trovare il minimo globale perché prima doveva attraversare minimi locali. Un modo per evitare questo problema è usare il momentum, che permette all'ottimizzatore di superare i minimi locali. Useremo di nuovo la funzione di perdita del problema precedente, che è stata definita ed è disponibile come loss_function().

Diversi ottimizzatori in tensorflow hanno un parametro di momentum, tra cui SGD e RMSprop. In questo esercizio userai RMSprop. Nota che questa volta x_1 e x_2 sono stati inizializzati allo stesso valore. Inoltre, keras.optimizers.RMSprop() è già stato importato per te da tensorflow.
Questo esercizio fa parte del corso
Introduzione a TensorFlow in Python
Istruzioni dell'esercizio
- Imposta l'operazione
opt_1con un learning rate di 0.01 e un momentum di 0.99. - Imposta
opt_2per usare l'ottimizzatore RMS (root mean square propagation) con un learning rate di 0.01 e un momentum di 0.00. - Definisci l'operazione di minimizzazione per
opt_2. - Stampa
x_1ex_2come arraynumpy.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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(____, ____)