ノイズのある勾配から関数を数値で計算するにはどうすればよいですか?


8

モデルます。 sバツy=バツ2+y20バツ10y1

モデルを直接観察する代わりに、モデルの派生物といくつかのノイズ(e)を観察しています。

 pバツy=sバツ+eqバツy=sy+e

p(x、yおよびq(x、y)の測定値からs(x)を推定したいのですが、s(0,0)= 0だと知っています。

勾配定理によれば、  sバツy=00バツy[sバツsy]dr

統合するパスに関係なく。

(Matlabでの)小さな実験として、p = 2xおよびq = 2yに正規分布ノイズN(0,1)を追加しました。次に、最初にxに沿って、次にyに沿って統合しました:SXY。次に、最初にyに沿って統合し、次にxに沿って統合しました:SYX。

結果は、この場合(ノイズのため)勾配定理が成り立たないことを示しています。

S

SXY

SYX

モデルに関連する二乗平均平方根誤差は次のとおりです。

ErmsXY =
    0.1125
ErmsYX =
    0.0920

pとqからsのより良い(RMSエラーが少なく、より滑らかな)推定値を見つけるにはどうすればよいですか?

編集:

私が読んだものから; 曲線積分の使用は、局所積分と呼ばれます。代わりに、最小化するS(x、y)を選択しようとするグローバルな統合方法もあります。

 0101[|SバツP|2+|SyQ|2]dバツdy

グローバル積分法は、勾配が騒々しいときにより良い結果をもたらすと思われますが、実際にこれを行うにはどうすればよいですか?

編集2:

私が使用した1つのアプローチはこれです:

最初に、線形微分演算子を導入します:。 sバツ=Dバツssy=Dys

結果は次の線形方程式システムです。

 Dバツs=pDys=q

次に、これらの方程式の最小二乗誤差解を求めます。これらの方程式のLSE解は、上から積分を最小化することと同等であると想定されています。 これはどのように表示できますか?

結果は良好です: ここに画像の説明を入力してください

RMS誤差はSXYとSYXの誤差の約1/5であり、解法もよりスムーズです。

ただし、このアプローチにはいくつかの欠点があります。

  1. 実装するのが難しい。中央差分を使用して、2Dの行列をベクトルに「平坦化」する必要があります。

  2. 導出行列は非常に大きく、スパースであるため、大量のRAMを消費する可能性があります。

コーディングが簡単で、RAMの消費が少なく高速であると思われる別のアプローチは、FFTを使用することです。フーリエ空間では、これらのpdesは代数方程式になります。これは、Frankot-Chellappaアルゴリズムとして知られていますが、残念ながら、サンプルデータを処理することができません。

回答:


1

s


ジムに感謝します。したがって、たとえばSXYを取得して、各値SXY(xi、yj)を値とその近傍の加重和で置き換えることができます。ここで、重みはたとえば2Dガウスかもしれません。
アンディ

申し訳ありませんがジム。モデルと比較して小さなRMSエラーも必要であることを強調するのを忘れていました。これを考慮して質問を編集しました。平滑化により滑らかな結果が得られますが、RMSエラーは小さくありませんか?
アンディ

@Andyはい、「値とその近傍に対する加重和」はフィルタリングのかなり簡潔な説明であり、2Dガウスはローパスフィルターの1つの形式です。
ジム・クレイ

s

ジムに感謝します。しかし、RMSエラーを小さくするためにSXYとSYXの結果を組み合わせる方法はありませんか?
アンディ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.