Ir para o conteúdo

GPSampler (Gaussian Process Bayesian Optimization)

O GPSampler implementa Otimização Bayesiana baseada em Processos Gaussianos (Gaussian Process - GP). Ele modela a função objetivo como uma amostra de um processo Gaussiano, fornecendo não apenas uma previsão do desempenho, mas também uma medida de incerteza. Este é um dos métodos mais poderosos para otimização de funções black-box caras.

Como Funciona

O GPSampler utiliza um modelo probabilístico para aproximar a função objetivo:

  1. Ajuste do Modelo GP: A cada iteração, ajusta um processo Gaussiano aos dados observados
  2. Função de Aquisição: Calcula uma métrica que balança exploração vs exploração
  3. Sugestão de Parâmetros: Otimiza a função de aquisição para sugerir o próximo ponto
            ┌─────────────────────────────────────────────────────────┐
            │                   Processo Gaussiano                    │
            │                                                         │
   Perf.    │     ┌───┐  Intervalo de Confiança                      │
      ▲     │    ╱     ╲                                              │
      │     │   ╱   ●   ╲   ● Observações                            │
      │     │  ╱    │    ╲  ─ Média predita                          │
      │●────┼●╱─────┴─────●╲   Incerteza                             │
      │     │              ╲ ╲                                       │
      │     │               ╲───●                                    │
      │     │                                                         │
      └─────┴───────────────────────────────────────────►            │
                        Parâmetros                                    │
            └─────────────────────────────────────────────────────────┘

Kernel Matern

A implementação atual usa o kernel Matern com ν=2.5 (duas vezes diferenciável) com: - Automatic Relevance Determination (ARD): Aprende a importância de cada parâmetro automaticamente - Priors Bayesianos: Prior Gamma para escala do kernel e variância do ruído para prevenir overfitting - Hiperparâmetros otimizados: Obtidos por maximização da log-verossimilhança marginal

Funções de Aquisição

O GPSampler usa diferentes funções de aquisição dependendo do tipo de otimização:

Tipo Função de Aquisição Descrição
Single-Objective logEI (Log Expected Improvement) Melhoria esperada em escala logarítmica
Multi-Objective logEHVI (Log Expected Hypervolume Improvement) Melhoria esperada do hipervolume de Pareto
Com Constraints logEI + log P(viável) Combina EI com probabilidade de satisfazer restrições

Exploração vs Exploração

A função de aquisição equilibra automaticamente: - Exploração: Alta incerteza → regiões pouco exploradas - Exploração: Alto desempenho previsto → regiões promissoras

Pontos Fortes e Fracos

Pontos Fortes

  • ✅ Excelente eficiência de amostragem para funções black-box dispendiosas
  • ✅ Quantificação da incerteza, valiosa para orientar a busca
  • ✅ Capacidade de lidar com funções objetivo ruidosas
  • ✅ Fornece informações sobre a confiabilidade das previsões
  • Suporte a Multi-Objetivo: logEHVI para otimização de múltiplos objetivos
  • Suporte a Constraints: Incorpora probabilidade de viabilidade
  • Eficiência Comprovada: Métodos Bayesianos são reconhecidos pela alta eficiência de amostragem, crucial quando cada avaliação (simulação Aimsun) é cara

Pontos Fracos

  • ❌ O custo computacional de ajustar o GP pode se tornar elevado para grandes conjuntos de dados (>100-200 trials)
  • ❌ Pode apresentar desafios em problemas de alta dimensão (>20 variáveis)
  • ❌ O desempenho depende da escolha do kernel (mitigado pelo ARD)
  • ❌ Requer biblioteca PyTorch como dependência

Aplicabilidade à Otimização Semafórica

O GPSampler é altamente adequado para otimizar parâmetros semafóricos:

  • Parâmetros contínuos: Offsets, comprimentos de ciclo, tempos de verde
  • Funções caras: Cada simulação Aimsun leva minutos
  • Ruído: Resultados de simulação têm variabilidade inerente
  • Poucos trials: Quando você tem orçamento limitado de simulações

Quando Usar GPSampler

