Calculadora de Descida do Gradiente

Desça a partir de um ponto inicial com gradientes adaptativos, etapas de retrocesso, visualização da trajetória e diagnósticos de convergência.

Os resultados são calculados automaticamente conforme você informa os dados.

Fórmula e interpretação
Resultado Informe uma função e um ponto inicial para executar a descida do gradiente.

▼ Veja explicações e dicas abaixo ▼

O que é descida do gradiente?

A descida do gradiente é um método iterativo para encontrar um valor menor de uma função. Em vez de resolver o mínimo em uma única etapa algébrica, ela começa em um ponto inicial, estima qual direção é subida e então se move na direção oposta.

Para uma função de duas variáveis \(f(x,y)\), imagine que você está sobre uma superfície cuja altura é o valor da função. O gradiente aponta na direção de maior aumento local. A descida do gradiente se move contra essa direção, portanto o próximo ponto geralmente é menor que o atual quando o tamanho do passo é razoável.

Essa ideia é usada em otimização numérica, aprendizado de máquina, estatística, engenharia, economia e matemática aplicada. Ela é especialmente útil quando uma função é complexa demais para ser minimizada à mão ou quando só estão disponíveis avaliações numéricas da função.


Por que a descida do gradiente é importante

Muitos problemas reais podem ser escritos como problemas de minimização. Um modelo pode tentar minimizar o erro de previsão, um engenheiro pode tentar minimizar o custo ou a energia, e um estudante pode querer entender como um algoritmo procura um mínimo.

A descida do gradiente é importante porque transforma um problema de otimização difícil em uma sequência repetível de pequenos passos:

  1. Avalie a função perto do ponto atual.
  2. Estime a inclinação local.
  3. Mova-se ladeira abaixo.
  4. Repita até que o resultado seja bom o bastante ou o limite de iterações escolhido seja atingido.

O método é simples, mas seu comportamento depende muito do formato da função, do ponto inicial, da taxa de aprendizado e da confiabilidade da estimativa do gradiente.


Termos importantes

  • Função objetivo: a função que está sendo minimizada. Nesta calculadora, o objetivo é uma expressão de duas variáveis escrita como \(f(x,y)\).
  • Ponto atual: o par de coordenadas atual \((x_k,y_k)\) na iteração \(k\).
  • Gradiente: um vetor de derivadas parciais. Para \(f(x,y)\), ele descreve como a função muda quando \(x\) e \(y\) mudam.
  • Gradiente estimado: uma aproximação numérica do gradiente, em vez de uma derivada simbólica exata.
  • Taxa de aprendizado: o passo máximo positivo de teste, geralmente escrito como \(\alpha\). A calculadora o reduz automaticamente quando um passo completo não satisfaz a condição de descida.
  • Iteração: uma etapa de atualização do algoritmo. A iteração \(0\) é o ponto inicial antes da aplicação de qualquer atualização.
  • Norma do gradiente: o comprimento do vetor gradiente. Uma norma pequena do gradiente geralmente sugere que o caminho está perto de um ponto estacionário.
  • Momento: uma modificação que leva parte do movimento anterior para a próxima atualização, como um termo de velocidade.
  • Convergência: o processo pelo qual as iterações se aproximam de um mínimo ou ponto estacionário.

Como funciona a descida do gradiente

For a point

$$ z_k = \begin{bmatrix}x_k \\ y_k\end{bmatrix}, $$

a atualização básica da descida do gradiente é

$$ z_{k+1} = z_k - \alpha \nabla f(z_k). $$

Em palavras, o próximo ponto é igual ao ponto atual menos a taxa de aprendizado multiplicada pelo gradiente. O sinal de menos é importante: o gradiente aponta para cima, portanto subtraí-lo faz o caminho descer.

Para uma função de duas variáveis, o gradiente é

$$ \nabla f(x,y) = \begin{bmatrix} \frac{\partial f}{\partial x}(x,y) \\ \frac{\partial f}{\partial y}(x,y) \end{bmatrix}. $$

Esta calculadora estima numericamente as duas derivadas parciais usando diferenças finitas centrais. Na direção \(x\), ela amostra a função ligeiramente à direita e à esquerda do ponto atual:

$$ \widehat{\partial_x f}(x,y) \approx \frac{f(x+h_x,y)-f(x-h_x,y)}{2h_x}. $$

Na direção \(y\), ela usa a mesma ideia acima e abaixo do ponto:

