Por que nesse artigo para fazer a Descida de Gradiente ele aparentemente não utiliza subtração do valor estimado pelo valor desejado para calcular o erro?
Artigo: https://towardsdatascience.com/gradient-descent-algorithm-a-deep-dive-cf04e8115f21, usei o tradutor para portugues.
Código extraido do artigo towardsdatascience citado acima:
def func1(x:float):
return x**2-4*x+1
def gradient_func1(x:float):
return 2*x - 4
def gradient_descent(start: float, gradient: Callable[[float], float],
learn_rate: float, max_iter: int, tol: float = 0.01):
x = start
steps = [start] # history tracking
for _ in range(max_iter):
diff = learn_rate*gradient(x)
if np.abs(diff) < tol:
break
x = x - diff
steps.append(x) # history tracing
return steps, x
Tenho algumas duvidas:
(1) - Por que nesse artigo da towardsdatascience ele não usa subtração do valor desejado com o valor estimado?
(2) - Por que nesse artigo da towardsdatascience ao invéz de usar subtração para calcular o erro, ele usa uma variavel chamada diff que é apenas a derivada da função de ativação usada?
(3) - Outra duvida: eu posso fazer uma Descida de Gradiente sem precisar fazer dessa forma? eu posso fazer uma Descida de Gradiente que não usa derivada da função ? ou seja uma que use apenas o erro(subtração do valor real pelo valor de saida) ?
Vou citar a formula de calculo do gradiente que vi aqui num curso aqui da alura, pra ajudar a expressar minha duvida:
Por exemplo, nessa imagem da formula do curso de regressão linear aqui da alura ele não usa derivada da função de ativação usada. Então por isso fico na duvida: Por que no artigo que citei da towardsdatascience ele usou derivada e não usou subtração do erro? E minha maior duvida sobre isso: Eu posso fazer a Descida de Gradiente dessa forma como foi citado nessa ultima imagem da formula em python de um curso aqui da alura? sem usar a derivada? apenas usando a subtração do erro?
(4) - qual a diferença das duas formas(da do artigo que usa derivada e a dessa imagem que citei que não usa derivada)? ambas são validas