Variáveis de Controle (Control Variates)

Visão geral

Variáveis de controle (control variates) são uma técnica clássica de redução de variância (variance reduction) para estimação via Monte Carlo. Elas funcionam explorando uma variável aleatória auxiliar (auxiliary random variable) (ou várias) que é:

  1. Correlacionada com a quantidade que você quer estimar, e
  2. Tem uma esperança conhecida.

Ao subtrair uma versão devidamente escalada dessa variável auxiliar, você pode reduzir dramaticamente a variância sem introduzir viés (quando as esperanças são conhecidas exatamente).

Variáveis de controle aparecem por toda a IA e o aprendizado de máquina sempre que estimamos esperanças usando amostras — por exemplo em aprendizado por reforço por gradiente de política (policy gradient reinforcement learning), inferência variacional (variational inference), avaliação baseada em simulação (simulation-based evaluation), e como um bloco de construção junto a métodos como Amostragem por Importância (Importance Sampling), Rao–Blackwellização (Rao–Blackwellization) e Monte Carlo Sequencial (Sequential Monte Carlo).

O problema de estimação por Monte Carlo

Suponha que queremos estimar uma esperança sob alguma distribuição (p(x)):

[ \mu ;=; \mathbb{E}_{p}[f(X)]. ]

Um estimador básico de Monte Carlo (MC) usa amostras i.i.d. (X_1,\dots,X_n \sim p):

[ \hat{\mu}{\text{MC}} ;=; \frac{1}{n}\sum{i=1}^{n} f(X_i). ]

Esse estimador é insesgado e consistente, mas pode ter alta variância, especialmente quando:

  • (f(X)) é ruidosa/de cauda pesada,
  • amostrar é caro (pequeno (n)),
  • a massa de probabilidade de (p) está em regiões onde (f) varia muito.

Variáveis de controle reduzem essa variância ao “explicar” parte da flutuação aleatória em (f(X)).

Ideia central: subtrair um sinal correlacionado com média conhecida

Seja (g(X)) uma variável aleatória tal que (\mathbb{E}[g(X)]) seja conhecida (exatamente). Defina o estimador com variáveis de controle:

[ \hat{\mu}{\text{CV}} ;=; \frac{1}{n}\sum{i=1}^n \left( f(X_i) - c,(g(X_i) - \mathbb{E}[g(X)]) \right), ]

onde (c\in\mathbb{R}) é um coeficiente que escolhemos.

Por que isso é insesgado

Tome esperanças sob (p):

[ \mathbb{E}[\hat{\mu}_{\text{CV}}] = \mathbb{E}[f(X)] - c\left(\mathbb{E}[g(X)] - \mathbb{E}[g(X)]\right) = \mathbb{E}[f(X)] = \mu. ]

Então qualquer escolha de (c) mantém o estimador insesgado, desde que (\mathbb{E}[g(X)]) esteja correta.

Por que a variância pode diminuir

Se (g(X)) é correlacionada com (f(X)), então (g(X)-\mathbb{E}[g(X)]) atua como um “preditor” de parte das flutuações em (f(X)). Subtrair isso reduz o ruído residual.

Intuição: isso é como regressão linear — remover a parte de (f) que pode ser prevista linearmente por (g).

Escolhendo o coeficiente ótimo \(c^\*\)

Para uma única variável de controle, a variância do termo de uma amostra [ Y = f(X) - c(g(X)-\mathbb{E}[g(X)]) ] é:

[ \mathrm{Var}(Y) = \mathrm{Var}(f) + c^2\mathrm{Var}(g) - 2c,\mathrm{Cov}(f,g). ]

Minimizar em relação a (c) fornece o coeficiente ótimo:

[ c^* ;=; \frac{\mathrm{Cov}(f,g)}{\mathrm{Var}(g)}. ]

Substituindo (c^*) de volta:

[ \mathrm{Var}(Y_{c^*}) = \mathrm{Var}(f)\left(1 - \rho_{f,g}^2\right), ] onde (\rho_{f,g}) é o coeficiente de correlação. Isso mostra:

  • Quanto mais perto (|\rho_{f,g}|) estiver de 1, maior a redução de variância.
  • Se (\rho_{f,g}=0), variáveis de controle não ajudam (em esperança).

Estimando \(c^\*\) na prática

Em geral, não conhecemos (\mathrm{Cov}(f,g)) e (\mathrm{Var}(g)). Uma abordagem padrão é estimar (c) a partir das mesmas amostras:

