iws.DataFit における正則化は、フィット対象パラメータへの 事前分布 として表現します。各事前分布は、パラメータ名と iws.stats の分布を組み合わせて指定します。正則化が必要な理由や事前強度の選び方は、正則化 (英語ガイド) を参照してください。
分布
正則化されたフィット
priors を渡すと、事前分布の平均からの偏差が(逆分散に比例して)コスト関数に正則化項として加わります。
Parameter への事前分布の付与
事前分布が当該パラメータに固有のものである場合は、別の dict ではなく Parameter に直接付けることもできます。
dict 形式の事前分布
スキーマの設定は、プレーンな dict としても書けます。JSON や YAML から設定を読み込むときに便利です。priors マッピングでは、次の 2 つの等価な形式を受け付けます。
name は無視されます — パラメータ名が文字どおり "distribution" の場合でも同様です。
厳格なバリデーション
事前分布・分布・サンプラーは送信時に識別ユニオン(discriminated union)で検証されます。これにより、タイプミスや古い設定をランタイムの不明瞭なクラッシュにする前に、提出時点で検出できます。 次のような誤りはValidationError として明示的に拒否されます。
- 未知の分布名(例:
{"distribution": "Guassian", ...})。 - 分布・事前分布・サンプラー設定の不明なキーやタイプミス。
- フィールドと一致しない
type識別子(例:priorsの下に{"type": "Penalty", ...})。 - 事前分布・分布・サンプラーが期待される位置に渡されたスカラーやリスト。
type エイリアスは、分布設定の内部でのみ distribution 識別子の代わりに引き続き受け付けられます。たとえばネスト形式の内側の dict {"type": "Normal", "mean": 3.0, "std": 0.2} は Normal に解決されるため、既存のシリアライズ済み設定はそのままラウンドトリップします。ただし type が distribution のエイリアスになるのは分布レベルだけです。事前分布マッピングの最上位では type は事前分布の識別子(必ず "Prior")として扱われるため、フラット形式の事前分布は分布を type ではなく distribution で指定する必要があります。
なぜ拡散係数に LogNormal か
固相拡散係数は桁にまたがる範囲(しばしば ~ m²/s)に分布します。生の値への Normal 事前分布では、平均 ± 標準偏差で桁オーダの不確かさを表現しづらいです。LogNormal 事前分布はパラメータを対数スケールで扱うため、「平均 ± 1 標準偏差」が係数 に相当し、より自然です。上記の例の mean=-32.2 は の自然対数なので、典型的な粒子内拡散係数を中心とする事前分布になっています。
正則化 (理論)
リッジ回帰、MAP 推定、バイアス・分散トレードオフ (英語ガイド)。
データフィッティング概要
事前分布を目的関数・オプティマイザと組み合わせる方法。