$$ \widehat{\partial_y f}(x,y) \approx \frac{f(x,y+h_y)-f(x,y-h_y)}{2h_y}. $$

A calculadora testa vários tamanhos adaptativos de passo para diferenças finitas, com base na raiz cúbica da precisão de ponto flutuante e na escala das coordenadas. Ela compara estimativas centradas com extrapolação de Richardson, acompanha a incerteza de arredondamento e verifica como as inclinações unilaterais mudam conforme o passo varia. Uma estimativa incerta demais ou que pareça não diferenciável é informada como falha numérica, em vez de ser usada em uma atualização.

$$ h_i \approx \sqrt[3]{\varepsilon}\max(1,|z_i|), \quad\text{with several nearby scales checked for reliability.} $$

A norma do gradiente estimado é o comprimento euclidiano do gradiente estimado:

$$ \|\widehat{\nabla f}(x,y)\|_2 = \sqrt{\widehat{\partial_x f}(x,y)^2 + \widehat{\partial_y f}(x,y)^2}. $$

Uma norma menor do gradiente geralmente significa que a função é mais plana nesse ponto. Isso pode indicar progresso em direção a um mínimo, mas não garante um mínimo global.

Atualização da descida simples

A taxa de aprendizado informada \(\alpha\) é um passo máximo inicial de teste. No modo de descida simples, a calculadora usa retrocesso de Armijo: testa esse limite, divide repetidamente pela metade um teste que não produz descida suficiente e registra o valor aceito \(\alpha_k\leq\alpha\).

$$ x_{k+1} = x_k - \alpha_k\widehat{\partial_x f}(x_k,y_k), $$
$$ y_{k+1} = y_k - \alpha_k\widehat{\partial_y f}(x_k,y_k). $$

Atualização com momento

Quando o momento está ativado, a calculadora mantém um vetor de velocidade. Começando com velocidade zero, ela usa a mesma taxa de teste aceita na atualização da velocidade. Se a direção do momento não for descendente, a calculadora redefine a velocidade e tenta novamente uma direção de descida simples.

$$ v_{k+1} = \beta v_k - \alpha_k\widehat{\nabla f}(z_k), $$
$$ z_{k+1} = z_k + v_{k+1}. $$

Aqui, \(\beta\) controla quanto da velocidade anterior é levado adiante. O momento pode ajudar o caminho a avançar de forma mais constante por um vale longo e estreito, mas também pode causar ultrapassagem ou oscilações quando as configurações não são adequadas.


Exemplos práticos de descida do gradiente

Exemplo 1: uma função simples em forma de tigela

Considere

$$ f(x,y) = (x-2)^2 + (y+1)^2. $$

Essa função tem seu mínimo em \((2,-1)\), onde \(f(x,y)=0\). Suponha que o ponto inicial seja \((-2,3)\) e que a taxa de aprendizado seja \(\alpha=0.18\).

O gradiente exato deste exemplo é

$$ \nabla f(x,y) = \begin{bmatrix}2(x-2) \\ 2(y+1)\end{bmatrix}. $$

Em \((-2,3)\), o gradiente é

$$ \nabla f(-2,3) = \begin{bmatrix}-8 \\ 8\end{bmatrix}. $$

Um passo da descida do gradiente produz

$$ x_1 = -2 - 0.18(-8) = -0.56, $$
$$ y_1 = 3 - 0.18(8) = 1.56. $$

O valor da função cai de

$$ f(-2,3)=32 $$

para

$$ f(-0.56,1.56)=13.1072. $$

Esse é o objetivo básico da descida do gradiente: cada passo razoável deve levar o ponto a um valor menor.


Exemplo 2: retrocesso de Armijo para uma taxa de teste grande

Agora considere

$$ f(x,y)=x^2+4y^2. $$

A direção \(y\) é muito mais inclinada que a direção \(x\) por causa do coeficiente \(4\). O gradiente é

$$ \nabla f(x,y)=\begin{bmatrix}2x \\ 8y\end{bmatrix}. $$

Partindo de \((2,2)\) com um limite inicial \(\alpha=0.6\), o teste completo produziria

$$ x_1 = 2 - 0.6(4) = -0.4, $$
$$ y_1 = 2 - 0.6(16) = -7.6. $$

Esse teste aumenta o valor da função de

$$ f(2,2)=20 $$

to

$$ f(-0.4,-7.6)=231.2. $$

