MO431A - Tarefa 3

Data limite: Entregue um pdf, via email ou impresso, até as 10h do 10/4

Pode ser feito individualmente ou em duplas.

1 batch gradient descent

O arquivo Ex3X.npy contem 100 dados em 2D, e o arquivo Ex3y.npy contem o y correspondente a cada um dos dados em X

Você quer modelar os dados como uma regressão linear

\[ y = \theta_0 + \theta_1 x_1 + \theta_2 x_2\]

O objetivo é encontrar os valores de θ = [θ0, θ1, θ2]T que minimizam o erro quadrático medio, ou seja que minimizam

\[ \frac{1}{N} \sum (y_i - \theta^T x_i)^2 \]

para cada dado i. (N=100)

Implemente a descida do gradiente em batch. O valor inicial de θ deve ser [0,0,0]T

Faça 100 interações da decida do gradiente, e plote um gráfico com o erro para cada interação, o valor de θ1 para cada interação, e o valor de θ2 para cada interação.

Plote os gráficos para o learning rates de

  • 0.01
  • 0.001
  • 0.00005

(No meu caso, o learning rate de 0.001 parece convergir mas ha um fenômeno que eu não consigo explicar, que o erro depois de ir para um valor bem pequeno, começa a crescer lentamente, com uma mudança lenta no θ1 e θ2 - Eu realmente não sei explicar isso. Se acontecer com o seu exemplo, não se preocupe com isso, só discuta os 3 exemplos em relação a convergência ou não e a velocidade de convergência.

2 SGD

Rode o Stocastic gradient descent para 2000 interações, com learning rate de 0.05, iniciando de [0,0,0]. A escolha do dado para atualizar o valor de θ é totalmente aleatório.

Plote a evolução do custo

Não ha uma definição única de SGD. A variação importante é se cada atualização do θ escolhe um dado totalmente aleatório, ou se cada dado tem que ser visitados pelo menos uma vez a cada macro-interação. Na primeira versão, repete-se n-iterações vezes a seleção aleatória de um dos dados do conjunto e a atualização do θ. Na segunda versão, cada macro-iteração apenas seleciona aleatoriamente a ordem na qual cada dado do conjunto de dados será usada na atualização.

Para esta implementação, use a primeira versão - totalmente aleatória - e o numero total de iterações é 1000.

3 Mini batch GD

Até onde eu sei,como no SGD, não há só uma definição de mini-batch. Por exemplo dado um mini-batch de 10 dados, esse mini-batch pode ser construído selecionando 10 dados do conjunto (sem repetição) ou repetindo 10 vezes a seleção aleatória de um dado, ou segmentando conjunto de dados em sequencias de 10 dados (sequenciais) e aleatoriamente escolhendo a ordem que esses segmentos serão utilizados.

Para esta parte do projeto, use a segunda definição - a repetição de k (k o tamanho do mini batch) vezes da seleção aleatória de um dado do conjunto.

Rode o mini-batchGD para uma janela de 10 dados, com 200 interações, e learning rate de 0.05, iniciando em [0,0,0]. Compare a evolução do custo entre o SGD e o mini-batch GD

Author: Jacques Wainer

Created: 2019-04-01 Mon 14:50

Validate