Bias-Variance Tradeoff
O compromisso entre enviesamento e variância divide o erro de previsão esperado em enviesamento, variância e ruído, explicando por que falham tanto os modelos demasiado simples como os demasiado complexos.
O compromisso entre viés e variância descreve como o erro esperado de um modelo em dados novos se divide em duas partes que respondem à complexidade do modelo em direções opostas. O viés é o erro causado por suposições simples demais para capturar o padrão real, o que causa subajuste. A variância é o erro causado pela sensibilidade aos dados de treinamento específicos, o que causa sobreajuste. Tornar um modelo mais flexível geralmente reduz o viés e aumenta a variância, de modo que o menor erro total ocorre com uma complexidade intermediária. Stuart Geman, Elie Bienenstock e René Doursat introduziram a ideia no aprendizado de máquina em seu artigo de 1992, "Redes Neurais e o Dilema Viés/Variância".
A decomposição do erro#
A decomposição considera o mesmo tipo de modelo treinado muitas vezes, sempre com um novo conjunto de treinamento extraído da mesma fonte. Para o erro quadrático, o erro esperado em uma entrada se divide exatamente em três termos. O viés ao quadrado é a diferença quadrática entre a previsão média de todos esses conjuntos de treinamento e o valor verdadeiro; uma regressão linear ajustada a uma relação curva mantém um viés alto, independentemente da quantidade de dados que recebe. A variância mede o quanto as previsões se dispersam em torno da própria média de um conjunto de treinamento para o seguinte; ela é alta em árvores de decisão profundas e redes neurais grandes sem regularização. O terceiro termo, o ruído irredutível, é a aleatoriedade dos próprios rótulos, que nenhum modelo consegue remover.
Repetir o ajuste mede diretamente os dois termos. Este exemplo com NumPy ajusta polinômios de graus 1, 3 e 12 a 1.000 conjuntos de treinamento, cada um com 20 pontos ruidosos de uma onda senoidal:
import numpy as np
rng = np.random.default_rng(0)
x = np.linspace(0, 1, 20) # 20 training inputs, evenly spaced
x_test = np.linspace(0, 1, 200)
true_curve = np.sin(2 * np.pi * x_test)
for degree in [1, 3, 12]:
# Fit the same polynomial degree to 1,000 training sets that differ only in their label noise
predictions = []
for _ in range(1000):
y = np.sin(2 * np.pi * x) + rng.normal(0, 0.3, x.size)
predictions.append(np.polyval(np.polyfit(x, y, degree), x_test))
predictions = np.array(predictions)
# Bias^2: squared gap between the average fit and the truth; variance: spread of fits around their average
bias_sq = np.mean((predictions.mean(axis=0) - true_curve) ** 2)
variance = np.mean(predictions.var(axis=0))
print(f"Degree {degree:2d}: bias^2 = {bias_sq:.3f}, variance = {variance:.3f}")Uma reta tem viés ao quadrado de 0.205 e variância de apenas 0.008. Um polinômio cúbico se ajusta quase perfeitamente à senoide em média, reduzindo o viés ao quadrado para 0.005, enquanto a variância dobra para 0.016. Um polinômio de grau 12 não tem viés mensurável, mas sua variância é 0.074, porque ele se curva para acompanhar o ruído de cada amostra. O polinômio cúbico tem o menor erro total, e todos os modelos também sofrem a variância de ruído irredutível de 0.09.
Como diagnosticar viés e variância#
Os erros de treinamento e validação revelam qual termo predomina. Erros altos em ambos indicam viés. Erro de treinamento baixo e erro de validação muito maior indicam variância. As curvas de aprendizado, que traçam os dois erros em relação à quantidade de dados de treinamento, distinguem os dois casos: a diferença de um modelo com alta variância diminui à medida que os dados aumentam, enquanto as duas curvas de um modelo com alto viés se encontram cedo em um erro elevado e permanecem assim. No treinamento do Ultralytics YOLO, o argumento fraction treina com parte da divisão de treinamento, como fraction=0.25 para o primeiro quarto das imagens, enquanto a validação continua usando toda a divisão de validação; assim, algumas execuções do YOLO26 com frações crescentes traçam uma curva de aprendizado para um conjunto de dados personalizado.
Como controlar o compromisso#
A variância diminui com mais dados, aumento de dados, regularização, como decaimento de pesos e dropout, parada antecipada e a média de muitos modelos, como fazem o bagging e as florestas aleatórias. O viés diminui com um modelo maior, engenharia de atributos mais rica, regularização mais fraca, treinamento mais longo e boosting, que adiciona modelos que corrigem os erros do ensemble até então. O ajuste de hiperparâmetros e a validação cruzada escolhem a configuração em que os dois termos se equilibram nos dados reservados.
A curva clássica em U do erro de teste em função da complexidade vale para uma família fixa de modelos, como polinômios de grau crescente. Redes neurais muito superparametrizadas podem ultrapassá-la: o erro de teste aumenta à medida que o modelo se aproxima do tamanho necessário para se ajustar exatamente a todos os pontos de treinamento e depois volta a cair conforme cresce ainda mais; esse padrão é chamado de dupla descida. Viés e variância continuam somando o erro nesse caso, mas a variância já não cresce continuamente com a quantidade de parâmetros.
Viés estatístico e outros tipos de viés#
O viés desse compromisso é uma propriedade de um algoritmo de aprendizado aplicado a uma tarefa. O viés em IA refere-se à injustiça sistemática contra grupos de pessoas, e o viés de conjunto de dados, a dados de treinamento que não representam o ambiente de implantação, como quando há poucas imagens de tráfego noturno. Um modelo pode ter baixo viés estatístico e ainda ser injusto, pois pode se ajustar com precisão a um conjunto de dados enviesado, incluindo o próprio viés.