portanto o retrocesso de Armijo o rejeita. Em seguida, a calculadora tenta \(0.3\) e aceita \(\alpha_1=0.15\). Seu primeiro passo registrado é \((1.4,-0.4)\), em que \(f(1.4,-0.4)=2.6\). O teste completo rejeitado é uma evidência útil de que o limite inicial era grande demais, mas não é o passo informado pela calculadora.


Exemplo 3: um canto acentuado pode enganar um gradiente numérico

As diferenças finitas funcionam melhor quando a função é suave perto do ponto atual. Uma função não suave pode produzir informações enganosas.

Por exemplo, considere

$$ f(x,y)=|x|+y^2. $$

Em \(x=0\), a derivada de \(|x|\) não está definida. Uma diferença finita central na direção \(x\) produz

$$ \frac{|0+h|-|0-h|}{2h}=\frac{h-h}{2h}=0. $$

Esse valor parece plano, embora a função tenha um canto acentuado. Isso não é um erro de aritmética; é uma limitação do uso de amostras numéricas simétricas perto de um ponto não suave.


Exemplo 4: o vale de Rosenbrock

A função de Rosenbrock é frequentemente usada para testar métodos de otimização:

$$ f(x,y)=100(y-x^2)^2+(1-x)^2. $$

Seu mínimo está em \((1,1)\), mas o caminho até esse ponto passa por um vale curvo, longo e estreito. A descida do gradiente pode encontrar o vale, mas avançar lentamente por ele mesmo com retrocesso. Este exemplo é útil porque mostra que uma função pode ter uma fórmula simples e ainda assim ser desafiadora para um otimizador iterativo.


Como interpretar o resultado

O resultado do passo selecionado mostra as coordenadas e o valor da função na iteração atualmente selecionada. Pode ser o passo final ou um passo anterior escolhido com o controle deslizante ou a tabela.

O resumo diferencia a última iteração do melhor valor da função objetivo encontrado. Um caminho não convergente pode terminar em um ponto que não deve ser descrito como mínimo, mesmo quando melhorou bastante em relação ao início.

A norma final estimada do gradiente indica quão plana a função parece no ponto final. Um valor muito pequeno geralmente sugere que o caminho está perto de um ponto estacionário. Um valor grande sugere que a função ainda tem inclinação e que podem ser necessárias mais iterações, outra taxa de aprendizado ou outro ponto inicial.

O status de término informa se a tolerância do gradiente foi atingida, se o caminho estagnou, se a busca linear falhou, se uma estimativa numérica se tornou pouco confiável ou se o limite de iterações foi atingido. Apenas o primeiro caso corresponde a um ponto estacionário convergente, e sua classificação pelo hessiano ainda é uma avaliação numérica local.

Os diagnósticos do retrocesso mostram quantas vezes a taxa de aprendizado máxima precisou ser reduzida e se o momento foi redefinido. Eles descrevem apenas esta execução e não provam que a taxa máxima escolhida seja globalmente ideal.

O gráfico mostra o caminho no plano de coordenadas \(x\)-\(y\). Ele não mostra linhas de contorno nem uma superfície tridimensional, portanto um caminho que parece reto no gráfico não significa necessariamente que o valor da função objetivo tenha mudado suavemente.


Erros comuns e equívocos

Erro 1: achar que a taxa de aprendizado é apenas um detalhe.

A taxa de aprendizado controla o tamanho do passo. Uma taxa pequena pode tornar o progresso dolorosamente lento, enquanto uma taxa grande pode causar oscilação, ultrapassagem ou divergência.

Erro 2: esperar derivadas exatas.

Esta calculadora estima o gradiente numericamente. Para funções suaves, as diferenças finitas centrais costumam ser úteis. Perto de descontinuidades, cantos acentuados ou fronteiras do domínio, a estimativa pode ser imprecisa ou indefinida.

Erro 3: usar multiplicação implícita.

O analisador de expressões aceita multiplicação implícita, portanto 2x e x(y+1) são válidos. Você pode escrever 2*x e x*(y+1) quando operadores explícitos tornam uma expressão longa mais fácil de ler.

Erro 4: inserir variáveis incompatíveis.

A função deve usar as variáveis \(x\) e \(y\). Outros nomes de variáveis não fazem parte do problema de otimização de duas variáveis.

Erro 5: tratar uma norma pequena do gradiente como garantia de mínimo global.

