Unikanie minimów lokalnych
Poprzednie zadanie pokazało, jak łatwo można utknąć w minimach lokalnych. Nawet przy prostym problemie optymalizacyjnym z jedną zmienną metoda gradientu prostego nie zawsze znajduje minimum globalne, jeśli po drodze napotyka minima lokalne. Jednym ze sposobów na uniknięcie tego problemu jest zastosowanie momentum, które pozwala optymalizatorowi przebić się przez minima lokalne. Ponownie skorzystamy z funkcji straty z poprzedniego zadania – jest ona już zdefiniowana i dostępna jako loss_function().

Kilka optymalizatorów w bibliotece tensorflow obsługuje parametr momentum – należą do nich SGD i RMSprop. W tym ćwiczeniu skorzystasz z RMSprop. Zwróć uwagę, że tym razem x_1 i x_2 zostały zainicjalizowane tą samą wartością. Funkcja keras.optimizers.RMSprop() została już zaimportowana z tensorflow.
To ćwiczenie jest częścią kursu
Wprowadzenie do TensorFlow w Pythonie
Instrukcje do ćwiczenia
- Ustaw operację
opt_1tak, aby używała współczynnika uczenia równego 0,01 i momentum równego 0,99. - Ustaw
opt_2tak, aby korzystało z optymalizatora średniej kwadratowej (RMSprop) ze współczynnikiem uczenia równym 0,01 i momentum równym 0,00. - Zdefiniuj operację minimalizacji dla
opt_2. - Wyświetl
x_1ix_2jako tablicenumpy.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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(____, ____)