conjugate gradient Schrittweitenadaption

07/11/2009 - 17:12 von Philipp Kraus | Report spam
Hallo,

ich benutze einen stochastischen Gradientenabstieg mit
Schrittweitenadaption um eine
Funktion auf Messdaten zu fitten. Generell funktioniert das auch so
ganz gut, nur habe ich
bei einigen Datensàtzen sàtzen das Problem, dass der Feher zuerst in
einem lokalen
Optimium konvergiert und dann plötzlich aus dem Optimum wieder
rausspringt und gegen
"unendlich" làuft.

Das Problem sind definitiv die Anpassung der Schrittweiten. Ich
vergrößere den Schritt,
falls fich von der n-ten nur (n+1) Iteration kaum etwas veràndert hat,
bzw verringere sie,
falls sich das Vorzeichen des Gradienten àndert. Das Problem scheint
hier darin zu liegen,
dass ich in meiner Fehlerflàche oszilliere. Wenn er mir eine annàhernd
gutes lokales Optimum
findet, reicht mir das, das Optimum, das er findet, bevor er
hinausspringt, ist völlig in Ordnung.

Gibt es eine gute Technik um sinnvolle Schrittweiten und
Schrittweitenadaptionen zu ermitteln,
z.B. wàhrend des iterativen Fittings?
Das Problem tritt nicht generell, sondern nur bei einzelnen Datensàtzen auf.
Unter http://flashpixx.de/cg.jpg ist ein Bild zu sehen. Die
Fehlerfunktion für I,B ist genau
wie ich es haben will, für sigma,y0 und x0 sieht man, dass sie bis zu
einem gewissen Grad
konvergiert und dann herausspringt. Die erste Reihe sind die zu
fittenden Werte, die zweite
Reihe gibt den Wert pro Iteration des Gradienten an und die dritte
Reihe die Schrittweitenverànderung.

Danke für die Hilfe
 

Lesen sie die antworten

#1 Christian Gollwitzer
09/11/2009 - 13:29 | Warnen spam
Hallo Philipp,

Philipp Kraus schrieb:
ich benutze einen stochastischen Gradientenabstieg mit
Schrittweitenadaption um eine Funktion auf Messdaten zu fitten.
Generell funktioniert das auch so ganz gut, nur habe ich bei einigen
Datensàtzen sàtzen das Problem, dass der Feher zuerst in einem
lokalen Optimium konvergiert und dann plötzlich aus dem Optimum
wieder rausspringt und gegen "unendlich" làuft.

Das Problem sind definitiv die Anpassung der Schrittweiten. Ich
vergrößere den Schritt, falls fich von der n-ten nur (n+1) Iteration
kaum etwas veràndert hat, bzw verringere sie, falls sich das
Vorzeichen des Gradienten àndert. Das Problem scheint hier darin zu
liegen, dass ich in meiner Fehlerflàche oszilliere. Wenn er mir eine
annàhernd gutes lokales Optimum findet, reicht mir das, das Optimum,
das er findet, bevor er hinausspringt, ist völlig in Ordnung.




Bei einem stochastischen Verfahren musst Du natürlich damit rechnen,
dass das Optimum wieder verlassen wird - das ist ja auch der Vorteil
davon, dass Du aus einem lokalen Minimum herausgekickt werden kannst.

Ich würde einfach den bisher besten Wert zusàtzlich speichern, also in
jedem Schritt mit dem bisher besten vergleichen und evtl. ersetzen, und
dam Schluss dann den nehmen. Bzw. davon nochmal einen deterministischen
Gradientenabstieg starten.

Christian

Ähnliche fragen