Uma norma pequena do gradiente pode indicar um ponto estacionário, mas um ponto estacionário pode ser um mínimo local, um ponto de sela ou uma região plana. O ponto inicial e o formato da função continuam sendo importantes.

Erro 6: supor que o gráfico é um gráfico de contorno.

O caminho exibido é um traçado das iterações no plano \(x\)-\(y\). Por si só, ele não mostra a altura da função objetivo fora do caminho.

Erro 7: tratar a melhor iteração como um mínimo comprovado.

A melhor iteração é simplesmente o menor valor da função objetivo observado neste caminho. Ela pode ser local, não estacionária ou estar limitada pelo ponto inicial e pelo orçamento de iterações.


Quando usar a descida do gradiente

Use a descida do gradiente quando quiser explorar como um otimizador iterativo se comporta em uma função de duas variáveis. Ela é especialmente útil para:

  • visualizar como um ponto inicial se move em um plano \(x\)-\(y\);
  • estudar o efeito da taxa de aprendizado;
  • comparar a descida simples com o momento;
  • verificar se uma função parece diminuir ao longo das iterações;
  • ensinar ou aprender conceitos de otimização numérica;
  • experimentar funções objetivo suaves, como funções quadráticas ou a função de Rosenbrock.

Para problemas de otimização de alta dimensão, com restrições, ruidosos ou de nível de produção, use uma biblioteca de otimização dedicada ou um método desenvolvido para essa classe de problemas.


Limitações e pontos importantes

Esta calculadora foi projetada para funções reais finitas de exatamente duas variáveis, \(x\) e \(y\). Ela não resolve problemas de otimização de dimensão maior, problemas de otimização com restrições, problemas de descida estocástica do gradiente, problemas com otimizadores adaptativos ou problemas de valores complexos.

O gradiente é estimado com diferenças finitas centrais adaptativas, comparações de Richardson, verificações das inclinações para frente e para trás e estimativas de incerteza de ponto flutuante. Se amostras próximas forem inválidas, não finitas, não diferenciáveis ou estiverem abaixo da resolução numérica, a calculadora mantém o caminho válido e informa uma falha numérica.

A taxa de aprendizado informada é um máximo inicial. Cada iteração usa o retrocesso de Armijo e pode aceitar um valor menor. A taxa de aprendizado aceita é mostrada na tabela do caminho.

O momento começa com velocidade zero, e beta deve estar entre \(0\) e \(0.99\). Se o momento apontar para cima, a velocidade será redefinida antes que a busca linear tente novamente uma direção de descida simples.

A iteração \(0\) registra o ponto inicial. Uma execução que conclui todas as \(N\) atualizações solicitadas contém \(N+1\) pontos; convergência, estagnação, uma busca linear malsucedida ou uma falha numérica podem interromper a execução antes e deixar um caminho válido mais curto.

Uma execução pode parar porque a tolerância do gradiente foi atingida, o caminho estagnou na resolução de ponto flutuante, a busca linear não encontrou um passo descendente confiável, uma estimativa numérica falhou ou o limite de iterações foi atingido. As execuções não convergentes mantêm seu caminho válido e são avisos, não mínimos informados.

Quando a tolerância do gradiente é atingida, a calculadora estima um hessiano local e informa um provável mínimo local, ponto de sela, provável máximo local ou ponto plano inconclusivo. Essa é uma classificação local que considera a incerteza, não uma prova de mínimo global.

Os números exibidos são arredondados para facilitar a leitura. Valores muito pequenos podem ser exibidos como \(0\), e valores finitos muito grandes ou muito pequenos podem ser exibidos em notação exponencial. Use o resultado como uma aproximação numérica, não como uma solução simbólica exata.

O número de iterações deve ser inteiro, entre \(1\) e \(300\). Caminhos longos podem mostrar apenas uma janela de linhas da tabela ao redor da iteração selecionada.

Para trabalhos acadêmicos, pesquisas, engenharia ou outras decisões importantes, verifique o resultado com derivadas analíticas, um software independente ou um instrutor ou profissional qualificado, quando apropriado.


