Perché gli algoritmi di ottimizzazione sono definiti in termini di altri problemi di ottimizzazione?


23

Sto facendo alcune ricerche sulle tecniche di ottimizzazione per l'apprendimento automatico, ma sono sorpreso di trovare un gran numero di algoritmi di ottimizzazione definiti in termini di altri problemi di ottimizzazione. Illustrerò alcuni esempi di seguito.

Ad esempio https://arxiv.org/pdf/1511.05133v1.pdf

inserisci qui la descrizione dell'immagine

Sembra tutto bello e buono, ma poi c'è questo nel aggiornamento .... quindi qual è l'algoritmo che risolve per il ? Non lo sappiamo e non lo dice. Così magicamente dobbiamo risolvere un altro problema di ottimizzazione che è trovare il vettore minimizzante in modo che il prodotto interno sia al minimo: come è possibile farlo?z k + 1 argminargminXzK+1argmin

Prendi un altro esempio: https://arxiv.org/pdf/1609.05713v1.pdf

inserisci qui la descrizione dell'immagine

Tutto sembra bello e buono fino a quando non colpisci quell'operatore prossimale nel mezzo dell'algoritmo, e qual è la definizione di quell'operatore?

Boom:inserisci qui la descrizione dell'immagine

Ora prega di dire, come possiamo risolvere questo nell'operatore prossimale? Non dice. In ogni caso, il problema di ottimizzazione sembra difficile (NP hard) a seconda di ciò che è. fargminXf

Qualcuno può illuminarmi per favore di:

  1. Perché tanti algoritmi di ottimizzazione sono definiti in termini di altri problemi di ottimizzazione?

(Non sarebbe una specie di problema con pollo e uova: per risolvere il problema 1, devi risolvere il problema 2, usando il metodo di risoluzione del problema 3, che si basa sulla risoluzione del problema ....)

  1. Come risolvi questi problemi di ottimizzazione integrati in questi algoritmi? Ad esempio, , come trovare il minimizer sul lato destro?XK+1=argminXfunzione di perdita davvero complicata

  2. Alla fine, sono perplesso su come questi algoritmi possano essere implementati numericamente. Riconosco che l'aggiunta e la moltiplicazione dei vettori sono operazioni facili in Python, ma per quanto riguarda , c'è qualche funzione (script) che ti fornisce magicamente il minimizer per una funzione?argminX

(Bounty: qualcuno può fare riferimento a un documento per il quale gli autori chiariscono l'algoritmo per il sotto-problema incorporato nell'algoritmo di ottimizzazione di alto livello?)


Questo può essere rilevante.
GeoMatt22,

1
Penso che la tua domanda sarebbe molto meglio se enfatizzassi che i sotto-problemi sono potenzialmente durezza NP piuttosto che solo su quelli esistenti.
Mehrdad,

Oops ... "NP-hardness" avrebbe dovuto dire "NP-hard" nel mio ultimo commento.
Mehrdad,

Vedi Modifica 2 alla mia risposta che fornisce un riferimento \, come richiesto nella richiesta di ricompensa.
Mark L. Stone,

Risposte:


27

Stai guardando i diagrammi di flusso dell'algoritmo di livello superiore. Alcuni dei singoli passaggi nel diagramma di flusso possono meritare i propri diagrammi di flusso dettagliati. Tuttavia, in articoli pubblicati che enfatizzano la brevità, molti dettagli sono spesso omessi. I dettagli per i problemi di ottimizzazione interna standard, che sono considerati "cappello vecchio" potrebbero non essere affatto forniti.

L'idea generale è che gli algoritmi di ottimizzazione potrebbero richiedere la soluzione di una serie di problemi di ottimizzazione generalmente più semplici. Non è raro avere 3 o addirittura 4 livelli di algoritmi di ottimizzazione all'interno di un algoritmo di livello superiore, sebbene alcuni di essi siano interni a ottimizzatori standard.

Anche decidere quando terminare un algoritmo (a uno dei livelli gerarchici) può richiedere la risoluzione di un problema di ottimizzazione laterale. Ad esempio, un problema dei minimi quadrati lineari non negativamente vincolati potrebbe essere risolto per determinare i moltiplicatori di Lagrange usati per valutare il punteggio di ottimalità KKT usato per decidere quando dichiarare l'ottimalità.

Se il problema di ottimizzazione è stocastico o dinamico, potrebbero esserci ancora ulteriori livelli gerarchici di ottimizzazione.

