Pular para o conteúdo principal

Função objetivo explicada: definição, exemplos e otimização

Entenda o que é uma função objetivo, como ela funciona em otimização e machine learning, e como defini-la e interpretá-la com exemplos reais.
Atualizado 4 de mai. de 2026  · 11 min lido

Todo modelo de machine learning que você treina está resolvendo um problema de otimização — e o que você realmente quer otimizar é chamado de função objetivo.

Em termos simples, é uma função matemática que mede quão "boa" é uma solução. Ela recebe um conjunto de entradas e devolve um único score. O objetivo é sempre encontrar os valores que maximizam ou minimizam esse score. Funções objetivo estão no coração de tudo, de programação linear a deep learning. É daquelas coisas que você passa a ver em todo lugar depois que entende como funcionam.

Neste artigo, vou explicar o que são funções objetivo, como elas diferem de funções de loss e de custo, e como são usadas em machine learning e otimização.

Quer um mergulho em deep learning que continua atual em 2026? Inscreva-se no nosso curso Deep Learning in Python para criar um portfólio em PyTorch.

O que é uma função objetivo?

Uma função objetivo é uma função matemática que avalia quão boa é uma solução.

Você fornece um conjunto de entradas — parâmetros do modelo, variáveis de decisão — e ela retorna um único número. Esse número indica o quão bem sua solução atual se sai. Quanto maior (ou menor) esse número, melhor (ou pior) é a solução.

Aproveitando o tema, vamos falar de otimização em geral.

É o processo de encontrar as entradas que empurram esse número na direção certa. Se você quer minimizar, busca o menor valor possível. Se quer maximizar, busca o maior. De qualquer forma, é a função objetivo que você usa como referência.

Em bom português, pense nela como um sistema de pontuação. Cada solução candidata recebe uma nota, e seu trabalho é encontrar a que tem a melhor nota.

Função objetivo vs. função de loss vs. função de custo

Esses três termos são usados como sinônimos o tempo todo — mas não significam exatamente a mesma coisa.

A função objetivo é o termo mais amplo. É qualquer função que você tenta maximizar ou minimizar. Não precisa envolver erro ou previsão — ela apenas define o que "melhor" significa para o seu problema.

Uma função de loss mede o erro para um único exemplo de treino — o quão distante a previsão do seu modelo está do valor real. O erro quadrático médio para um ponto de dados, por exemplo, é uma função de loss.

Uma função de custo agrega o loss em todo o conjunto de dados, geralmente por meio da média. É a função que você de fato minimiza durante o treino — ela resume o desempenho do modelo em todos os exemplos, não apenas em um.

Na prática, a maioria dos frameworks e artigos de ML usa esses termos de forma flexível. Você verá "loss" onde "cost" seria mais preciso, e "objective" sendo usado para se referir aos três.

As distinções importam quando você lê artigos científicos. O contexto indica a que termo o autor realmente se refere.

Para uma comparação mais concreta, veja a tabela abaixo:

Tabela de comparação entre função objetivo/loss/custo

Tabela de comparação entre função objetivo/loss/custo

Funções objetivo em otimização

Todo problema de otimização tem um objetivo e um conjunto de limites.

A função objetivo define o objetivo — o que você está tentando maximizar ou minimizar. As restrições definem os limites — as fronteiras dentro das quais sua solução precisa ficar. Juntas, elas enquadram o problema.

Considere um exemplo simples de alocação de recursos.

Digamos que você gerencia uma fábrica que produz dois produtos e quer maximizar o lucro. Sua função objetivo captura o lucro total em função de quantas unidades de cada produto você fabrica. Suas restrições capturam os limites — matérias-primas disponíveis, horas de máquina, capacidade de mão de obra. A função objetivo diz o que otimizar e as restrições dizem com o que você pode contar.

