Ein anderer Weg , um dieses Problem zu betrachten , ist , die Werkzeuge zu prüfen , aus diskreten inversen Problemen, das heißt, die Probleme beinhalten die Lösung oder min | | A x - b | | 2 , wo A sehr schlecht konditioniert ist (dh das Verhältnis zwischen dem ersten und dem letzten Singulärwert σ 1 / σ nA x = bmin | | A x - b | |2EINσ1/ σn groß ist ).
Hier haben wir verschiedene Methoden zur Auswahl des Abbruchkriteriums, und für ein iteratives Verfahren, würde ich das L-Kurve Kriterium empfehlen, da es nur Mengen handelt, die bereits verfügbar sind (HAFTUNGSAUSSCHLUSS: Mein Berater diese Methode Pionierarbeit geleistet, so dass ich auf jeden Fall bin voreingenommen gegen es). Ich habe dies mit Erfolg in einem iterativen Verfahren verwendet.
Die Idee ist es, die Restnorm zu überwachen und die Lösung Norm η k = | | x k | | 2 , wobei x k das k istρk= | | A xk- b | |2ηk= | | xk| |2xkk -te Iteration ist. Wie Sie Iterierte, diese die Form eines L in einem loglog (rho, eta) Grundstück und an der Stelle , an der Ecke des L zu zeichnen beginnen , ist die optimale Wahl.
Auf diese Weise können Sie ein Kriterium implementieren, bei dem Sie nach dem Überqueren der Ecke ein Auge auf die Steigung von ( ρk, ηk) ), und dann die Iterierte wählen , die an der Ecke lag.
Die Art und Weise, wie ich es gemacht habe, beinhaltete das Speichern der letzten 20 Iterationen und wenn der Gradient abs(log(ηk)−log(ηk−1)log(ρk)−log(ρk−1)) war größer als ein gewisser Schwellwert 20 für aufeinanderfolgende Iterationen, wusste ich , dass ich auf dem vertikalen Teil der Kurve war und daß ich die Ecke passiert hatte. Ich habe dann die erste Iteration in meinem Array (dh die vor 20 Iterationen) als meine Lösung genommen.
Darüber hinaus gibt es weitere Einzelheiten der Verfahren zur Ecke zu finden, und diese Arbeit besser, aber eine beträchtliche Anzahl von Iterierten erfordern speichern. Spielen Sie mit ihm ein bisschen herum. Wenn Sie in Matlab sind, können Sie die Toolbox Regularisierung Werkzeuge verwenden, die einige dieser implementiert (insbesondere die „Ecke“ Funktion anwendbar ist).
Beachten Sie, dass dieser Ansatz besonders für große Probleme geeignet ist, da die zusätzliche Rechenzeit winzig ist.