メインコンテンツへスキップ
iws.DataFit における正則化は、フィット対象パラメータへの 事前分布 として表現します。各事前分布は、パラメータ名と iws.stats の分布を組み合わせて指定します。正則化が必要な理由や事前強度の選び方は、正則化 (英語ガイド) を参照してください。

分布

スキーマ用途
iws.stats.Normal(mean=..., std=...)ガウス事前分布、加算的スケール
iws.stats.LogNormal(mean=..., std=...)桁にまたがる正値パラメータ(例: 固相拡散係数)
iws.stats.Uniform(lb=..., ub=...)ハードサポート。一様密度の境界と等価
iws.stats.MultivariateNormal(...)複数パラメータにまたがる相関事前分布

正則化されたフィット

import ionworks_schema as iws
from ionworks import Ionworks

parameters = {
    "Positive particle diffusivity [m2.s-1]": iws.Parameter(
        "Positive particle diffusivity [m2.s-1]",
        initial_value=1e-14,
        bounds=(1e-16, 1e-12),
    ),
    "Negative particle diffusivity [m2.s-1]": iws.Parameter(
        "Negative particle diffusivity [m2.s-1]",
        initial_value=3e-14,
        bounds=(1e-16, 1e-12),
    ),
}

priors = {
    "Positive particle diffusivity [m2.s-1]": iws.priors.Prior(
        "Positive particle diffusivity [m2.s-1]",
        iws.stats.LogNormal(mean=-32.2, std=1.0),  # 対数空間の平均と標準偏差
    ),
    "Negative particle diffusivity [m2.s-1]": iws.priors.Prior(
        "Negative particle diffusivity [m2.s-1]",
        iws.stats.LogNormal(mean=-31.1, std=1.0),
    ),
}

fit = iws.DataFit(
    objectives={
        "1C": iws.objectives.CurrentDriven(
            data_input="file:.../1C.csv",
            options={"model": {"type": "SPMe"}},
        ),
    },
    parameters=parameters,
    priors=priors,
    optimizer=iws.optimizers.ScipyLeastSquares(),
)

pipeline = iws.Pipeline({"fit": fit})

client = Ionworks()
submission = client.pipeline.create(pipeline)
priors を渡すと、事前分布の平均からの偏差が(逆分散に比例して)コスト関数に正則化項として加わります。

Parameter への事前分布の付与

事前分布が当該パラメータに固有のものである場合は、別の dict ではなく Parameter に直接付けることもできます。
diffusivity = iws.Parameter(
    "Positive particle diffusivity [m2.s-1]",
    initial_value=1e-14,
    bounds=(1e-16, 1e-12),
    prior=iws.stats.LogNormal(mean=-32.2, std=1.0),
)

なぜ拡散係数に LogNormal

固相拡散係数は桁にまたがる範囲(しばしば 101610^{-16} ~ 101010^{-10} m²/s)に分布します。生の値への Normal 事前分布では、平均 ± 標準偏差で桁オーダの不確かさを表現しづらいです。LogNormal 事前分布はパラメータを対数スケールで扱うため、「平均 ± 1 標準偏差」が係数 ee に相当し、より自然です。上記の例の mean=-32.21014\sim 10^{-14} の自然対数なので、典型的な粒子内拡散係数を中心とする事前分布になっています。

正則化 (理論)

リッジ回帰、MAP 推定、バイアス・分散トレードオフ (英語ガイド)。

データフィッティング概要

事前分布を目的関数・オプティマイザと組み合わせる方法。