A programação linear é um dos cenários mais comuns onde isso se aplica. É um método para otimizar uma função objetivo linear sujeita a restrições lineares. É usada em logística, agendamento, cadeia de suprimentos, finanças e muito mais. A matemática é bem estabelecida e os solvers conseguem lidar com problemas com milhares de variáveis.

É importante notar que a função objetivo não muda as restrições existentes — ela apenas diz ao solver o que buscar. Se você muda a função objetivo, obterá uma solução completamente diferente, mesmo com as mesmas restrições.

Funções objetivo em machine learning

Em machine learning, a função objetivo define o que o seu modelo está, de fato, aprendendo a fazer.

Sempre que você treina um modelo, executa um algoritmo de otimização (pense em gradient descent, Adam, RMSProp) que ajusta os parâmetros para minimizar ou maximizar a função objetivo. O modelo não sabe nada sobre o seu problema. Ele só enxerga o score que a função objetivo fornece e tenta melhorar esse score a cada atualização.

Isso significa que sua escolha de função objetivo molda o resultado. Vale a pena testar algumas para ver qual funciona melhor no seu caso.

Erro quadrático médio (regressão)

O erro quadrático médio (MSE) é a função objetivo padrão para problemas de regressão. Ele mede a diferença quadrática média entre as previsões do seu modelo e os valores-alvo reais.

Fórmula do MSE

Fórmula do MSE

Elevar ao quadrado torna todos os erros positivos e penaliza erros grandes mais do que pequenos. Uma previsão com erro de 10 contribui com 100 para a soma — não apenas 10. Isso torna o MSE sensível a outliers, algo para ficar de olho em dados reais mais bagunçados.

import numpy as np

y_true = np.array([3.0, 5.0, 2.5, 7.0])
y_pred = np.array([2.8, 5.2, 2.0, 6.5])

mse = np.mean((y_true - y_pred) ** 2)
print(f"MSE: {mse:.4f}")

Saída do MSE

Saída do MSE

Cross-entropy loss (classificação)

A cross-entropy loss é a função objetivo padrão para problemas de classificação. Ela mede o quão distante a distribuição de probabilidades prevista pelo modelo está da distribuição verdadeira das classes.

Função de perda de cross-entropy

Função de perda de cross-entropy

Se o modelo atribui alta probabilidade à classe correta, o loss é baixo. Se ele está confiante e erra, o loss fica alto — e isso é penalizado. É isso que empurra o modelo a prever a classe certa e a ter confiança nisso.

import numpy as np

# True labels (one-hot encoded)
y_true = np.array([1, 0, 0])

# Model's predicted probabilities
y_pred = np.array([0.7, 0.2, 0.1])

cross_entropy = -np.sum(y_true * np.log(y_pred))
print(f"Cross-Entropy Loss: {cross_entropy:.4f}")

Saída da cross-entropy

Saída da cross-entropy

Log-likelihood

Log-likelihood é comum em modelos probabilísticos e estatísticos. A função maximiza a probabilidade de que os parâmetros do seu modelo tenham gerado os dados observados.

Fórmula do log-likelihood

Fórmula do log-likelihood

Trabalha-se com o log da verossimilhança em vez da própria verossimilhança porque ele transforma um produto de probabilidades em uma soma, o que é muito mais fácil de computar e otimizar.

Na prática, a maioria dos frameworks minimiza o negative log-likelihood (NLL) em vez de maximizar o log-likelihood. É a mesma coisa — só invertida para que o gradient descent consiga trabalhar.

import numpy as np
from scipy.stats import norm

# Observed data
data = np.array([1.2, 2.3, 1.8, 2.1, 1.9])

# Assumed model parameters
mu, sigma = 2.0, 0.5

# Compute negative log-likelihood
nll = -np.sum(norm.logpdf(data, loc=mu, scale=sigma))
print(f"Negative Log-Likelihood: {nll:.4f}")

Saída do log-likelihood

Saída do log-likelihood

No fim das contas, treinar é apenas otimização. Cada forward pass calcula o valor da função objetivo. Cada backward pass calcula os gradientes. E cada atualização de parâmetro move o modelo na direção que melhora o score.

