この問題を見るもう1つの方法は、離散逆問題、つまりまたはmin | | A x − b | | 2 Aは非常に悪条件(すなわち、最初と最後の特異値との比σ 1 / σ N大きいです)。Ax=bmin||Ax−b||2Aσ1/σn
ここでは、停止基準を選択するためのいくつかの方法があり、反復方法については、すでに利用可能な数量のみを含むため、L曲線基準をお勧めします(免責事項:アドバイザーがこの方法を開拓したので、間違いなくそれ)。私はこれを反復法で成功裏に使用しました。
アイデアは残差ノルム監視することであるおよびソリューションノルムη K = | | x k | | 2、ここでx kはk番目の反復です。繰り返しながら、これはloglog(rho、eta)プロットにLの形を描き始め、そのLの角の点が最適な選択です。ρk=||Axk−b||2ηk=||xk||2xkk
これは、あなたはあなたが(すなわちの勾配を見コーナー経過しているときに目を維持基準実装することができます)、その後、コーナーに位置していた反復を選択してください。(ρk,ηk)
私がした方法は、それが最後の20回の反復を格納関与し、勾配もしB S (ログ(η K)- ログ(η K - 1)20回の連続する反復のためにいくつかの閾値よりも大きかった、私は曲線の垂直部分にあったと私はコーナーを通過したことをことを知っていました。次に、ソリューションで最初の反復(20回前の反復)を解きました。abs(log(ηk)−log(ηk−1)log(ρk)−log(ρk−1))
コーナーを見つけるためのより詳細な方法もあります。これらはより効果的ですが、かなりの数の反復を保存する必要があります。少し遊んでみてください。matlabを使用している場合は、この一部を実装するツールボックスRegularization Toolsを使用できます(具体的には、「コーナー」機能が適用可能です)。
このアプローチは、関連する余分な計算時間が非常に短いため、大規模な問題に特に適していることに注意してください。