[ \hat{c} ;=; \frac{\widehat{\mathrm{Cov}}(f,g)}{\widehat{\mathrm{Var}}(g)}. ]

Isso costuma funcionar bem, mas observe uma sutileza:

  • Se você estima (c) a partir dos dados, o estimador final pode se tornar levemente viesado para (n) finito (o viés tipicamente desaparece quando (n\to\infty)).
  • Em muitos cenários de aprendizado de máquina esse viés é desprezível comparado à redução de variância, mas se o insesgamento estrito for importante, você pode usar divisão de amostras (sample splitting) (estimar (c) em um lote, aplicá-lo em outro) ou usar (c) conhecido analiticamente.

Múltiplas variáveis de controle (forma vetorial)

Frequentemente você tem vários controles candidatos (g_1(X), \dots, g_k(X)). Seja:

  • (g(X) \in \mathbb{R}^k),
  • (\mathbb{E}[g(X)]) conhecida,
  • vetor de coeficientes (c \in \mathbb{R}^k).

Estimador:

[ \hat{\mu}{\text{CV}} = \frac{1}{n}\sum{i=1}^n \left( f(X_i) - c^\top (g(X_i) - \mathbb{E}[g(X)]) \right). ]

Os coeficientes ótimos resolvem um sistema linear:

[ c^* = \Sigma_{gg}^{-1},\Sigma_{gf}, ]

onde:

  • (\Sigma_{gg} = \mathrm{Cov}(g,g)) é uma matriz de covariância (k\times k),
  • (\Sigma_{gf} = \mathrm{Cov}(g,f)) é um vetor de dimensão (k).

Interpretação como regressão

Isso é exatamente o vetor de coeficientes do melhor preditor linear de (f(X)) usando (g(X)) (no sentido de erro quadrático médio). Você pode ver variáveis de controle como:

  • Ajustar uma regressão linear (f \approx \alpha + c^\top g),
  • Subtrair a parte prevista (de média zero) (c^\top(g-\mathbb{E}[g])).

Na prática, se (k) for grande ou os controles forem correlacionados, (\Sigma_{gg}) pode ser mal condicionada. Regularização (e.g., regressão ridge (ridge regression)) é comum.

Exemplo prático 1: estimando uma esperança com um momento conhecido

Seja (X \sim \mathcal{N}(0,1)) e queremos:

[ \mu = \mathbb{E}\left[\exp(X)\right] = e^{1/2}. ]

Finja que não sabemos essa forma fechada e usamos MC. Uma boa variável de controle é (g(X)=X) porque:

  • (\mathbb{E}[X] = 0) é conhecida,
  • (\exp(X)) é positivamente correlacionada com (X).

Exemplo em Python

import numpy as np

def mc_with_control_variate(n=10_000, seed=0):
    rng = np.random.default_rng(seed)
    x = rng.normal(size=n)

    f = np.exp(x)
    g = x
    Eg = 0.0

    # Estimate optimal c from samples
    cov_fg = np.mean((f - f.mean()) * (g - g.mean()))
    var_g = np.var(g, ddof=0)
    c_hat = cov_fg / var_g

    mu_mc = f.mean()
    mu_cv = np.mean(f - c_hat * (g - Eg))
    return mu_mc, mu_cv, c_hat

mu_mc, mu_cv, c_hat = mc_with_control_variate()
print(mu_mc, mu_cv, c_hat)

O que você tipicamente observa:

  • (\hat{\mu}_{\text{CV}}) tem variabilidade de execução para execução visivelmente menor do que MC puro.
  • Quanto mais forte a correlação entre (f) e (g), maior a melhoria.

Exemplo prático 2: precificação de opções e “Greeks” (inspirado em finanças, relevante para ML)

Em sistemas pesados em simulação (incluindo muitos pipelines de avaliação em aprendizado de máquina), você pode estimar quantidades como:

[ \mathbb{E}[\max(S_T - K, 0)] ]

para algum preço terminal simulado (S_T). Um controle clássico é um payoff relacionado com esperança conhecida ou uma aproximação analiticamente tratável (e.g., usando uma forma fechada de Black–Scholes sob um modelo simplificado). Mesmo que seu simulador seja mais complexo do que o modelo analítico, o payoff analítico simplificado frequentemente é altamente correlacionado com o payoff verdadeiro, tornando-o uma variável de controle eficaz.