Funções objetivo convexas vs. não convexas

Nem toda função objetivo é igual. O formato dela determina o quão difícil é otimizar e se dá para confiar na solução encontrada.

Funções objetivo lineares

Uma função objetivo linear oferece uma relação em linha reta entre entradas e saída. Quando você altera qualquer entrada por um valor fixo, a saída muda por um valor fixo.

Funções lineares são usadas em programação linear, onde tanto a função objetivo quanto as restrições são lineares. Isso as torna a classe mais simples de funções objetivo para otimizar, já que os solvers conseguem encontrar de forma confiável o ótimo global, mesmo em problemas grandes.

Funções objetivo não lineares

Uma função objetivo não linear tem uma relação mais complexa entre entradas e saída. A maioria dos problemas do mundo real — e quase todos os modelos de machine learning — se encaixam nessa categoria.

MSE é não linear. Cross-entropy é não linear. As superfícies de loss de redes neurais são não lineares. A complexidade extra permite capturar relações ricas nos dados, mas também torna a otimização mais difícil.

Funções convexas versus não convexas

É aqui que a coisa fica interessante.

Uma função convexa tem formato de tigela. Qualquer segmento de reta traçado entre dois pontos da curva fica acima ou sobre a curva. Isso garante que qualquer mínimo local também seja o mínimo global — ou seja, se o otimizador encontrar um fundo, é o fundo de verdade.

Uma função não convexa tem formato mais irregular — vários vales, platôs e pontos de sela. Otimizadores podem ficar presos em um mínimo local, um vale que parece o fundo mas não é. Redes neurais profundas têm superfícies de loss altamente não convexas, por isso treinar exige cuidado com taxa de aprendizado, escolha de otimizador e inicialização.

Problemas convexos são resolvidos exatamente; problemas não convexos são resolvidos aproximadamente. A qualidade da solução depende da sua estratégia de otimização.

Para quem é mais visual, aqui vai uma comparação entre funções objetivo lineares, não lineares, convexas e não convexas:

Comparação de tipos de função objetivo

Comparação de tipos de função objetivo

Como funções objetivo são otimizadas

Depois de definir a função objetivo, você precisa de uma forma de minimizá-la ou maximizá-la. É aí que entram os algoritmos de otimização.

A abordagem mais comum é o gradient descent. A ideia é calcular o gradiente da função objetivo em relação aos parâmetros do modelo e dar um pequeno passo na direção que reduz o valor. Depois, repetir até que o valor pare de melhorar.

O gradiente nada mais é do que a derivada da função objetivo.

Ele indica a inclinação na sua posição atual e em que direção é a "subida". Para minimizar a função, você se move na direção oposta. Para maximizar, vai junto com ela.

Esse processo é iterativo: para chegar à solução, você faz uma série de pequenos ajustes, cada um aproximando os parâmetros do ótimo. O tamanho de cada passo é controlado pela taxa de aprendizado. Um valor grande demais pode fazer você "pular" o ótimo; um valor pequeno demais deixa o treino lento.

Na prática, a maioria dos frameworks usa variantes do gradient descent mais rápidas e estáveis que a versão básica:

  • Stochastic Gradient Descent (SGD) calcula o gradiente com um único exemplo aleatório por passo, em vez do dataset completo
  • Mini-batch gradient descent usa um pequeno lote de exemplos por passo — um meio-termo entre SGD e full-batch
  • Adam adapta a taxa de aprendizado para cada parâmetro, o que facilita a configuração

A função objetivo precisa ser diferenciável, ou pelo menos majoritariamente diferenciável, para que métodos baseados em gradiente funcionem. Sem derivada não há gradiente — e o otimizador fica sem rumo. É um ponto-chave para lembrar.

Exemplo de função objetivo

Vamos trazer isso para o concreto com um problema simples de regressão linear.

