Evitar mínimos locais
O problema anterior mostrou como é fácil ficar preso em mínimos locais. Tínhamos um problema de otimização simples em uma variável e a descida do gradiente ainda não conseguiu atingir o mínimo global quando tivemos que percorrer os mínimos locais primeiro. Uma maneira de evitar esse problema é usar o momentum, que permite que o otimizador ultrapasse os mínimos locais. Usaremos novamente a função de perda do problema anterior, que foi definida e está disponível para você em loss_function()
.
Vários otimizadores em tensorflow
têm um parâmetro de momentum, incluindo SGD
e RMSprop
. Você usará o site RMSprop
neste exercício. Observe que x_1
e x_2
foram inicializados com o mesmo valor desta vez. Além disso, keras.optimizers.RMSprop()
também foi importado para você de tensorflow
.
Este exercício faz parte do curso
Introdução ao TensorFlow em Python
Instruções de exercício
- Defina a operação
opt_1
para usar uma taxa de aprendizado de 0,01 e um momento de 0,99. - Defina o site
opt_2
para usar o otimizador de propagação de raiz quadrada média (RMS) com uma taxa de aprendizado de 0,01 e um momentum de 0,00. - Defina a operação de minimização para
opt_2
. - Imprima
x_1
ex_2
como matrizesnumpy
.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
# 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(____, ____)