Exercício 2 - versão 2

Jacques Wainer

Exercício 2 - versão 2

Versão 2: um paragrafo a mais na parte do Tensorflow - nao use a funçao de descida do gradiente implementada no Tensorflow.

Pode ser feito individualmente ou em grupos de ate 3 pessoas

data para entrega: até meia note de 18/4 (Domingo)

Nós vamos minimizar a função de 2 dimensões:

f(x_1,x_2) = (1-x_1)^2 + 100 (x_2 - x_1^2)^2

que é a função de Rosenbrock em 2D. https://en.wikipedia.org/wiki/Rosenbrock_function Essa não é uma função convexa. O ponto de minimo esta em [1,1] mas é difícil chegar nele. O gradiente no vale em formato de banana é muito pequeno e uma vez no vale, a decida do gradiente anda muito pouco a cada passo.

valor inicial: Assuma que o valor inicial da descida do gradiente é [0,0]

teste de convergência: vamos definir tolerancia como

tol = | f(x_{novo})-f(x_{velho}) |

Pare quando a tolerância for menor que 10^{-5} (1.e-5).

numero máximo de passos: interrompa a computação depois de 50.000 passos.

1 implementação de descida do gradiente com gradiente explicito

1.1 use l.r = 1.e-3

1.2 use l.r = 1.e-4

1.3 l.r grande

mostre o que acontece quando o learning rate é muito grande e a descida do gradiente nao converge (na minha implementação um l.r de 1.e-2 já da erro) Não precisa gerar os gráficos da saída para este caso.

1.4 politica de redução do l.r

implemente uma politica de redução do learning rate, de tal forma que a cada passo da descida do gradiente o novo l.r. é o velho vezes 0.999 (ou seja o l.r. diminue em 1 milesimo a cada passo).

Rode a decisa do gradiente com esta politica com valor inicial de l.r = 5.e-3

2 usando do tensorflow para calcular o gradiente

Use o tensorflow para computar automaticamente o gradiente em vez de usar a sua função.

O tensorflow deve ser usado apenas para calcular o gradiente. O tensorflow tem sua propria implementação de descida do gradiente, a funçao tf.compat.v1.train.GradientDescentOptimizer NÃO use essa função. Voce deve usar sua propria implementação da descida do gradiente usada na parte 1.