Was ist Konvergenz im Allgemeinen?
Das Konzept der Konvergenz ist ein genau definierter mathematischer Begriff. Dies bedeutet im Wesentlichen, dass "irgendwann" eine Folge von Elementen einem einzelnen Wert immer näher kommt. Wir nennen diesen Einzelwert das "Limit".
Die formale Definition sieht ungefähr so aus:
Given (unendliche) Folge von reellen Zahlen X0, X1, X2, ... Xn ...
wir sagen , Xn converges to a given number L
wenn für jeden positiven Fehler , dass Sie denken, es ist ein , Xm
so dass jedes Element , Xn
das nach dem kommt Xm
von unterscheiden sich L
um weniger als dieser Fehler.
Beispiel:
Stellen Sie sich eine Sequenz als solche vor:
- X0 = 1
- X1 = 0,1
- X2 = 0,01
- X3 = 0,001
- X4 = 0,0001
- ...
- Xn = 1 / (10 ^ n)
Konvergiert Xn gegen Null? Ja! Warum?
Denken Sie an einen Fehler E (zum Beispiel E = 0.0025
). Gibt es ein Element in der Sequenz, in dem sich danach jedes Element befindet 0.025
? Ja! Dieses Element ist X3 = 0.001
. Nach X2 ist jeder XN
unten 0.0025
. Kann dies mit jedem E> 0 gemacht werden? Ja. Für jeden positiven Fehler, den wir auswählen, können wir sehen, wie viele Nullen er vor seinem ersten Dezimalpunkt hat, und die Folge ist niedriger als ab dem Element, das die gleiche Anzahl von Nullen hat.
Das bedeutet das Xn = 1/(10^5) converges to 0
. Wie in "es kann immer näher an Null kommen", so viel wir wollen.
Was bedeutet es für einen Algorithmus, zu konvergieren?
"Technisch" konvergiert nicht der Algorithmus, sondern ein Wert, den der Algorithmus manipuliert oder iteriert. Nehmen wir zum Beispiel an, wir schreiben einen Algorithmus, der alle Ziffern von PI druckt.
Der Algorithmus beginnt mit dem Drucken von Zahlen wie:
- X0 = 3,14
- X1 = 3,141
- X2 = 3,1415
- X3 = 3,14159
- ...
Wir könnten uns fragen: Druckt der Algorithmus Zahlen immer näher an PI? Mit anderen Worten, X0, X1, ... XN ...
konvergiert die Sequenz , die unser Algorithmus druckt, gegen PI?
Wenn ja, sagen wir, dass unser Algorithmus zu PI konvergiert.
Wir sind normalerweise daran interessiert, die Richtigkeit eines Algorithmus zu beweisen.
Wenn wir einen Algorithmus schreiben, sind wir normalerweise daran interessiert zu wissen, ob die vom Algorithmus bereitgestellte Lösung die richtige für das Problem ist, das er löst. Dies kann manchmal in Form einer Konvergenz auftreten.
Im Allgemeinen haben Algorithmen sogenannte Metriken . Eine Metrik ist eine Zahl, die wir einem bestimmten Ergebnis geben, das der Algorithmus erzeugt. Beispielsweise ist es bei iterativen AI / Machine Learning-Algorithmen sehr häufig, dass wir den "Fehler" verfolgen, den der Algorithmus basierend auf der Eingabe generiert. Dieser Fehler ist eine Metrik.
In diesen iterativen Algorithmen erzeugt jeder Schritt einen anderen Fehler. Der Algorithmus versucht, diesen Fehler so gering wie möglich zu halten, damit er immer kleiner wird. Wir sagen, dass der Algorithmus konvergiert, wenn die Fehlerfolge konvergiert.
In diesen Fällen wird das global optimum
normalerweise als das Setup definiert, das den geringstmöglichen Fehler aufweist. In diesem Fall bedeutet "Algorithmus konvergiert gegen das globale Optimum", dass "der Algorithmus Fehler in einer Sequenz erzeugt, die gegen den niedrigstmöglichen Fehler konvergiert".
Wenn das "globale Optimum" unsere "richtige Lösung" ist, entspricht die Aussage, dass unser Algorithmus konvergiert, der Aussage, dass unser Algorithmus korrekt ist.
Denken Sie auch daran, dass die Angabe, dass ein Algorithmus konvergiert, einen Beweis erfordert (wie wir es für unser Beispiel 0,001, 0,0001, ... getan haben).
Als Beispiel ein Klassifikator
Ein Beispiel hierfür könnte ein Klassifikator sein. Angenommen, wir möchten mithilfe eines Algorithmus für maschinelles Lernen klassifizieren, ob Zahlen ungerade oder gerade sind, und wir haben den folgenden Datensatz:
- (1, ungerade)
- (2, gerade)
- (3, ungerade)
- (77, ungerade)
- (4, gerade)
Unser Algorithmus für jeden Satz von Zahlen spuckt für jeden von ihnen, wenn sie gerade oder ungerade sind. Dazu können wir einen Metrikfehler so definieren, wie oft er falsch war, geteilt durch die Gesamtzahl der angegebenen Elemente.
Wenn unser Algorithmus also Folgendes ausspuckt:
- (1, gerade) // falsch
- (2, gerade)
- (3, gerade) // falsch
- (77, gerade) // falsch
- (4, gerade)
Unsere Fehlermetrik wäre 3/5 = 0.6
. Nehmen wir jetzt an, wir führen den Algorithmus erneut aus und er spuckt jetzt:
- (1, gerade) // falsch
- (2, gerade)
- (3, ungerade)
- (77, ungerade)
- (4, gerade)
Unsere Fehlermetrik wäre 1/5 = 0.2
.
Nehmen wir an, es wird immer öfter ausgeführt, und unsere Fehlerfolge sieht ungefähr so aus:
0.6, 0.2, 0.1, 0.01, 0.000456, 0.00000543, 0.000000000444 ....
Die große Frage ist also: Wird unser Algorithmus jemals Null sein? Wird es jemals gegen Null konvergieren? Wird unser Algorithmus alle konvergieren? Können wir beweisen, dass es irgendwann richtig wird (oder so nah wie möglich am richtigen)?
Hoffentlich ja :)