Suponha que você quer prever preços de casas com base na metragem. Você tem um dataset de casas com preços conhecidos e quer ajustar uma linha que minimize o erro de previsão. Sua função objetivo é o erro quadrático médio (MSE), cuja fórmula você já conhece.

As entradas são os parâmetros do modelo — a inclinação (slope) e o intercepto da linha. A saída é um único número — o erro quadrático médio entre todas as previsões. Aqui, quanto menor, melhor.

Veja como uma possível implementação em Python poderia ficar:

import numpy as np

np.random.seed(42)

# Generate some fake housing data
square_footage = np.random.uniform(500, 3000, 100)
true_price = 150 * square_footage + 50000 + np.random.normal(0, 15000, 100)

def predict(x, slope, intercept):
    return slope * x + intercept

def mse(y_true, y_pred):
    return np.mean((y_true - y_pred) ** 2)

# Try two different parameter sets
slope_a, intercept_a = 150, 50000  # good fit
slope_b, intercept_b = 80, 100000  # bad fit

pred_a = predict(square_footage, slope_a, intercept_a)
pred_b = predict(square_footage, slope_b, intercept_b)

print(f"MSE (good fit):  {mse(true_price, pred_a):,.2f}")
print(f"MSE (poor fit):  {mse(true_price, pred_b):,.2f}")

MSE: bom ajuste versus ajuste ruim

MSE: bom ajuste versus ajuste ruim

O primeiro conjunto de parâmetros produz um MSE muito menor, o que indica melhor ajuste aos dados. É exatamente isso que o otimizador usa para decidir em que direção se mover.

Para quem é visual, considere a imagem a seguir:

Exemplo de MSE

Exemplo de MSE

Você consegue ver os dois ajustes em relação aos dados e também a superfície do MSE em uma faixa de valores de slope — para visualizar a própria função objetivo.

O gráfico da esquerda mostra como os dois conjuntos de parâmetros se ajustam aos dados. O da direita mostra a superfície do MSE ao longo dos valores de slope — a função objetivo como uma curva, com um mínimo claro que o otimizador tenta encontrar. Cada passo do gradient descent se move nessa curva em direção a esse mínimo.

Restrições e funções objetivo

A função objetivo diz o que otimizar. As restrições dizem o que você pode fazer.

Na maioria dos problemas reais, você não pode simplesmente maximizar ou minimizar à vontade. Você trabalha dentro de limites, como orçamento, prazo ou capacidade física. Esses limites são chamados de restrições e definem o conjunto de soluções válidas que o otimizador pode escolher.

Veja um exemplo de manufatura.

Você quer maximizar o lucro em duas linhas de produto. Sem restrições, a resposta seria produzir o máximo possível. Mas você tem 500 horas de máquina e 1.000 unidades de matéria-prima disponíveis. Essas são suas restrições. A função objetivo é a mesma (maximizar o lucro), mas o otimizador só pode buscar soluções dentro da região permitida por essas restrições.

Quando você muda as restrições, a solução ótima muda também, mesmo que a função objetivo não mude.

Essa estrutura — uma função objetivo com um conjunto de restrições — é a base da otimização com restrições. É assim que funciona a programação linear, a otimização de portfólio e muitos problemas reais de planejamento.

Conclusão

Todo problema de otimização — seja treinando uma rede neural, alocando recursos ou ajustando um modelo de regressão — se resume a uma coisa: uma função que você tenta minimizar ou maximizar.

A função objetivo é essa função. Ela define o que "melhor" significa, guia cada atualização de parâmetro e determina o que seu modelo realmente aprende. Se você acerta na escolha, o modelo consegue resolver o problema que você tem. Se erra, ele resolve outro problema — muitas vezes sem um erro óbvio para te alertar.

Escolher a função objetivo certa é uma decisão de design em ciência de dados, pois ela molda tudo que vem depois. Como praticante, sinta-se à vontade para experimentar — há muitas funções objetivo disponíveis.

