データ同化について

データ同化(Data Assimilation)のメモ。
一番分かりやすかったのはこれ
以下要約のようなもの。
 データ同化はシミュレーションに実測値のデータを取り入れる方法で、気象予測などの物理シミュレーションでよく使われる。具体的には、シミュレーションでモデルを仮定して、モデル内の変数を何かしらの方法(過去のデータから推定したり、えいやっと決めたり)で決めた後、シミュレーション結果から得られる予測値とその後実際に観測された値を使って巧く観測値に近づくように変数を調整していく方法である。
 端的に言えば、シミュレーションにおけるオンライン学習のようなものと思っても差し支えないと思う。個人的な感想としては、オンライン学習は最適化、データ同化は統計に端を発するぐらいの違いしかない気がする。
データ同化の方法は幾つかあって、簡単な方法として
・ナッジング
・直接挿入
ちょとと難しい方法で、3次元データ同化と言われる
・最適内挿法
・3次元変分法
更に難しい方法として4次元データ同化である
・カルマンフィルター
・4次元変分法
があるらしい。
直接挿入法は、モデル内の変数が直接観測される場合に観測した値で置き換える方法。ナッジングは、モデル内の変数が直接観測される場合に観測した値に適当に近づける方法。
 その他の方法については基本的に、モデル内の変数の時間発展を記述する式と実際に観測されるデータを記述する式の二つを用意して変数との誤差を最小にする。
 まずt時点でシミュレーション内の変数全てをx_{t}という変数ベクトルにまとめる。この変数は次の時間発展式に従うとする。
x_{t}=f_{t}(x_{t-1})+v_{t}
ここで、f_{t}はシミュレーションのモデルを表す写像で、v_{t}は誤差項にあたる。
次に、yを実際に観測される値として、観測データを記述する式が次のようになっているとする。
y_{t}=h_{t}(x_{t})+w_{t}
ここで、w_{t}は誤差項、h_{t}は観測データを表現する式で、シミュレーション内の変数全てが観測可能な場合は単位行列となる。シミュレーション内の変数の平均や特定の変数しか観測できない場合は、それぞれ単位行列を変数の数で割ったものや単位行列から観測されない変数部分を零に埋めたものになる。
 以上の設定で次の最小化を考えるのが3次元、4次元データ同化の考え方
minimize:||x_{t}-f_{t}(x_{t-1})|| + ||y_{t}-h_{t}(x_{t})||
 第一項の最小化は一般に難しいので、第二項の最小化を考えるのが3次元データ同化である。特に最適内挿法ではh_{t}が行列である場合のみを考え、行列以外の非線形モデルを考える場合は3次元変分法になる。
 4次元データ同化では、第一項の最小化も考えるが、カルマンフィルターを使う場合はf_{t}の線形性を前提とする。そうでない場合は4次元変分法となる。