Esse padrão se generaliza para aprendizado de máquina:

  • Use um modelo aproximado barato como controle para um simulador caro.
  • Use um preditor baseline (baseline) como controle para um estimador mais complexo.

Variáveis de controle com amostragem por importância

Com Amostragem por Importância, você quer:

[ \mu = \mathbb{E}_{p}[f(X)] ] mas você amostra de (q) em vez disso, usando pesos (w(x) = \frac{p(x)}{q(x)}):

[ \hat{\mu}{\text{IS}} = \frac{1}{n}\sum{i=1}^n w(X_i) f(X_i), \quad X_i\sim q. ]

Você ainda pode usar variáveis de controle. Uma forma comum é:

[ \hat{\mu}{\text{IS+CV}} = \frac{1}{n}\sum{i=1}^n \left( w_i f_i - c\left(w_i g_i - \mathbb{E}_{p}[g(X)]\right)\right). ]

Detalhes-chave:

  • Você deve usar um controle cuja esperança é conhecida sob a distribuição alvo (p), isto é, (\mathbb{E}_p[g(X)]).
  • A quantidade aleatória que você subtrai é (w_i g_i), porque (\mathbb{E}_q[w(X)g(X)] = \mathbb{E}_p[g(X)]).

Isso pode ser especialmente útil quando os pesos de importância têm alta variância; um bom controle pode “acompanhar” parte dessa variabilidade.

Ressalva sobre amostragem por importância auto-normalizada

Amostragem por importância auto-normalizada (self-normalized importance sampling) usa:

[ \hat{\mu}{\text{SNIS}} = \sum{i=1}^n \tilde{w}_i f_i, \quad \tilde{w}_i = \frac{w_i}{\sum_j w_j} ]

o que em geral é viesado, mas frequentemente tem menor variância. Combinar SNIS e variáveis de controle é possível, mas a história de viés/variância se torna mais sutil; tipicamente você trata isso como uma heurística prática, a menos que precise de garantias teóricas.

Conexão com baselines em aprendizado por reforço por gradiente de política

Em aprendizado por reforço por gradiente de política, você frequentemente estima:

[ \nabla_\theta J(\theta) = \mathbb{E}\left[\nabla_\theta \log \pi_\theta(a|s), R\right]. ]

Um truque clássico de redução de variância é subtrair um baseline (b(s)):

[ \mathbb{E}\left[\nabla_\theta \log \pi_\theta(a|s), (R - b(s))\right] ]

Isso é uma variável de controle:

  • (f = \nabla_\theta \log \pi_\theta(a|s), R)
  • O termo de controle usa (g = \nabla_\theta \log \pi_\theta(a|s)) com a propriedade: [ \mathbb{E}{a\sim \pi\theta(\cdot|s)}[\nabla_\theta \log \pi_\theta(a|s)] = 0 ]
  • Portanto, subtrair (b(s)\nabla_\theta \log \pi_\theta(a|s)) preserva o insesgamento, mas reduz a variância se (b(s)) acompanhar retornos esperados.

No RL moderno, a função de valor (value function) aprendida é essencialmente uma variável de controle aprendida (baseline dependente do estado).

Relação com Rao–Blackwellização

Rao–Blackwellização reduz a variância ao condicionar em uma estatística suficiente ou em um subconjunto de variáveis:

[ \hat{\mu}_{\text{RB}} = \mathbb{E}[\hat{\mu}\mid Y] ]

Isso sempre reduz (ou preserva) a variância pela lei da variância total.

Variáveis de controle são diferentes, mas complementares:

  • Rao–Blackwellização: substituir um estimador por sua esperança condicional.
  • Variáveis de controle: subtrair um termo correlacionado com média conhecida.

Na prática, você pode fazer ambos: integrar analiticamente partes de um modelo (Rao–Blackwellizar) e, então, aplicar variáveis de controle ao estimador de Monte Carlo restante.

Como construir boas variáveis de controle

Uma variável de controle (g(X)) deve ter:

  1. Esperança conhecida (\mathbb{E}[g(X)]) (sob a distribuição correta).
  2. Alta correlação com (f(X)).
  3. Baixo custo de computação.

