Bayesian Optimization
L'ottimizzazione bayesiana utilizza valutazioni precedenti e modelli probabilistici per individuare impostazioni ad alte prestazioni per carichi di lavoro ML costosi e con risorse di calcolo limitate.
L'ottimizzazione bayesiana è un metodo per trovare impostazioni efficaci di una funzione costosa da valutare, imparando dalle valutazioni precedenti. Costruisce un modello probabilistico di come gli input influenzano i risultati, quindi usa tale modello per scegliere l'esperimento successivo. Nel machine learning, questo la rende utile per trovare configurazioni di addestramento efficaci entro un budget computazionale limitato.
Le sue basi includono il metodo di ricerca sequenziale di Harold Kushner del 1964 e la formulazione bayesiana della ricerca degli estremi del 1975 di Jonas Mockus. Oggi è una tecnica fondamentale nell'ottimizzazione degli iperparametri e nel machine learning automatizzato.
Come funziona l'ottimizzazione bayesiana#
La funzione obiettivo misura la qualità di una configurazione candidata. Per l'addestramento di un modello, la valutazione consiste nell'addestrarlo con gli iperparametri selezionati e misurarne le prestazioni sui dati di validazione. Gli input regolabili includono il tasso di apprendimento, la dimensione del batch e l'intensità della regolarizzazione.
Un modello surrogato è un'approssimazione dell'obiettivo meno costosa dal punto di vista computazionale. Una scelta comune è un processo gaussiano: una distribuzione di probabilità su possibili funzioni che predice sia un risultato sia la relativa incertezza. L'aggiornamento bayesiano combina le ipotesi a priori con le valutazioni osservate per produrre una distribuzione a posteriori. Una funzione di acquisizione usa questa distribuzione per selezionare un altro candidato; il risultato misurato viene reinserito nel modello surrogato finché il budget di valutazione non è esaurito.
Si tratta di un approccio all'ottimizzazione basato sul machine learning: il modello surrogato apprende dalle coppie configurazione-risultato. La sua quantificazione dell'incertezza aiuta a determinare quali misurazioni aggiuntive siano utili.
Funzioni di acquisizione ed esplorazione#
La selezione dei candidati bilancia lo sfruttamento, che privilegia le impostazioni con prestazioni previste migliori, e l'esplorazione, che esamina le regioni incerte. Le funzioni di acquisizione più comuni esprimono questo bilanciamento in modi diversi:
- Miglioramento atteso (EI): valuta il miglioramento atteso di un candidato rispetto a un risultato di riferimento.
- Probabilità di miglioramento (PI): valuta la probabilità che un candidato superi un risultato di riferimento di un margine specificato.
- Limite superiore di confidenza (UCB): nella massimizzazione, combina la media prevista con un bonus legato all'incertezza, dando maggiore priorità ai candidati incerti.
Queste strategie di acquisizione sono poco costose da valutare rispetto all'addestramento di un modello o all'esecuzione di un esperimento fisico. La loro ottimizzazione determina la successiva valutazione costosa.
Applicazioni nel machine learning e nella computer vision#
L'ottimizzazione bayesiana è particolarmente utile quando le singole valutazioni richiedono molto tempo e la ricerca comprende un numero gestibile di variabili influenti. Tra le applicazioni consolidate figurano la progettazione ingegneristica, gli esperimenti sui materiali e la regolazione dei controllori per l'apprendimento per rinforzo.
Nella computer vision, seleziona le impostazioni di addestramento per le reti neurali convoluzionali. Jasper Snoek, Hugo Larochelle e Ryan P. Adams hanno dimostrato questa applicazione nel loro algoritmo pratico di ottimizzazione bayesiana del 2012, oltre a regolare macchine a vettori di supporto strutturate e modelli di argomenti.
Ultralytics YOLO offre la ricerca bayesiana tramite la sua integrazione con Ray Tune: impostando use_ray=True e search_alg="bayesopt" si seleziona l'ottimizzazione bayesiana per gli iperparametri di addestramento. Per il rilevamento di oggetti con YOLO26, la ricerca massimizza la metrica predefinita di precisione media dell'attività.
Metodi correlati e Optuna#
La ricerca a griglia valuta una raccolta predefinita di combinazioni, mentre la ricerca casuale estrae configurazioni in modo indipendente. L'ottimizzazione bayesiana usa i risultati precedenti per guidare le scelte successive. La discesa del gradiente aggiorna i parametri usando le derivate; l'ottimizzazione bayesiana gestisce funzioni obiettivo costose e black-box attraverso valutazioni e un modello surrogato.
Gli algoritmi di campionamento di Optuna includono l'ottimizzazione bayesiana basata su processi gaussiani, il campionamento casuale e il Tree-structured Parzen Estimator (TPE). TPE modella le distribuzioni dei parametri associate ai risultati migliori e peggiori, quindi privilegia i candidati con un rapporto maggiore tra tali densità. Optuna è il framework di ottimizzazione; il campionatore selezionato determina la strategia di ricerca.
Un esempio in Python#
Installa bayesian-optimization con pip install bayesian-optimization. L'esempio usa la funzione obiettivo e i limiti del tutorial introduttivo sull'ottimizzazione incluso nel pacchetto:
from bayes_opt import BayesianOptimization
def objective(x, y):
"""Return the objective value to maximize."""
return -(x**2) - (y - 1) ** 2 + 1
optimizer = BayesianOptimization(
f=objective,
pbounds={"x": (2, 4), "y": (-3, 3)},
random_state=1,
verbose=0,
)
optimizer.maximize(init_points=2, n_iter=15)
best = optimizer.max
print(f"Best objective: {best['target']:.4f}")L'output riporta il miglior valore della funzione obiettivo misurato dopo due valutazioni casuali e quindici valutazioni guidate dalla funzione di acquisizione. Entro questi limiti, il massimo esatto è -3 in corrispondenza di x=2, y=1.










