Cosa significa convergere un algoritmo?


12

Continuo a trovare questo termine quando leggo sull'apprendimento per rinforzo, ad esempio in questa frase:

Se il problema è modellato con cura, alcuni algoritmi di Reinforcement Learning possono convergere verso l'ottimale globale

http://reinforcementlearning.ai-depot.com/

o qui:

Per qualsiasi politica fissa Pi, è stato dimostrato che l'algoritmo TD sopra descritto converge in VPi

http://webdocs.cs.ualberta.ca/~sutton/book/ebook/node62.html

La mia comprensione della parola converge è che significa che diverse cose si incontrano nello stesso punto, ma come può una sola cosa (l'algoritmo) farlo?


7
Nel caso degli algoritmi iterativi, si dice che convergono quando le loro soluzioni candidate per ogni iterazione tendono ad avvicinarsi sempre più alla soluzione desiderata.
MetaFight,

6
Può essere utile ricordare che si dice che un limite in matematica converge o diverge, anche se un "limite" è una "singola cosa".
Ixrec,

@Ixrec: Il "limite" è stato chiamato dopo il valore con cui / diverge da / a. Ad esempio come in "converge a 1" che significa "non va mai oltre 1" che significa "1 è il valore massimo risultante" e quindi il "limite" delle tue aspettative. Da qui il singolare.
Flater,

Risposte:


14

Si dice che un algoritmo iterativo converge quando, man mano che le iterazioni procedono, l'output si avvicina sempre di più a un valore specifico. Più precisamente, non importa quanto piccolo sia un intervallo di errore scelto, se continui abbastanza a lungo la funzione alla fine rimarrà all'interno di tale intervallo di errore attorno al valore finale.

In alcune circostanze, un algoritmo non converge, con un output che varia sempre di una certa quantità. Potrebbe persino divergere, dove la sua produzione subirà oscillazioni di valore sempre più grandi, senza mai avvicinarsi a un risultato utile. Più precisamente, non importa per quanto tempo continui, il valore della funzione non si stabilirà mai entro un intervallo di qualsiasi valore "finale".

La frase "convergere in un ottimale globale" nella tua prima frase è un riferimento ad algoritmi che possono convergere, ma non al valore "ottimale" (ad esempio un algoritmo di salita che, a seconda della funzione e delle condizioni iniziali, può convergere in un massimo locale, senza mai raggiungere il massimo globale).


3

Cos'è la convergenza, in generale

Il concetto di convergenza è un termine matematico ben definito. Significa essenzialmente che "eventualmente" una sequenza di elementi si avvicina sempre di più a un singolo valore. Chiamiamo questo valore singolo "limite".

La definizione formale va in questo modo:

Data la sequenza (infinita) di numeri reali X0, X1, X2, ... Xn ...diciamo Xn converges to a given number Lse per ogni errore positivo che pensi, esiste un Xmtale che ogni elemento Xnche viene dopo Xmdifferisce Lda meno di quell'errore.

Esempio:

Immagina una sequenza come tale:

  • X0 = 1
  • X1 = 0.1
  • X2 = 0,01
  • X3 = 0,001
  • X4 = 0,0001
  • ...
  • Xn = 1 / (10 ^ n)

Xn converge a zero? Sì! Perché?

Pensa a un errore E (ad esempio E = 0.0025). C'è un elemento nella sequenza che dopo che ogni elemento è sotto 0.025? Sì! Quell'elemento è X3 = 0.001. Dopo X2, tutto XNè sotto 0.0025. Questo può essere fatto per ogni E> 0? Sì. Per ogni errore positivo che scegliamo, possiamo vedere quanti zeri ha prima del suo primo punto decimale e la sequenza sarà inferiore a partire dall'elemento che ha lo stesso numero di zeri.

Questo significa che Xn = 1/(10^5) converges to 0. Come in "può avvicinarsi sempre di più a zero" quanto vogliamo.


Cosa significa convergere un algoritmo?

"Tecnicamente" ciò che converge non è l'algoritmo, ma un valore che l'algoritmo sta manipolando o iterando. Ad esempio, supponiamo che stiamo scrivendo un algoritmo che stampa tutte le cifre di PI.

L'algoritmo inizia a stampare numeri come:

  • X0 = 3.14
  • X1 = 3.141
  • X2 = 3.1415
  • X3 = 3.14159
  • ...

Potremmo chiederci: l'algoritmo stampa numeri sempre più vicini a PI? In altre parole, la sequenza X0, X1, ... XN ...stampata dal nostro algoritmo converge in PI?

In tal caso, diciamo che il nostro algoritmo converge in PI.


Di solito siamo interessati a dimostrare la correttezza di un algoritmo.

Di solito, quando scriviamo un algoritmo, siamo interessati a sapere se la soluzione fornita dall'algoritmo è quella corretta per il problema che risolve. Questo a volte può presentarsi sotto forma di convergenza.

In generale, gli algoritmi hanno ciò che chiamiamo metriche . Una metrica è un numero che diamo a un dato risultato che l'algoritmo produce. Ad esempio, negli algoritmi iterativi di AI / Machine Learning è molto comune per noi tenere traccia dell'errore che l'algoritmo sta generando in base all'input. Questo errore è una metrica.

In quegli algoritmi iterativi, ogni passaggio genera un errore diverso. E ciò che l'algoritmo tenta di fare è minimizzare quell'errore in modo che diventi sempre più piccolo. Diciamo che l'algoritmo converge se converge la sequenza di errori.

In questi casi, di global optimumsolito viene definito il programma di installazione con l'errore più basso possibile. In tal caso, "l'algoritmo converge all'ottimale globale" significa che "l'algoritmo genera errori in una sequenza che converge all'errore più basso possibile".

Se "l'ottimale globale" è la nostra "soluzione corretta", affermare che il nostro algoritmo converge equivale a dichiarare che il nostro algoritmo è corretto.

Inoltre, tieni presente che affermare che un algoritmo converge richiede una prova (come abbiamo fatto per il nostro esempio 0,001, 0,0001, ...).


Ad esempio, un classificatore

Un esempio di ciò potrebbe essere nel caso di un classificatore. Supponiamo di voler classificare se i numeri sono dispari o addirittura utilizzando un algoritmo di apprendimento automatico e che disponiamo del seguente set di dati:

  • (1, dispari)
  • (2, anche)
  • (3, dispari)
  • (77, dispari)
  • (4, anche)

Il nostro algoritmo per ogni serie di numeri sputa per ciascuno di essi se sono pari o dispari. Per questo, possiamo definire un errore metrico come il numero di volte in cui è stato sbagliato diviso per il numero totale di elementi che sono stati dati.

Quindi, se il nostro algoritmo sputa quanto segue:

  • (1, pari) // sbagliato
  • (2, anche)
  • (3, anche) // sbagliato
  • (77, anche) // sbagliato
  • (4, anche)

La nostra metrica di errore sarebbe 3/5 = 0.6. Ora diciamo che eseguiamo di nuovo l'algoritmo e ora sputa:

  • (1, pari) // sbagliato
  • (2, anche)
  • (3, dispari)
  • (77, dispari)
  • (4, anche)

La nostra metrica di errore sarebbe 1/5 = 0.2.

Diciamo che funziona sempre più volte e la nostra sequenza di errori è simile a questa:

0.6, 0.2, 0.1, 0.01, 0.000456, 0.00000543, 0.000000000444 ....

Quindi la grande domanda è: il nostro algoritmo sarà mai zero? Converrà mai a zero? Il nostro algoritmo converge tutti? Possiamo dimostrare che alla fine riuscirà a farlo bene (o il più vicino possibile a destra)?

Speriamo di sì :)

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.