Lokale minima vermijden
In de vorige opgave zag je hoe makkelijk je vastloopt in lokale minima. We hadden een eenvoudig optimalisatieprobleem met één variabele en toch wist gradient descent het globale minimum niet te vinden, omdat het eerst door lokale minima moest. Een manier om dit te vermijden is momentum gebruiken, zodat de optimizer door lokale minima heen kan breken. We gebruiken opnieuw de verliesfunctie uit de vorige opgave, die al is gedefinieerd en beschikbaar is als loss_function().

Verschillende optimizers in tensorflow hebben een momentumparameter, waaronder SGD en RMSprop. In deze oefening gebruik je RMSprop. Let op: x_1 en x_2 zijn dit keer op dezelfde waarde geïnitialiseerd. Bovendien is keras.optimizers.RMSprop() al voor je geïmporteerd uit tensorflow.
Deze oefening maakt deel uit van de cursus
Introductie tot TensorFlow in Python
Oefeninstructies
- Stel de bewerking
opt_1in met een learning rate van 0,01 en een momentum van 0,99. - Stel
opt_2in op de root mean square propagation (RMS) optimizer met een learning rate van 0,01 en een momentum van 0,00. - Definieer de minimalisatiebewerking voor
opt_2. - Print
x_1enx_2alsnumpy-arrays.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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(____, ____)