Como usar esta calculadora

  1. Insira uma função finita de duas variáveis \(f(x,y)\) usando \(x\), \(y\), números, operadores, parênteses e funções matemáticas compatíveis.
  2. Insira as coordenadas iniciais de \(x\) e \(y\).
  3. Insira uma taxa de aprendizado máxima positiva \(\alpha\).
  4. Insira um limite inteiro de iterações entre \(1\) e \(300\), além de uma tolerância positiva para o gradiente.
  5. Opcionalmente, ative o momento e insira beta entre \(0\) e \(0.99\).
  6. Revise o passo selecionado, os melhores e os últimos valores da função objetivo, a incerteza do gradiente, as taxas de aprendizado aceitas, o status de término, a classificação estacionária, o gráfico e a tabela de iterações.
  7. Use o controle deslizante de passos ou a tabela de iterações para examinar pontos anteriores e posteriores no caminho de descida.
  8. Ajuste a taxa de aprendizado, a quantidade de iterações, o ponto inicial ou a configuração do momento se o caminho aumentar, oscilar ou mudar lentamente demais.

Perguntas frequentes

O que a taxa de aprendizado faz?

A taxa de aprendizado informada \(\alpha\) é o maior passo que a calculadora tentará. Se esse passo não produzir descida suficiente, o retrocesso de Armijo o divide repetidamente pela metade. Um limite muito pequeno ainda pode tornar o progresso lento.


O que significa a norma estimada do gradiente?

A norma estimada do gradiente é o comprimento do vetor gradiente numérico em um ponto. Uma norma pequena significa que a função parece localmente plana segundo a estimativa por diferenças finitas. Ela pode sugerir convergência, mas não prova que o ponto seja o mínimo global.


Por que o valor da função pode aumentar durante a descida do gradiente?

O valor da função pode aumentar quando o passo é grande demais, a função é íngreme ou curva, o momento leva o caminho longe demais ou o gradiente numérico não é confiável. Aumentos ocasionais podem acontecer em alguns métodos, mas aumentos frequentes geralmente indicam que é preciso reduzir a taxa de aprendizado ou reconsiderar as configurações da função.


Por que a calculadora usa diferenças finitas em vez de derivadas exatas?

As diferenças finitas permitem que a calculadora estime um gradiente apenas a partir dos valores da função. Isso a torna flexível para muitas expressões inseridas, mas também significa que o gradiente é aproximado. Derivadas simbólicas exatas podem ser mais precisas quando estão disponíveis e corretas.


O momento sempre melhora a descida do gradiente?

Não. O momento pode ajudar quando gradientes sucessivos apontam para direções semelhantes, especialmente em vales estreitos. Ele também pode causar ultrapassagem ou oscilação se beta ou a taxa de aprendizado forem mal escolhidos.


A descida do gradiente pode encontrar o mínimo global?

Às vezes, mas não sempre. Para funções convexas bem comportadas, os métodos de gradiente têm garantias mais fortes sob condições adequadas. Para funções não convexas, o resultado pode depender do ponto inicial, da taxa de aprendizado, do formato da função e da regra de parada.


Fontes e referências

Livros

  1. Jorge Nocedal e Stephen J. Wright. Numerical Optimization. 2. ed., Springer, 2006. Capítulos relevantes: “Fundamentals of Unconstrained Optimization”, “Line Search Methods” e “Calculating Derivatives”. Página do livro na Springer.
  2. Stephen Boyd e Lieven Vandenberghe. Convex Optimization. Cambridge University Press, 2004. Capítulo relevante: “Unconstrained Minimization”. Página do livro em Stanford e Página do livro na Cambridge.
  3. Ian Goodfellow, Yoshua Bengio e Aaron Courville. Deep Learning. MIT Press, 2016. Capítulo relevante: “Optimization for Training Deep Models”, especialmente as seções sobre descida estocástica do gradiente, comportamento da taxa de aprendizado e momento. Capítulo do livro online.

Fontes online e educacionais

  1. Stephen Boyd. “Unconstrained Minimization.” Slides da disciplina EE364A, Stanford University. Usado para a estrutura do método de descida, a direção de atualização da descida do gradiente e os critérios de parada baseados na norma do gradiente. Slides da aula.
  2. Autar Kaw e colaboradores. “2.02: Numerical Differentiation of Continuous Functions.” Mathematics LibreTexts, acessado em 28 de junho de 2026. Usado para a aproximação de derivadas por diferenças finitas centrais. Página no LibreTexts.
  3. Eric W. Weisstein. “Rosenbrock Function.” MathWorld — um recurso da Wolfram, acessado em 28 de junho de 2026. Usado para a forma da função de Rosenbrock, os parâmetros comuns e o contexto do mínimo global. Página no MathWorld.