Ecco un esempio Programmazione quadratica sequenziale (SQP). Un problema iniziale di ottimizzazione viene trattato risolvendo iterativamente le condizioni di ottimalità di Karush-Kuhn-Tucker, a partire da un punto iniziale con un obiettivo che è un'approssimazione quadratica del lagrangiano del problema e una linearizzazione dei vincoli. Il risultante programma quadratico (QP) è stato risolto. Il QP che è stato risolto presenta vincoli nella regione di fiducia oppure viene eseguita una ricerca di riga dall'iterato corrente alla soluzione del QP, che è esso stesso un problema di ottimizzazione, al fine di trovare l'iterazione successiva. Se viene utilizzato un metodo Quasi-Newton, è necessario risolvere un problema di ottimizzazione per determinare l'aggiornamento di Quasi-Newton per l'Assia del Lagrangiano. Di solito si tratta di un'ottimizzazione di forma chiusa che utilizza formule di forma chiusa come BFGS o SR1, ma potrebbe essere un'ottimizzazione numerica. Quindi il nuovo QP viene risolto, ecc. Se il QP è sempre impossibile, anche per iniziare, viene risolto un problema di ottimizzazione per trovare un punto fattibile. Nel frattempo, potrebbero esserci uno o due livelli di problemi di ottimizzazione interna chiamati all'interno del risolutore QP. Alla fine di ogni iterazione, un problema dei minimi quadrati lineari non negativi potrebbe essere risolto per determinare il punteggio di ottimalità. Eccetera.

Se si tratta di un problema di numero intero misto, l'intero shebang potrebbe essere eseguito su ciascun nodo di diramazione, come parte di un algoritmo di livello superiore. Analogamente per un ottimizzatore globale: un problema di ottimizzazione locale viene utilizzato per produrre un limite superiore sulla soluzione ottimale a livello globale, quindi viene attenuato alcuni vincoli per produrre un problema di ottimizzazione con limite inferiore. Migliaia o persino milioni di problemi di "facile" ottimizzazione da ramo e limite potrebbero essere risolti al fine di risolvere un numero intero misto o un problema di ottimizzazione globale.

Questo dovrebbe iniziare a darti un'idea.

Modifica : in risposta alla domanda su pollo e uova che è stata aggiunta alla domanda dopo la mia risposta: se c'è un problema con pollo e uova, non è un algoritmo pratico ben definito. Negli esempi che ho dato, non ci sono pollo e uova. I passaggi dell'algoritmo di livello superiore invocano solutori di ottimizzazione, che sono definiti o già esistenti. SQP invoca in modo iterativo un risolutore QP per risolvere sotto-problemi, ma il risolutore QP risolve un problema più semplice, QP, rispetto al problema originale. Se esiste un algoritmo di ottimizzazione globale di livello ancora più elevato, può richiamare un risolutore SQP per risolvere i sottoproblemi di ottimizzazione non lineari locali e il risolutore SQP a sua volta chiama un risolutore QP per risolvere i sottoproblemi QP. Nessun uovo e uova.

Nota: le opportunità di ottimizzazione sono "ovunque". Gli esperti di ottimizzazione, come quelli che sviluppano algoritmi di ottimizzazione, hanno maggiori probabilità di vedere queste opportunità di ottimizzazione e di vederle come tali rispetto alla media di Joe o Jane. Ed essendo inclini all'algoritmo, abbastanza naturalmente vedono opportunità per costruire algoritmi di ottimizzazione da algoritmi di ottimizzazione di livello inferiore. La formulazione e la soluzione di problemi di ottimizzazione servono come elementi costitutivi di altri algoritmi di ottimizzazione (di livello superiore).

Modifica 2 : in risposta alla richiesta di ricompensa che è stata appena aggiunta dall'OP. Il documento che descrive l'ottimizzatore non lineare SQP SNOPT https://web.stanford.edu/group/SOL/reports/snopt.pdf menziona specificamente il solutore QP SQOPT, che è documentato separatamente, come utilizzato per risolvere i sottoproblemi QP in SNOPT.


2

Mi piace la risposta di Mark, ma penso che vorrei menzionare "Ricottura simulata", che praticamente può essere eseguita su qualsiasi algoritmo di ottimizzazione. Ad alto livello funziona così:

Ha un parametro "temperatura" che inizia a caldo. Mentre è caldo si allontana spesso (e più lontano) da dove punta l'algoritmo di ottimizzazione subordinato. Man mano che si raffredda, segue più da vicino il consiglio dell'algoritmo subordinato, e a zero lo segue a qualunque livello locale ottimale sia finito.

L'intuizione è che all'inizio cercherà ampiamente nello spazio, alla ricerca di "posti migliori" in cui cercare ottimum.