Cenário Recomendação
Poucos trials (<100) ✅ Excelente escolha
Simulações > 5 min cada ✅ Ideal
Muitas variáveis (>15) ⚠️ Considere TPE
Muitos trials (>200) ⚠️ Pode ficar lento
Multi-objetivo (2-3) ✅ Suportado com logEHVI
Com constraints ✅ Suportado nativamente

Configuração no OptFlow

Objetivo Único

{
  "sampler": "GPSampler",
  "objectives": [
    {"name": "Atraso", "formula": "\"Delay Time\"", "direction": "minimize"}
  ]
}

Multi-Objetivo

{
  "sampler": "GPSampler",
  "objectives": [
    {"name": "Atraso", "formula": "\"Delay Time\"", "direction": "minimize"},
    {"name": "Fluxo", "formula": "\"Flow\"", "direction": "maximize"}
  ]
}

logEHVI Automático

Quando múltiplos objetivos são configurados, o GPSampler automaticamente usa logEHVI (Log Expected Hypervolume Improvement) como função de aquisição.

Com Constraints

{
  "sampler": "GPSampler",
  "objectives": [
    {"name": "Atraso", "formula": "\"Delay Time\"", "direction": "minimize"}
  ],
  "constraints_formulas": [
    "\"Mean Queue Section 123\" - 50",
    "20 - \"Mean Speed\""
  ]
}

Constraints Probabilísticas

Com GPSampler, as constraints são tratadas probabilisticamente: o sampler considera a probabilidade de uma solução ser viável, não apenas se ela é viável ou não. Isso leva a uma busca mais eficiente em regiões próximas aos limites de viabilidade.

Parâmetros Avançados

Parâmetro Descrição Valor Padrão
n_startup_trials Trials iniciais com amostragem aleatória 10
deterministic_objective Se a função objetivo é determinística False
seed Semente para reprodutibilidade None

Trials de Startup

Os primeiros trials (padrão: 10) usam amostragem aleatória para construir um conjunto inicial de dados antes de começar a otimização guiada pelo GP:

Trials 1-10:  Amostragem aleatória (warmup)
Trials 11+:   Otimização guiada pelo GP

Comparação com Outros Samplers

Aspecto GPSampler TPE CMAES
Modelo Processo Gaussiano Parzen Estimator Evolutivo
Eficiência (poucos trials) ✅✅✅ ✅✅
Alta dimensionalidade ⚠️ ✅✅ ✅✅
Multi-objetivo ✅ logEHVI ✅ Adaptado ⚠️ Limitado
Constraints ✅ Probabilístico ✅ c-TPE ⚠️ Penalização
Custo computacional ⚠️ Médio ✅ Baixo ✅ Baixo
Quantificação incerteza

Visualização do Modelo

O GPSampler constrói um modelo probabilístico da função objetivo:

                    Função Objetivo (desconhecida)
    ▲               ─────────────────────────────
Perf│     ╭─────────────╮      Modelo GP
    │    ╱               ╲     ━━━━━━━━━━
    │   ╱     ┌─────┐     ╲    ■ Região de alta confiança
    │  ╱      │  ■  │      ╲   □ Região de incerteza
    │ ╱       └─────┘       ╲  
    │╱    □           □      ╲ 
    └──────────────────────────► Parâmetros

    Próxima sugestão: onde a incerteza E o potencial de melhoria são altos

Dicas de Uso

  1. Seja paciente com warmup: Os primeiros 10-15 trials são exploratórios
  2. Observe a convergência: Se a performance para de melhorar, pode ter encontrado o ótimo
  3. Use com constraints quando necessário: O tratamento probabilístico é muito eficiente
  4. Monitore tempo por trial: Se os trials ficarem lentos (>1 min cada), o modelo GP está grande
  5. Combine com filtro de demanda: Simulações mais rápidas = mais trials = melhor modelo GP

Referências

  • Rasmussen, C. E., & Williams, C. K. I. (2006). Gaussian Processes for Machine Learning. MIT Press.
  • Snoek, J., Larochelle, H., & Adams, R. P. (2012). Practical Bayesian Optimization of Machine Learning Algorithms. NeurIPS.

Próximos Passos