インテルMKLのSVD(dgesvd
SciPyを介して)を使用していて、マトリックスの条件が悪い/フルランクではない場合float32
と精度を変更すると、結果が大幅に異なることに気付きましたfloat64
。結果がfloat32
-> float64
変更の影響を受けないようにするために追加する必要がある正則化の最小量に関するガイドはありますか?
際、特に、、Iはその参照L ∞ノルムV T Xの Iとの間の精度を変更した場合約1による移動とを。AのL 2ノルムは10 5であり、合計784のうち約200のゼロ固有値があります。float32
float64
上のSVDをやっでλ = 10 - 3は違いワニスを作りました。
その例のN × N行列Aのサイズは何ですか(それは正方行列ですか?)200個のゼロ固有値または特異値?フロベニウスの規範| | A | | 代表的な例のFも役立ちます。
—
アントンメンショフ
この場合は784 x 784のマトリックスですが、ラムダの良い値を見つける一般的な手法に興味があります
—
Yaroslav Bulatov
では、の違いは、特異値ゼロに対応する最後の列でのみですか?
—
Nick Alger、2017年
複数の等しい特異値がある場合、svdは一意ではありません。あなたの例では、問題は複数のゼロ特異値に起因し、精度が異なると、それぞれの特異空間の基底の選択が異なることになると思います。あなたが正則化するとなぜそれが変わるのか分かりません...
—
Dirk
... ?
—
フェデリコポローニ2017年