Sappiamo che non esiste una vera soluzione generale al problema ottimale locale / globale. Ogni algoritmo avrà i suoi punti ciechi, ma ibridi come questo sembrano dare risultati migliori in molti casi.


Questa categoria di "meta-algoritmo" viene talvolta definita metauristica .
GeoMatt22

@ GeoMatt22 Ecco la definizione di prova euristica o argomento euristico che ho formulato come studente universitario: "Qualsiasi argomento, o mancanza di ciò, che non confuta rigorosamente ciò che doveva essere provato". Analogamente, un algoritmo euristico è qualsiasi algoritmo, o mancanza di esso, che non garantisce che non risolva correttamente il problema da risolvere.
Mark L. Stone,

Come l' euristico " fermato orologio "? La tassonomia di Neumaier (2004) qui descritta sembra ragionevole.
GeoMatt22

+1 per menzionare gli ottimizzatori ibridi o la meta euristica. Funzionano molto bene nel mondo reale rispetto all'ottimizzatore basato su derivati ​​che è molto buono in teoria e in carta ma non è bravo a risolvere la complessa funzione oggettiva multimodale del mondo reale che si incontra spesso nell'ottimizzazione ingegneristica.
meteorologo

@forecaster ci sono una varietà di approcci, a seconda del problema. Starei attento a scontare troppo fortemente gli "ottimizzatori basati su derivati" , poiché in molte applicazioni del mondo reale come l'apprendimento approfondito e l'ottimizzazione basata su PDE, possono avere abbastanza successo. (Alcune discussioni qui , comprese alternative senza derivati).
GeoMatt22

2

Penso che un riferimento per soddisfare il tuo desiderio sia qui . Vai alla sezione 4 - Ottimizzazione nel moderno calcolo bayesiano.

TL; DR: discutono dei metodi prossimali. Uno dei vantaggi di tali metodi è la divisione: è possibile trovare una soluzione ottimizzando i sottoproblemi più facili. Molte volte (o almeno qualche volta) potresti trovare in letteratura un algoritmo specializzato per valutare una specifica funzione prossimale. Nel loro esempio, fanno il denoising delle immagini. Uno dei passaggi è un algoritmo di grande successo e molto citato da Chambolle.


2

Questo è abbastanza comune in molti documenti di ottimizzazione e ha a che fare con la generalità. Gli autori di solito scrivono gli algoritmi in questo modo per dimostrare che tecnicamente funzionano per qualsiasi funzione f. Tuttavia, in pratica, sono utili solo per funzioni molto specifiche in cui questi sotto-problemi possono essere risolti in modo efficiente.

Ad esempio, e ora sto parlando solo del secondo algoritmo, ogni volta che vedi un operatore prossimale (che come hai notato è un altro problema di ottimizzazione che può essere davvero molto difficile da risolvere) di solito è implicito che ha una soluzione a forma chiusa in ordine per l'algoritmo di essere efficiente. Questo è vero per molte funzioni di interesse nell'apprendimento automatico come la norma l1, le norme di gruppo e così via. In quei casi sostituiresti i sotto-problemi per la formula esplicita dell'operatore prossimale e non è necessario un algoritmo per risolvere quel problema.

Per quanto riguarda il motivo per cui sono scritti in questo modo, basta notare che se si dovesse inventare un'altra funzione e si volesse applicare quell'algoritmo, si dovrebbe verificare, in primo luogo, se il prossimale ha una soluzione in forma chiusa o può essere calcolato in modo efficiente. In tal caso, inserisci semplicemente la formula nell'algoritmo e sei a posto. Come accennato in precedenza, ciò garantisce che l'algoritmo sia abbastanza generale da poter essere applicato a funzioni future che potrebbero emergere dopo la pubblicazione dell'algoritmo, insieme alle loro espressioni prossimali di algoritmi efficienti per calcolarle.

Infine, ad esempio, prendi il classico documento originale dell'algoritmo FISTA. Derivano l'algoritmo per due funzioni molto specifiche, la perdita al quadrato e la norma l1. Tuttavia, notano che non è possibile applicare alcuna funzione purché soddisfino alcuni prerequisiti, uno dei quali è che il prossimale del regolarizzato può essere calcolato in modo efficiente. Questo non è un requisito teorico ma pratico.

Questa compartimentalizzazione non solo rende l'algoritmo generale ma anche più facile da analizzare: fintanto che esistono algoritmi per i sotto-problemi che hanno queste proprietà, allora l'algoritmo proposto avrà questo tasso di convergenza o altro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.