Jak se vyhnout lokálním minimům
Předchozí příklad ukázal, jak snadno může optimizer uvíznout v lokálním minimu. Měli jsme jednoduchý optimalizační problém s jednou proměnnou, a přesto gradientní sestup nedokázal najít globální minimum, když bylo třeba nejprve překonat lokální minima. Jedním ze způsobů, jak tomuto problému předejít, je použití momentu, který optimizeru umožňuje lokální minima překonávat. Opět použijeme ztrátovou funkci z předchozího příkladu, která je k dispozici jako loss_function().

Několik optimizerů v tensorflow má parametr momentum, včetně SGD a RMSprop. V tomto cvičení využiješ RMSprop. Všimni si, že x_1 a x_2 jsou tentokrát inicializovány na stejnou hodnotu. keras.optimizers.RMSprop() je za tebe již importován z tensorflow.
Toto cvičení je součástí kurzu
Úvod do TensorFlow v Pythonu
Pokyny k cvičení
- Nastav operaci
opt_1tak, aby používala learning rate 0,01 a momentum 0,99. - Nastav
opt_2tak, aby používal optimizer RMSprop s learning rate 0,01 a momentem 0,00. - Definuj operaci minimalizace pro
opt_2. - Vypiš
x_1ax_2jako polenumpy.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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(____, ____)