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:
- Ajuste do Modelo GP: A cada iteração, ajusta um processo Gaussiano aos dados observados
- Função de Aquisição: Calcula uma métrica que balança exploração vs exploração
- 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:
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
- Seja paciente com warmup: Os primeiros 10-15 trials são exploratórios
- Observe a convergência: Se a performance para de melhorar, pode ter encontrado o ótimo
- Use com constraints quando necessário: O tratamento probabilístico é muito eficiente
- Monitore tempo por trial: Se os trials ficarem lentos (>1 min cada), o modelo GP está grande
- 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
- Multi-Objetivo: Conceitos de otimização multi-objetivo
- Constraints: Como usar restrições
- TPE: Alternativa eficiente para alta dimensionalidade
- Configuração: Configure o sampler no OptFlow