Fontes comuns de variáveis de controle:

  • Momentos conhecidos: se você conhece (\mathbb{E}[X]), (\mathbb{E}[X^2]) etc., use (g(X)=X), (X^2), …
  • Aproximações / substitutos: uma aproximação barata (\tilde{f}(X)) cuja esperança você consegue computar ou pré-computar.
  • Expansões de Taylor: aproximar (f(X)) em torno de um ponto onde as esperanças são tratáveis.
  • Casos especiais analiticamente solucionáveis: versão simplificada do seu modelo com esperança em forma fechada.
  • Baselines em estimadores de gradiente estocástico (comum em RL e inferência variacional).

Diagnóstico: quando ajudam?

  • Se o (c) ótimo estimado estiver perto de zero, o controle tem correlação fraca ou é ruidoso.
  • Você pode estimar (\rho_{f,g}) empiricamente para prever ganhos potenciais.
  • Tenha cautela com caudas pesadas: estimativas de covariância podem ser instáveis; estimação robusta ou clipping pode ajudar.

Armadilhas práticas e boas práticas

1) A esperança conhecida deve corresponder à distribuição de amostragem

Se você amostra (X\sim p), você precisa de (\mathbb{E}_p[g(X)]).
Se você amostra (X\sim q) com pesos de importância, você precisa de (\mathbb{E}_p[g(X)]), mas seu termo aleatório torna-se (w(X)g(X)).

Uma esperança incompatível introduz viés.

2) Estimar coeficientes pode introduzir viés em amostras finitas

Se o insesgamento estrito for importante:

  • Use um (c) fixo conhecido analiticamente, ou
  • Use divisão de amostras:
    • lote A estima (c),
    • lote B estima (\mu) usando esse (c).

3) Múltiplos controles podem exigir regularização

Com muitos controles, estimar (\Sigma_{gg}^{-1}) pode ser instável. Use regressão ridge:

[ \hat{c} = (\widehat{\Sigma}{gg} + \lambda I)^{-1} \widehat{\Sigma}{gf}. ]

Isso pode reduzir ligeiramente a redução de variância em teoria, mas pode melhorar o desempenho real.

4) Não pague caro demais pelo controle

Uma variável de controle só é útil se a redução de variância superar o custo computacional extra. Controles baratos com correlação moderada frequentemente são melhores do que controles caros com correlação apenas um pouco maior.

Variáveis de controle em fluxos de trabalho modernos de IA

Variáveis de controle são amplamente usadas (às vezes implicitamente) em:

  • Aprendizado por reforço: funções de vantagem e baselines aprendidos.
  • Inferência variacional: redução de variância para estimadores de gradiente do tipo função de escore (score-function) (REINFORCE).
  • Avaliação baseada em simulação: acelerar estimativas de métricas de desempenho esperadas.
  • Programação probabilística (probabilistic programming) / inferência bayesiana (Bayesian inference): estimadores aprimorados dentro de pipelines MCMC/SMC (frequentemente junto a Monte Carlo Sequencial).

Elas fazem parte de um conjunto mais amplo de técnicas de redução de variância, incluindo:

  • Amostragem por Importância (mudar a distribuição de amostragem),
  • Rao–Blackwellização (integrar/condicionar analiticamente),
  • variáveis antitéticas (antithetic variates), amostragem estratificada (stratified sampling), quase–Monte Carlo (quasi–Monte Carlo) (outras abordagens comuns).

Resumo

Variáveis de controle reduzem a variância de Monte Carlo ao subtrair uma variável auxiliar correlacionada com esperança conhecida:

  • Estimador (um controle): [ \hat{\mu}{\text{CV}} = \frac{1}{n}\sum{i=1}^n \left( f(X_i) - c(g(X_i)-\mathbb{E}[g]) \right) ]
  • Insesgamento vale para qualquer (c) (se (\mathbb{E}[g]) estiver correta).
  • Coeficiente ótimo: [ c^* = \frac{\mathrm{Cov}(f,g)}{\mathrm{Var}(g)} ]
  • Múltiplos controles generalizam via regressão linear / sistema de covariâncias.
  • Funciona especialmente bem quando o controle é fortemente correlacionado com o alvo e barato de computar.
  • Combina naturalmente com Amostragem por Importância e complementa Rao–Blackwellização.

Na prática, variáveis de controle são um dos truques de maior “retorno sobre o investimento” em aprendizado de máquina baseado em Monte Carlo: simples de implementar, amplamente aplicáveis e, com o controle certo, frequentemente capazes de reduzir a variância em ordens de magnitude.