Sem saber por onde começar? Nossos cursos Model Validation in Python e Hyperparameter Tuning in Python são ótimos pontos de partida para cientistas de dados do nível iniciante ao intermediário.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Cientista de dados sênior baseado na Croácia. Principal redator técnico com mais de 700 artigos publicados, gerando mais de 10 milhões de visualizações. Autor do livro Automação do aprendizado de máquina com TPOT.

FAQs

O que é uma função objetivo?

Uma função objetivo é uma função matemática que mede quão boa é uma solução. Você fornece um conjunto de entradas, como parâmetros de modelo e variáveis de decisão, e ela retorna um único número. O objetivo é sempre encontrar as entradas que deixem esse número o mais alto ou o mais baixo possível.

Qual é a diferença entre função objetivo e função de loss?

Uma função de loss é um tipo específico de função objetivo usada em machine learning para medir o erro de previsão em um único exemplo de treino. Função objetivo é o termo mais amplo — pode se referir a qualquer função que você esteja minimizando ou maximizando, não apenas ao erro de previsão. Na prática, os dois termos são usados como sinônimos com frequência, mas a distinção importa ao ler artigos científicos.

Onde as funções objetivo são usadas?

Funções objetivo aparecem em qualquer problema que envolva otimização — machine learning, programação linear, alocação de recursos, finanças, logística e muito mais. Em machine learning, a função objetivo define o que o modelo aprende durante o treino. Fora de ML, ela define a meta em qualquer problema de otimização com ou sem restrições.

Por que a escolha da função objetivo importa em machine learning?

A função objetivo determina o que seu modelo realmente otimiza durante o treino. Se você escolher a errada, o modelo vai minimizar a coisa errada — e fará isso bem, o que torna o problema mais difícil de notar. Por exemplo, usar MSE em um problema de classificação não só gera resultados ruins, como resultados ruins com alta confiança, o que é pior.

Uma função objetivo pode ter múltiplos mínimos?

Sim — e esse é um dos grandes desafios ao treinar modelos de deep learning. Funções objetivo não convexas têm múltiplos mínimos locais, o que significa que um otimizador pode ficar preso em um vale que não é o melhor global. Por isso a inicialização de pesos, o agendamento da taxa de aprendizado e a escolha do otimizador importam — eles afetam se o otimizador vai encontrar uma boa solução no fim.

Tópicos

Aprenda com a DataCamp

Curso

Introdução à ciência de dados

2 h
848.4K
Uma introdução à ciência de dados sem programação.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

Explicação sobre a detecção de objetos YOLO

Entenda a detecção de objetos YOLO, seus benefícios, como ela evoluiu nos últimos anos e alguns aplicativos da vida real.
Zoumana Keita 's photo

Zoumana Keita

15 min

blog

O que é um algoritmo?

Aprenda algoritmos e sua importância no aprendizado de máquina. Entenda como os algoritmos resolvem problemas e executam tarefas com etapas bem definidas.
DataCamp Team's photo

DataCamp Team

11 min

blog

8 modelos de aprendizado de máquina explicados em 20 minutos

Descubra tudo o que você precisa saber sobre os tipos de modelos de aprendizado de máquina, inclusive para que eles são usados e exemplos de como implementá-los.
Natassha Selvaraj's photo

Natassha Selvaraj

15 min

blog

O que é ciência de dados? Definição, exemplos, ferramentas e mais

A ciência de dados é um campo interdisciplinar que usa métodos científicos, processos, algoritmos e sistemas para extrair conhecimento e percepções de dados estruturados e não estruturados.
Matt Crabtree's photo

Matt Crabtree

15 min

Tutorial

Explicação das funções de perda no aprendizado de máquina

Explore o papel crucial das funções de perda no aprendizado de máquina com nosso guia abrangente. Entenda a diferença entre as funções de perda e de custo, aprofunde-se em vários tipos, como MSE e MAE, e aprenda suas aplicações em tarefas de ML.
Richmond Alake's photo

Richmond Alake

Ver maisVer mais