2013-06-25 5 views
5

Ich lernte Gradientenabstieg durch Online-Ressourcen (nämlich maschinelles Lernen bei Courgra). Die angegebene Information besagt jedoch nur, dass der Gradientenabfall wiederholt wird, bis er konvergiert.Gradient-Sink-Konvergenz Wie entscheidet man über die Konvergenz?

Ihre Definition von Konvergenz bestand darin, einen Graphen der Kostenfunktion relativ zur Anzahl der Iterationen zu verwenden und zu beobachten, wann der Graph flacher wird. Daher gehe ich davon aus, dass ich folgendes tun würde:

if (change_in_costfunction > precisionvalue) { 
      repeat gradient_descent 
} 

Alternativ ich frage mich, ob eine andere Art und Weise der Konvergenz zu bestimmen, ist der Koeffizient Ansatz zu sehen, es ist wahr Wert:

if (change_in_coefficient_j > precisionvalue) { 
      repeat gradient_descent_for_j 
} 
...repeat for all coefficients 

So Konvergenz auf basieren die Kostenfunktion oder die Koeffizienten? Und wie bestimmen wir den Präzisionswert? Sollte es ein% des Koeffizienten oder der Gesamtkostenfunktion sein?

+2

Konvergenz ist immer „keine Änderung“ (oder eine zu kleine Änderung) in der Optimierungsvariablen, was sich in den meisten Fällen direkt auf Ihre Kosten auswirken sollte. –

Antwort

5

Sie können sich vorstellen, wie Gradient Descent (GD) funktioniert, wenn man bedenkt, dass man Marmor in eine Schüssel wirft und Fotos macht. Der Marmor wird oszillieren, bis die Reibung ihn am Boden stoppt. Wenn man nun feststellt, dass man sich in einer Umgebung befindet, in der die Reibung so gering ist, dass der Marmor lange braucht, um vollständig aufzuhören, kann man davon ausgehen, dass der Marmor den Boden erreicht hat (obwohl er weiter oszillieren könnte). Auf dem folgenden Bild können Sie die ersten acht Schritte (Fotos des Marmors) der GD sehen.

enter image description here

Wenn wir weiterhin Fotos der Marmor macht keine nennenswerten Bewegungen einnehmen, sollten Sie das Bild vergrößern:

enter image description here

Wir halten fotografieren konnte und die Bewegungen werden mehr irrelevants sein.

Das Erreichen eines Punktes, an dem GD sehr kleine Änderungen in Ihrer Zielfunktion vornimmt, heißt Konvergenz, was nicht bedeutet, dass es das optimale Ergebnis erreicht hat (aber es ist wirklich ziemlich nah, wenn nicht schon).

Der Genauigkeitswert kann als der Schwellenwert gewählt werden, in dem Sie aufeinanderfolgende Iterationen von GD sind fast die gleichen:

grad(i) = 0.0001 
grad(i+1) = 0.000099989 <-- grad has changed less than 0.01% => STOP 
+0

Ich akzeptiere deine Antwort, aber du hast nicht klar gemacht, ob GD zur Kostenfunktion oder zum Koeffizienten gehört. Der Kommentar von Thomas Jungblut sagt, dass es eine Konvergenz der Koeffizienten ist, die sich in der Kostenfunktion widerspiegeln wird, so dass es für mich klingt wie 'es ist egal' ... Danke für die detaillierte Antwort! –

+0

GD ist ein allgemeiner Algorithmus zum Auffinden der Minimun in einer konvexen Funktion. Diese Funktion kann die Kostenfunktion eines ML-Problems oder einer anderen Funktion sein. – jabaldonedo

+0

Ich habe auch etwas Verwirrung darüber, und kann immer noch keine klare Antwort finden, da dieser Schritt (Überprüfung auf Konvergenz) in allen Artikeln fehlt, die ich bisher gefunden habe. Wir können die Kostenfunktion in jedem Schritt berechnen, um zu sehen, ob sich die Menge von Schritt zu Schritt ändert. Die Berechnung der Kostenfunktion kann jedoch auch teuer sein. Es gibt einen stochastischen Gradientenabstiegsalgorithmus, bei dem wir einen Teil der Daten verwenden können, um den Abstieg selbst zu berechnen, aber wir brauchen immer noch alle Daten, um die Kostenfunktion zu berechnen? Es ist mir immer noch unklar. – Vadim

Verwandte Themen