O gradiente descendente(Gradient Descent) é um dos principais algoritmos de otimização da função custo em algoritmos de otimização de Machine Learning. A ideia é minimizar uma função(Custo/erro) usando o gradiente(derivadas parciais). Para quem conhece um pouco mais de matemática sabe que encontrar mínimo de funções é uma das tarefas do cálculo diferencial. A titulo de exemplo, na figura abaixo do lado direito temos os dados históricos em azul, a f(hipótese de solução) que no caso de uma regressão linear é uma reta(em vermelho) e do lado esquerdo a função custo(erro). Perceba que quanto mais se aproximamos do mínimo erro mais ajustamos os parametros m e b de forma que a reta se aproxima dos dados tornando-se um provável modelo para previsões futuras.
Gradient Descent
Vamos fazer o algoritmo do gradiente descendente aqui usando uma dimensão para facilitar a intuição.
Desafio:
Encontre os mínimos locais da função y = (x + 5)² começando do ponto x = 3.
Passos do algoritmo:
Etapa 1: Inicializar em x =3. Em seguida encontre o gradiente da função dy/dx=2(x+5)
Etapa 2: Mova-se na direção do negativo do gradiente a uma certa taxa(chamada taxa de aprendizado)
Etapa 3: No cálculo acima você vai ter encontrado um novo x, substitua na Etapa 1.
Esse processo irá terminar quando a diferença entre duas iterações chegar até certo número ou quando se alcançar algum limite de iterações pré estabelecido.
Exemplo didático de função custo
Solução:
Sabemos a resposta apenas olhando para o gráfico. y = (x + 5)² atinge seu valor mínimo quando x = -5(ou seja, quando x = -5,y = 0). Portanto, x = -5 é o mínimo local e global da função.
Outra forma é resolver analiticamente, derivando a função e igualando a zero e assim achando o valor de x e avaliando o sinal da segunda derivada. Na prática, porém, não conseguimos encontrar uma solução analitica e justamente por isso o algoritmo se faz necessário. Dito isto, a ideia é usar o algoritmo do gradiente descendente. O script abaixo aplica o algoritmo para essa função.
Agora vamos aplicar o algoritmo:
# O algoritmo inicia com o parâmetro x=3
cur_x = 3
# Learning rate
rate = 0.01
# Define quando parar o algoritmo
# Parar o loop quando a diferença entre os valores de x em 2 iterações consecutivas for menor que 0,000001
# ou quando o número de iterações exceder 10 mil
precision = 0.000001
# Inicializa o contador do passo anterior
previous_step_size = 1
# Número máximo de iterações
max_iters = 10000
# Contador de iterações
iters = 0
# Gradiente da função
df = function(x){2*(x+5)}
while (previous_step_size > precision & iters < max_iters){
# Armazena o valor corrente de x em prev_x
prev_x = cur_x
# Aplica o Gradient descent
cur_x = cur_x - rate * df(prev_x)
# Altera o valor de x
previous_step_size = abs(cur_x - prev_x)
# Incrementa o número de iterações
iters = iters + 1
# Imprime as iterações
#print(paste0("Iteraçao ", iters,"Valor de x igual a ", cur_x))
cat("\nIteraçao ", iters,':', "\nValor de x igual a ", cur_x)
}
##
## Iteraçao 1 :
## Valor de x igual a 2.84
## Iteraçao 2 :
## Valor de x igual a 2.6832
## Iteraçao 3 :
## Valor de x igual a 2.529536
## Iteraçao 4 :
## Valor de x igual a 2.378945
## Iteraçao 5 :
## Valor de x igual a 2.231366
## Iteraçao 6 :
## Valor de x igual a 2.086739
## Iteraçao 7 :
## Valor de x igual a 1.945004
## Iteraçao 8 :
## Valor de x igual a 1.806104
## Iteraçao 9 :
## Valor de x igual a 1.669982
## Iteraçao 10 :
## Valor de x igual a 1.536582
## Iteraçao 11 :
## Valor de x igual a 1.405851
## Iteraçao 12 :
## Valor de x igual a 1.277734
## Iteraçao 13 :
## Valor de x igual a 1.152179
## Iteraçao 14 :
## Valor de x igual a 1.029136
## Iteraçao 15 :
## Valor de x igual a 0.9085528
## Iteraçao 16 :
## Valor de x igual a 0.7903818
## Iteraçao 17 :
## Valor de x igual a 0.6745741
## Iteraçao 18 :
## Valor de x igual a 0.5610826
## Iteraçao 19 :
## Valor de x igual a 0.449861
## Iteraçao 20 :
## Valor de x igual a 0.3408638
## Iteraçao 21 :
## Valor de x igual a 0.2340465
## Iteraçao 22 :
## Valor de x igual a 0.1293656
## Iteraçao 23 :
## Valor de x igual a 0.02677826
## Iteraçao 24 :
## Valor de x igual a -0.07375731
## Iteraçao 25 :
## Valor de x igual a -0.1722822
## Iteraçao 26 :
## Valor de x igual a -0.2688365
## Iteraçao 27 :
## Valor de x igual a -0.3634598
## Iteraçao 28 :
## Valor de x igual a -0.4561906
## Iteraçao 29 :
## Valor de x igual a -0.5470668
## Iteraçao 30 :
## Valor de x igual a -0.6361254
## Iteraçao 31 :
## Valor de x igual a -0.7234029
## Iteraçao 32 :
## Valor de x igual a -0.8089349
## Iteraçao 33 :
## Valor de x igual a -0.8927562
## Iteraçao 34 :
## Valor de x igual a -0.9749011
## Iteraçao 35 :
## Valor de x igual a -1.055403
## Iteraçao 36 :
## Valor de x igual a -1.134295
## Iteraçao 37 :
## Valor de x igual a -1.211609
## Iteraçao 38 :
## Valor de x igual a -1.287377
## Iteraçao 39 :
## Valor de x igual a -1.361629
## Iteraçao 40 :
## Valor de x igual a -1.434397
## Iteraçao 41 :
## Valor de x igual a -1.505709
## Iteraçao 42 :
## Valor de x igual a -1.575595
## Iteraçao 43 :
## Valor de x igual a -1.644083
## Iteraçao 44 :
## Valor de x igual a -1.711201
## Iteraçao 45 :
## Valor de x igual a -1.776977
## Iteraçao 46 :
## Valor de x igual a -1.841438
## Iteraçao 47 :
## Valor de x igual a -1.904609
## Iteraçao 48 :
## Valor de x igual a -1.966517
## Iteraçao 49 :
## Valor de x igual a -2.027186
## Iteraçao 50 :
## Valor de x igual a -2.086643
## Iteraçao 51 :
## Valor de x igual a -2.14491
## Iteraçao 52 :
## Valor de x igual a -2.202012
## Iteraçao 53 :
## Valor de x igual a -2.257971
## Iteraçao 54 :
## Valor de x igual a -2.312812
## Iteraçao 55 :
## Valor de x igual a -2.366556
## Iteraçao 56 :
## Valor de x igual a -2.419225
## Iteraçao 57 :
## Valor de x igual a -2.47084
## Iteraçao 58 :
## Valor de x igual a -2.521423
## Iteraçao 59 :
## Valor de x igual a -2.570995
## Iteraçao 60 :
## Valor de x igual a -2.619575
## Iteraçao 61 :
## Valor de x igual a -2.667183
## Iteraçao 62 :
## Valor de x igual a -2.71384
## Iteraçao 63 :
## Valor de x igual a -2.759563
## Iteraçao 64 :
## Valor de x igual a -2.804372
## Iteraçao 65 :
## Valor de x igual a -2.848284
## Iteraçao 66 :
## Valor de x igual a -2.891319
## Iteraçao 67 :
## Valor de x igual a -2.933492
## Iteraçao 68 :
## Valor de x igual a -2.974822
## Iteraçao 69 :
## Valor de x igual a -3.015326
## Iteraçao 70 :
## Valor de x igual a -3.055019
## Iteraçao 71 :
## Valor de x igual a -3.093919
## Iteraçao 72 :
## Valor de x igual a -3.132041
## Iteraçao 73 :
## Valor de x igual a -3.1694
## Iteraçao 74 :
## Valor de x igual a -3.206012
## Iteraçao 75 :
## Valor de x igual a -3.241892
## Iteraçao 76 :
## Valor de x igual a -3.277054
## Iteraçao 77 :
## Valor de x igual a -3.311513
## Iteraçao 78 :
## Valor de x igual a -3.345282
## Iteraçao 79 :
## Valor de x igual a -3.378377
## Iteraçao 80 :
## Valor de x igual a -3.410809
## Iteraçao 81 :
## Valor de x igual a -3.442593
## Iteraçao 82 :
## Valor de x igual a -3.473741
## Iteraçao 83 :
## Valor de x igual a -3.504266
## Iteraçao 84 :
## Valor de x igual a -3.534181
## Iteraçao 85 :
## Valor de x igual a -3.563497
## Iteraçao 86 :
## Valor de x igual a -3.592227
## Iteraçao 87 :
## Valor de x igual a -3.620383
## Iteraçao 88 :
## Valor de x igual a -3.647975
## Iteraçao 89 :
## Valor de x igual a -3.675016
## Iteraçao 90 :
## Valor de x igual a -3.701515
## Iteraçao 91 :
## Valor de x igual a -3.727485
## Iteraçao 92 :
## Valor de x igual a -3.752935
## Iteraçao 93 :
## Valor de x igual a -3.777877
## Iteraçao 94 :
## Valor de x igual a -3.802319
## Iteraçao 95 :
## Valor de x igual a -3.826273
## Iteraçao 96 :
## Valor de x igual a -3.849747
## Iteraçao 97 :
## Valor de x igual a -3.872752
## Iteraçao 98 :
## Valor de x igual a -3.895297
## Iteraçao 99 :
## Valor de x igual a -3.917391
## Iteraçao 100 :
## Valor de x igual a -3.939044
## Iteraçao 101 :
## Valor de x igual a -3.960263
## Iteraçao 102 :
## Valor de x igual a -3.981057
## Iteraçao 103 :
## Valor de x igual a -4.001436
## Iteraçao 104 :
## Valor de x igual a -4.021408
## Iteraçao 105 :
## Valor de x igual a -4.040979
## Iteraçao 106 :
## Valor de x igual a -4.06016
## Iteraçao 107 :
## Valor de x igual a -4.078957
## Iteraçao 108 :
## Valor de x igual a -4.097377
## Iteraçao 109 :
## Valor de x igual a -4.11543
## Iteraçao 110 :
## Valor de x igual a -4.133121
## Iteraçao 111 :
## Valor de x igual a -4.150459
## Iteraçao 112 :
## Valor de x igual a -4.16745
## Iteraçao 113 :
## Valor de x igual a -4.184101
## Iteraçao 114 :
## Valor de x igual a -4.200419
## Iteraçao 115 :
## Valor de x igual a -4.21641
## Iteraçao 116 :
## Valor de x igual a -4.232082
## Iteraçao 117 :
## Valor de x igual a -4.24744
## Iteraçao 118 :
## Valor de x igual a -4.262492
## Iteraçao 119 :
## Valor de x igual a -4.277242
## Iteraçao 120 :
## Valor de x igual a -4.291697
## Iteraçao 121 :
## Valor de x igual a -4.305863
## Iteraçao 122 :
## Valor de x igual a -4.319746
## Iteraçao 123 :
## Valor de x igual a -4.333351
## Iteraçao 124 :
## Valor de x igual a -4.346684
## Iteraçao 125 :
## Valor de x igual a -4.35975
## Iteraçao 126 :
## Valor de x igual a -4.372555
## Iteraçao 127 :
## Valor de x igual a -4.385104
## Iteraçao 128 :
## Valor de x igual a -4.397402
## Iteraçao 129 :
## Valor de x igual a -4.409454
## Iteraçao 130 :
## Valor de x igual a -4.421265
## Iteraçao 131 :
## Valor de x igual a -4.43284
## Iteraçao 132 :
## Valor de x igual a -4.444183
## Iteraçao 133 :
## Valor de x igual a -4.455299
## Iteraçao 134 :
## Valor de x igual a -4.466193
## Iteraçao 135 :
## Valor de x igual a -4.476869
## Iteraçao 136 :
## Valor de x igual a -4.487332
## Iteraçao 137 :
## Valor de x igual a -4.497585
## Iteraçao 138 :
## Valor de x igual a -4.507634
## Iteraçao 139 :
## Valor de x igual a -4.517481
## Iteraçao 140 :
## Valor de x igual a -4.527131
## Iteraçao 141 :
## Valor de x igual a -4.536589
## Iteraçao 142 :
## Valor de x igual a -4.545857
## Iteraçao 143 :
## Valor de x igual a -4.55494
## Iteraçao 144 :
## Valor de x igual a -4.563841
## Iteraçao 145 :
## Valor de x igual a -4.572564
## Iteraçao 146 :
## Valor de x igual a -4.581113
## Iteraçao 147 :
## Valor de x igual a -4.589491
## Iteraçao 148 :
## Valor de x igual a -4.597701
## Iteraçao 149 :
## Valor de x igual a -4.605747
## Iteraçao 150 :
## Valor de x igual a -4.613632
## Iteraçao 151 :
## Valor de x igual a -4.621359
## Iteraçao 152 :
## Valor de x igual a -4.628932
## Iteraçao 153 :
## Valor de x igual a -4.636353
## Iteraçao 154 :
## Valor de x igual a -4.643626
## Iteraçao 155 :
## Valor de x igual a -4.650754
## Iteraçao 156 :
## Valor de x igual a -4.657739
## Iteraçao 157 :
## Valor de x igual a -4.664584
## Iteraçao 158 :
## Valor de x igual a -4.671292
## Iteraçao 159 :
## Valor de x igual a -4.677866
## Iteraçao 160 :
## Valor de x igual a -4.684309
## Iteraçao 161 :
## Valor de x igual a -4.690623
## Iteraçao 162 :
## Valor de x igual a -4.69681
## Iteraçao 163 :
## Valor de x igual a -4.702874
## Iteraçao 164 :
## Valor de x igual a -4.708817
## Iteraçao 165 :
## Valor de x igual a -4.71464
## Iteraçao 166 :
## Valor de x igual a -4.720348
## Iteraçao 167 :
## Valor de x igual a -4.725941
## Iteraçao 168 :
## Valor de x igual a -4.731422
## Iteraçao 169 :
## Valor de x igual a -4.736793
## Iteraçao 170 :
## Valor de x igual a -4.742058
## Iteraçao 171 :
## Valor de x igual a -4.747216
## Iteraçao 172 :
## Valor de x igual a -4.752272
## Iteraçao 173 :
## Valor de x igual a -4.757227
## Iteraçao 174 :
## Valor de x igual a -4.762082
## Iteraçao 175 :
## Valor de x igual a -4.76684
## Iteraçao 176 :
## Valor de x igual a -4.771504
## Iteraçao 177 :
## Valor de x igual a -4.776074
## Iteraçao 178 :
## Valor de x igual a -4.780552
## Iteraçao 179 :
## Valor de x igual a -4.784941
## Iteraçao 180 :
## Valor de x igual a -4.789242
## Iteraçao 181 :
## Valor de x igual a -4.793457
## Iteraçao 182 :
## Valor de x igual a -4.797588
## Iteraçao 183 :
## Valor de x igual a -4.801636
## Iteraçao 184 :
## Valor de x igual a -4.805604
## Iteraçao 185 :
## Valor de x igual a -4.809492
## Iteraçao 186 :
## Valor de x igual a -4.813302
## Iteraçao 187 :
## Valor de x igual a -4.817036
## Iteraçao 188 :
## Valor de x igual a -4.820695
## Iteraçao 189 :
## Valor de x igual a -4.824281
## Iteraçao 190 :
## Valor de x igual a -4.827796
## Iteraçao 191 :
## Valor de x igual a -4.83124
## Iteraçao 192 :
## Valor de x igual a -4.834615
## Iteraçao 193 :
## Valor de x igual a -4.837923
## Iteraçao 194 :
## Valor de x igual a -4.841164
## Iteraçao 195 :
## Valor de x igual a -4.844341
## Iteraçao 196 :
## Valor de x igual a -4.847454
## Iteraçao 197 :
## Valor de x igual a -4.850505
## Iteraçao 198 :
## Valor de x igual a -4.853495
## Iteraçao 199 :
## Valor de x igual a -4.856425
## Iteraçao 200 :
## Valor de x igual a -4.859296
## Iteraçao 201 :
## Valor de x igual a -4.86211
## Iteraçao 202 :
## Valor de x igual a -4.864868
## Iteraçao 203 :
## Valor de x igual a -4.867571
## Iteraçao 204 :
## Valor de x igual a -4.87022
## Iteraçao 205 :
## Valor de x igual a -4.872815
## Iteraçao 206 :
## Valor de x igual a -4.875359
## Iteraçao 207 :
## Valor de x igual a -4.877852
## Iteraçao 208 :
## Valor de x igual a -4.880295
## Iteraçao 209 :
## Valor de x igual a -4.882689
## Iteraçao 210 :
## Valor de x igual a -4.885035
## Iteraçao 211 :
## Valor de x igual a -4.887334
## Iteraçao 212 :
## Valor de x igual a -4.889588
## Iteraçao 213 :
## Valor de x igual a -4.891796
## Iteraçao 214 :
## Valor de x igual a -4.89396
## Iteraçao 215 :
## Valor de x igual a -4.896081
## Iteraçao 216 :
## Valor de x igual a -4.898159
## Iteraçao 217 :
## Valor de x igual a -4.900196
## Iteraçao 218 :
## Valor de x igual a -4.902192
## Iteraçao 219 :
## Valor de x igual a -4.904148
## Iteraçao 220 :
## Valor de x igual a -4.906065
## Iteraçao 221 :
## Valor de x igual a -4.907944
## Iteraçao 222 :
## Valor de x igual a -4.909785
## Iteraçao 223 :
## Valor de x igual a -4.911589
## Iteraçao 224 :
## Valor de x igual a -4.913358
## Iteraçao 225 :
## Valor de x igual a -4.91509
## Iteraçao 226 :
## Valor de x igual a -4.916789
## Iteraçao 227 :
## Valor de x igual a -4.918453
## Iteraçao 228 :
## Valor de x igual a -4.920084
## Iteraçao 229 :
## Valor de x igual a -4.921682
## Iteraçao 230 :
## Valor de x igual a -4.923248
## Iteraçao 231 :
## Valor de x igual a -4.924783
## Iteraçao 232 :
## Valor de x igual a -4.926288
## Iteraçao 233 :
## Valor de x igual a -4.927762
## Iteraçao 234 :
## Valor de x igual a -4.929207
## Iteraçao 235 :
## Valor de x igual a -4.930623
## Iteraçao 236 :
## Valor de x igual a -4.93201
## Iteraçao 237 :
## Valor de x igual a -4.93337
## Iteraçao 238 :
## Valor de x igual a -4.934703
## Iteraçao 239 :
## Valor de x igual a -4.936009
## Iteraçao 240 :
## Valor de x igual a -4.937288
## Iteraçao 241 :
## Valor de x igual a -4.938543
## Iteraçao 242 :
## Valor de x igual a -4.939772
## Iteraçao 243 :
## Valor de x igual a -4.940976
## Iteraçao 244 :
## Valor de x igual a -4.942157
## Iteraçao 245 :
## Valor de x igual a -4.943314
## Iteraçao 246 :
## Valor de x igual a -4.944447
## Iteraçao 247 :
## Valor de x igual a -4.945558
## Iteraçao 248 :
## Valor de x igual a -4.946647
## Iteraçao 249 :
## Valor de x igual a -4.947714
## Iteraçao 250 :
## Valor de x igual a -4.94876
## Iteraçao 251 :
## Valor de x igual a -4.949785
## Iteraçao 252 :
## Valor de x igual a -4.950789
## Iteraçao 253 :
## Valor de x igual a -4.951773
## Iteraçao 254 :
## Valor de x igual a -4.952738
## Iteraçao 255 :
## Valor de x igual a -4.953683
## Iteraçao 256 :
## Valor de x igual a -4.954609
## Iteraçao 257 :
## Valor de x igual a -4.955517
## Iteraçao 258 :
## Valor de x igual a -4.956407
## Iteraçao 259 :
## Valor de x igual a -4.957279
## Iteraçao 260 :
## Valor de x igual a -4.958133
## Iteraçao 261 :
## Valor de x igual a -4.958971
## Iteraçao 262 :
## Valor de x igual a -4.959791
## Iteraçao 263 :
## Valor de x igual a -4.960595
## Iteraçao 264 :
## Valor de x igual a -4.961383
## Iteraçao 265 :
## Valor de x igual a -4.962156
## Iteraçao 266 :
## Valor de x igual a -4.962913
## Iteraçao 267 :
## Valor de x igual a -4.963654
## Iteraçao 268 :
## Valor de x igual a -4.964381
## Iteraçao 269 :
## Valor de x igual a -4.965094
## Iteraçao 270 :
## Valor de x igual a -4.965792
## Iteraçao 271 :
## Valor de x igual a -4.966476
## Iteraçao 272 :
## Valor de x igual a -4.967146
## Iteraçao 273 :
## Valor de x igual a -4.967804
## Iteraçao 274 :
## Valor de x igual a -4.968447
## Iteraçao 275 :
## Valor de x igual a -4.969078
## Iteraçao 276 :
## Valor de x igual a -4.969697
## Iteraçao 277 :
## Valor de x igual a -4.970303
## Iteraçao 278 :
## Valor de x igual a -4.970897
## Iteraçao 279 :
## Valor de x igual a -4.971479
## Iteraçao 280 :
## Valor de x igual a -4.972049
## Iteraçao 281 :
## Valor de x igual a -4.972608
## Iteraçao 282 :
## Valor de x igual a -4.973156
## Iteraçao 283 :
## Valor de x igual a -4.973693
## Iteraçao 284 :
## Valor de x igual a -4.974219
## Iteraçao 285 :
## Valor de x igual a -4.974735
## Iteraçao 286 :
## Valor de x igual a -4.97524
## Iteraçao 287 :
## Valor de x igual a -4.975735
## Iteraçao 288 :
## Valor de x igual a -4.976221
## Iteraçao 289 :
## Valor de x igual a -4.976696
## Iteraçao 290 :
## Valor de x igual a -4.977162
## Iteraçao 291 :
## Valor de x igual a -4.977619
## Iteraçao 292 :
## Valor de x igual a -4.978067
## Iteraçao 293 :
## Valor de x igual a -4.978505
## Iteraçao 294 :
## Valor de x igual a -4.978935
## Iteraçao 295 :
## Valor de x igual a -4.979357
## Iteraçao 296 :
## Valor de x igual a -4.979769
## Iteraçao 297 :
## Valor de x igual a -4.980174
## Iteraçao 298 :
## Valor de x igual a -4.980571
## Iteraçao 299 :
## Valor de x igual a -4.980959
## Iteraçao 300 :
## Valor de x igual a -4.98134
## Iteraçao 301 :
## Valor de x igual a -4.981713
## Iteraçao 302 :
## Valor de x igual a -4.982079
## Iteraçao 303 :
## Valor de x igual a -4.982437
## Iteraçao 304 :
## Valor de x igual a -4.982789
## Iteraçao 305 :
## Valor de x igual a -4.983133
## Iteraçao 306 :
## Valor de x igual a -4.98347
## Iteraçao 307 :
## Valor de x igual a -4.983801
## Iteraçao 308 :
## Valor de x igual a -4.984125
## Iteraçao 309 :
## Valor de x igual a -4.984442
## Iteraçao 310 :
## Valor de x igual a -4.984753
## Iteraçao 311 :
## Valor de x igual a -4.985058
## Iteraçao 312 :
## Valor de x igual a -4.985357
## Iteraçao 313 :
## Valor de x igual a -4.98565
## Iteraçao 314 :
## Valor de x igual a -4.985937
## Iteraçao 315 :
## Valor de x igual a -4.986218
## Iteraçao 316 :
## Valor de x igual a -4.986494
## Iteraçao 317 :
## Valor de x igual a -4.986764
## Iteraçao 318 :
## Valor de x igual a -4.987029
## Iteraçao 319 :
## Valor de x igual a -4.987288
## Iteraçao 320 :
## Valor de x igual a -4.987542
## Iteraçao 321 :
## Valor de x igual a -4.987792
## Iteraçao 322 :
## Valor de x igual a -4.988036
## Iteraçao 323 :
## Valor de x igual a -4.988275
## Iteraçao 324 :
## Valor de x igual a -4.98851
## Iteraçao 325 :
## Valor de x igual a -4.988739
## Iteraçao 326 :
## Valor de x igual a -4.988965
## Iteraçao 327 :
## Valor de x igual a -4.989185
## Iteraçao 328 :
## Valor de x igual a -4.989402
## Iteraçao 329 :
## Valor de x igual a -4.989614
## Iteraçao 330 :
## Valor de x igual a -4.989821
## Iteraçao 331 :
## Valor de x igual a -4.990025
## Iteraçao 332 :
## Valor de x igual a -4.990224
## Iteraçao 333 :
## Valor de x igual a -4.99042
## Iteraçao 334 :
## Valor de x igual a -4.990611
## Iteraçao 335 :
## Valor de x igual a -4.990799
## Iteraçao 336 :
## Valor de x igual a -4.990983
## Iteraçao 337 :
## Valor de x igual a -4.991164
## Iteraçao 338 :
## Valor de x igual a -4.99134
## Iteraçao 339 :
## Valor de x igual a -4.991513
## Iteraçao 340 :
## Valor de x igual a -4.991683
## Iteraçao 341 :
## Valor de x igual a -4.99185
## Iteraçao 342 :
## Valor de x igual a -4.992013
## Iteraçao 343 :
## Valor de x igual a -4.992172
## Iteraçao 344 :
## Valor de x igual a -4.992329
## Iteraçao 345 :
## Valor de x igual a -4.992482
## Iteraçao 346 :
## Valor de x igual a -4.992633
## Iteraçao 347 :
## Valor de x igual a -4.99278
## Iteraçao 348 :
## Valor de x igual a -4.992924
## Iteraçao 349 :
## Valor de x igual a -4.993066
## Iteraçao 350 :
## Valor de x igual a -4.993205
## Iteraçao 351 :
## Valor de x igual a -4.99334
## Iteraçao 352 :
## Valor de x igual a -4.993474
## Iteraçao 353 :
## Valor de x igual a -4.993604
## Iteraçao 354 :
## Valor de x igual a -4.993732
## Iteraçao 355 :
## Valor de x igual a -4.993857
## Iteraçao 356 :
## Valor de x igual a -4.99398
## Iteraçao 357 :
## Valor de x igual a -4.994101
## Iteraçao 358 :
## Valor de x igual a -4.994219
## Iteraçao 359 :
## Valor de x igual a -4.994334
## Iteraçao 360 :
## Valor de x igual a -4.994448
## Iteraçao 361 :
## Valor de x igual a -4.994559
## Iteraçao 362 :
## Valor de x igual a -4.994668
## Iteraçao 363 :
## Valor de x igual a -4.994774
## Iteraçao 364 :
## Valor de x igual a -4.994879
## Iteraçao 365 :
## Valor de x igual a -4.994981
## Iteraçao 366 :
## Valor de x igual a -4.995081
## Iteraçao 367 :
## Valor de x igual a -4.99518
## Iteraçao 368 :
## Valor de x igual a -4.995276
## Iteraçao 369 :
## Valor de x igual a -4.995371
## Iteraçao 370 :
## Valor de x igual a -4.995463
## Iteraçao 371 :
## Valor de x igual a -4.995554
## Iteraçao 372 :
## Valor de x igual a -4.995643
## Iteraçao 373 :
## Valor de x igual a -4.99573
## Iteraçao 374 :
## Valor de x igual a -4.995816
## Iteraçao 375 :
## Valor de x igual a -4.995899
## Iteraçao 376 :
## Valor de x igual a -4.995981
## Iteraçao 377 :
## Valor de x igual a -4.996062
## Iteraçao 378 :
## Valor de x igual a -4.99614
## Iteraçao 379 :
## Valor de x igual a -4.996218
## Iteraçao 380 :
## Valor de x igual a -4.996293
## Iteraçao 381 :
## Valor de x igual a -4.996367
## Iteraçao 382 :
## Valor de x igual a -4.99644
## Iteraçao 383 :
## Valor de x igual a -4.996511
## Iteraçao 384 :
## Valor de x igual a -4.996581
## Iteraçao 385 :
## Valor de x igual a -4.996649
## Iteraçao 386 :
## Valor de x igual a -4.996716
## Iteraçao 387 :
## Valor de x igual a -4.996782
## Iteraçao 388 :
## Valor de x igual a -4.996846
## Iteraçao 389 :
## Valor de x igual a -4.996909
## Iteraçao 390 :
## Valor de x igual a -4.996971
## Iteraçao 391 :
## Valor de x igual a -4.997032
## Iteraçao 392 :
## Valor de x igual a -4.997091
## Iteraçao 393 :
## Valor de x igual a -4.997149
## Iteraçao 394 :
## Valor de x igual a -4.997206
## Iteraçao 395 :
## Valor de x igual a -4.997262
## Iteraçao 396 :
## Valor de x igual a -4.997317
## Iteraçao 397 :
## Valor de x igual a -4.997371
## Iteraçao 398 :
## Valor de x igual a -4.997423
## Iteraçao 399 :
## Valor de x igual a -4.997475
## Iteraçao 400 :
## Valor de x igual a -4.997525
## Iteraçao 401 :
## Valor de x igual a -4.997575
## Iteraçao 402 :
## Valor de x igual a -4.997623
## Iteraçao 403 :
## Valor de x igual a -4.997671
## Iteraçao 404 :
## Valor de x igual a -4.997717
## Iteraçao 405 :
## Valor de x igual a -4.997763
## Iteraçao 406 :
## Valor de x igual a -4.997808
## Iteraçao 407 :
## Valor de x igual a -4.997852
## Iteraçao 408 :
## Valor de x igual a -4.997895
## Iteraçao 409 :
## Valor de x igual a -4.997937
## Iteraçao 410 :
## Valor de x igual a -4.997978
## Iteraçao 411 :
## Valor de x igual a -4.998018
## Iteraçao 412 :
## Valor de x igual a -4.998058
## Iteraçao 413 :
## Valor de x igual a -4.998097
## Iteraçao 414 :
## Valor de x igual a -4.998135
## Iteraçao 415 :
## Valor de x igual a -4.998172
## Iteraçao 416 :
## Valor de x igual a -4.998209
## Iteraçao 417 :
## Valor de x igual a -4.998245
## Iteraçao 418 :
## Valor de x igual a -4.99828
## Iteraçao 419 :
## Valor de x igual a -4.998314
## Iteraçao 420 :
## Valor de x igual a -4.998348
## Iteraçao 421 :
## Valor de x igual a -4.998381
## Iteraçao 422 :
## Valor de x igual a -4.998413
## Iteraçao 423 :
## Valor de x igual a -4.998445
## Iteraçao 424 :
## Valor de x igual a -4.998476
## Iteraçao 425 :
## Valor de x igual a -4.998507
## Iteraçao 426 :
## Valor de x igual a -4.998536
## Iteraçao 427 :
## Valor de x igual a -4.998566
## Iteraçao 428 :
## Valor de x igual a -4.998594
## Iteraçao 429 :
## Valor de x igual a -4.998623
## Iteraçao 430 :
## Valor de x igual a -4.99865
## Iteraçao 431 :
## Valor de x igual a -4.998677
## Iteraçao 432 :
## Valor de x igual a -4.998704
## Iteraçao 433 :
## Valor de x igual a -4.998729
## Iteraçao 434 :
## Valor de x igual a -4.998755
## Iteraçao 435 :
## Valor de x igual a -4.99878
## Iteraçao 436 :
## Valor de x igual a -4.998804
## Iteraçao 437 :
## Valor de x igual a -4.998828
## Iteraçao 438 :
## Valor de x igual a -4.998852
## Iteraçao 439 :
## Valor de x igual a -4.998875
## Iteraçao 440 :
## Valor de x igual a -4.998897
## Iteraçao 441 :
## Valor de x igual a -4.998919
## Iteraçao 442 :
## Valor de x igual a -4.998941
## Iteraçao 443 :
## Valor de x igual a -4.998962
## Iteraçao 444 :
## Valor de x igual a -4.998983
## Iteraçao 445 :
## Valor de x igual a -4.999003
## Iteraçao 446 :
## Valor de x igual a -4.999023
## Iteraçao 447 :
## Valor de x igual a -4.999042
## Iteraçao 448 :
## Valor de x igual a -4.999062
## Iteraçao 449 :
## Valor de x igual a -4.99908
## Iteraçao 450 :
## Valor de x igual a -4.999099
## Iteraçao 451 :
## Valor de x igual a -4.999117
## Iteraçao 452 :
## Valor de x igual a -4.999134
## Iteraçao 453 :
## Valor de x igual a -4.999152
## Iteraçao 454 :
## Valor de x igual a -4.999169
## Iteraçao 455 :
## Valor de x igual a -4.999185
## Iteraçao 456 :
## Valor de x igual a -4.999202
## Iteraçao 457 :
## Valor de x igual a -4.999218
## Iteraçao 458 :
## Valor de x igual a -4.999233
## Iteraçao 459 :
## Valor de x igual a -4.999249
## Iteraçao 460 :
## Valor de x igual a -4.999264
## Iteraçao 461 :
## Valor de x igual a -4.999278
## Iteraçao 462 :
## Valor de x igual a -4.999293
## Iteraçao 463 :
## Valor de x igual a -4.999307
## Iteraçao 464 :
## Valor de x igual a -4.999321
## Iteraçao 465 :
## Valor de x igual a -4.999334
## Iteraçao 466 :
## Valor de x igual a -4.999348
## Iteraçao 467 :
## Valor de x igual a -4.999361
## Iteraçao 468 :
## Valor de x igual a -4.999374
## Iteraçao 469 :
## Valor de x igual a -4.999386
## Iteraçao 470 :
## Valor de x igual a -4.999398
## Iteraçao 471 :
## Valor de x igual a -4.99941
## Iteraçao 472 :
## Valor de x igual a -4.999422
## Iteraçao 473 :
## Valor de x igual a -4.999434
## Iteraçao 474 :
## Valor de x igual a -4.999445
## Iteraçao 475 :
## Valor de x igual a -4.999456
## Iteraçao 476 :
## Valor de x igual a -4.999467
## Iteraçao 477 :
## Valor de x igual a -4.999478
## Iteraçao 478 :
## Valor de x igual a -4.999488
## Iteraçao 479 :
## Valor de x igual a -4.999498
## Iteraçao 480 :
## Valor de x igual a -4.999508
## Iteraçao 481 :
## Valor de x igual a -4.999518
## Iteraçao 482 :
## Valor de x igual a -4.999528
## Iteraçao 483 :
## Valor de x igual a -4.999537
## Iteraçao 484 :
## Valor de x igual a -4.999547
## Iteraçao 485 :
## Valor de x igual a -4.999556
## Iteraçao 486 :
## Valor de x igual a -4.999565
## Iteraçao 487 :
## Valor de x igual a -4.999573
## Iteraçao 488 :
## Valor de x igual a -4.999582
## Iteraçao 489 :
## Valor de x igual a -4.99959
## Iteraçao 490 :
## Valor de x igual a -4.999598
## Iteraçao 491 :
## Valor de x igual a -4.999606
## Iteraçao 492 :
## Valor de x igual a -4.999614
## Iteraçao 493 :
## Valor de x igual a -4.999622
## Iteraçao 494 :
## Valor de x igual a -4.99963
## Iteraçao 495 :
## Valor de x igual a -4.999637
## Iteraçao 496 :
## Valor de x igual a -4.999644
## Iteraçao 497 :
## Valor de x igual a -4.999651
## Iteraçao 498 :
## Valor de x igual a -4.999658
## Iteraçao 499 :
## Valor de x igual a -4.999665
## Iteraçao 500 :
## Valor de x igual a -4.999672
## Iteraçao 501 :
## Valor de x igual a -4.999678
## Iteraçao 502 :
## Valor de x igual a -4.999685
## Iteraçao 503 :
## Valor de x igual a -4.999691
## Iteraçao 504 :
## Valor de x igual a -4.999697
## Iteraçao 505 :
## Valor de x igual a -4.999703
## Iteraçao 506 :
## Valor de x igual a -4.999709
## Iteraçao 507 :
## Valor de x igual a -4.999715
## Iteraçao 508 :
## Valor de x igual a -4.999721
## Iteraçao 509 :
## Valor de x igual a -4.999726
## Iteraçao 510 :
## Valor de x igual a -4.999732
## Iteraçao 511 :
## Valor de x igual a -4.999737
## Iteraçao 512 :
## Valor de x igual a -4.999742
## Iteraçao 513 :
## Valor de x igual a -4.999748
## Iteraçao 514 :
## Valor de x igual a -4.999753
## Iteraçao 515 :
## Valor de x igual a -4.999758
## Iteraçao 516 :
## Valor de x igual a -4.999762
## Iteraçao 517 :
## Valor de x igual a -4.999767
## Iteraçao 518 :
## Valor de x igual a -4.999772
## Iteraçao 519 :
## Valor de x igual a -4.999776
## Iteraçao 520 :
## Valor de x igual a -4.999781
## Iteraçao 521 :
## Valor de x igual a -4.999785
## Iteraçao 522 :
## Valor de x igual a -4.99979
## Iteraçao 523 :
## Valor de x igual a -4.999794
## Iteraçao 524 :
## Valor de x igual a -4.999798
## Iteraçao 525 :
## Valor de x igual a -4.999802
## Iteraçao 526 :
## Valor de x igual a -4.999806
## Iteraçao 527 :
## Valor de x igual a -4.99981
## Iteraçao 528 :
## Valor de x igual a -4.999814
## Iteraçao 529 :
## Valor de x igual a -4.999817
## Iteraçao 530 :
## Valor de x igual a -4.999821
## Iteraçao 531 :
## Valor de x igual a -4.999825
## Iteraçao 532 :
## Valor de x igual a -4.999828
## Iteraçao 533 :
## Valor de x igual a -4.999832
## Iteraçao 534 :
## Valor de x igual a -4.999835
## Iteraçao 535 :
## Valor de x igual a -4.999838
## Iteraçao 536 :
## Valor de x igual a -4.999841
## Iteraçao 537 :
## Valor de x igual a -4.999845
## Iteraçao 538 :
## Valor de x igual a -4.999848
## Iteraçao 539 :
## Valor de x igual a -4.999851
## Iteraçao 540 :
## Valor de x igual a -4.999854
## Iteraçao 541 :
## Valor de x igual a -4.999857
## Iteraçao 542 :
## Valor de x igual a -4.99986
## Iteraçao 543 :
## Valor de x igual a -4.999862
## Iteraçao 544 :
## Valor de x igual a -4.999865
## Iteraçao 545 :
## Valor de x igual a -4.999868
## Iteraçao 546 :
## Valor de x igual a -4.99987
## Iteraçao 547 :
## Valor de x igual a -4.999873
## Iteraçao 548 :
## Valor de x igual a -4.999876
## Iteraçao 549 :
## Valor de x igual a -4.999878
## Iteraçao 550 :
## Valor de x igual a -4.99988
## Iteraçao 551 :
## Valor de x igual a -4.999883
## Iteraçao 552 :
## Valor de x igual a -4.999885
## Iteraçao 553 :
## Valor de x igual a -4.999888
## Iteraçao 554 :
## Valor de x igual a -4.99989
## Iteraçao 555 :
## Valor de x igual a -4.999892
## Iteraçao 556 :
## Valor de x igual a -4.999894
## Iteraçao 557 :
## Valor de x igual a -4.999896
## Iteraçao 558 :
## Valor de x igual a -4.999898
## Iteraçao 559 :
## Valor de x igual a -4.9999
## Iteraçao 560 :
## Valor de x igual a -4.999902
## Iteraçao 561 :
## Valor de x igual a -4.999904
## Iteraçao 562 :
## Valor de x igual a -4.999906
## Iteraçao 563 :
## Valor de x igual a -4.999908
## Iteraçao 564 :
## Valor de x igual a -4.99991
## Iteraçao 565 :
## Valor de x igual a -4.999912
## Iteraçao 566 :
## Valor de x igual a -4.999913
## Iteraçao 567 :
## Valor de x igual a -4.999915
## Iteraçao 568 :
## Valor de x igual a -4.999917
## Iteraçao 569 :
## Valor de x igual a -4.999919
## Iteraçao 570 :
## Valor de x igual a -4.99992
## Iteraçao 571 :
## Valor de x igual a -4.999922
## Iteraçao 572 :
## Valor de x igual a -4.999923
## Iteraçao 573 :
## Valor de x igual a -4.999925
## Iteraçao 574 :
## Valor de x igual a -4.999926
## Iteraçao 575 :
## Valor de x igual a -4.999928
## Iteraçao 576 :
## Valor de x igual a -4.999929
## Iteraçao 577 :
## Valor de x igual a -4.999931
## Iteraçao 578 :
## Valor de x igual a -4.999932
## Iteraçao 579 :
## Valor de x igual a -4.999933
## Iteraçao 580 :
## Valor de x igual a -4.999935
## Iteraçao 581 :
## Valor de x igual a -4.999936
## Iteraçao 582 :
## Valor de x igual a -4.999937
## Iteraçao 583 :
## Valor de x igual a -4.999939
## Iteraçao 584 :
## Valor de x igual a -4.99994
## Iteraçao 585 :
## Valor de x igual a -4.999941
## Iteraçao 586 :
## Valor de x igual a -4.999942
## Iteraçao 587 :
## Valor de x igual a -4.999943
## Iteraçao 588 :
## Valor de x igual a -4.999945
## Iteraçao 589 :
## Valor de x igual a -4.999946
## Iteraçao 590 :
## Valor de x igual a -4.999947
## Iteraçao 591 :
## Valor de x igual a -4.999948
## Iteraçao 592 :
## Valor de x igual a -4.999949
## Iteraçao 593 :
## Valor de x igual a -4.99995
## Iteraçao 594 :
## Valor de x igual a -4.999951
## Iteraçao 595 :
## Valor de x igual a -4.999952
print(paste0("O mínimo local da função ocorre em: ", cur_x))
## [1] "O mínimo local da função ocorre em: -4.99995184903182"
Observe que o algoritmo convergiu bem, chegou em -4.9999, que é praticamente igual a solução analítica -5! Observe também que esse exemplo é só para fins didaticos, em casos reais a função de custo é bem mais complicada e não conseguimos uma solução analitica. Era isso, espero que tenha compreendido a intuição de um dos principais algoritmos de otimização de ML. Não foi usado nenhuma mágica, apenas matemática e computação.
Keep calm and analysing data!