数値実験

数値実験

執筆済 科学計算研究

計算によって仮説を検証する。 実験設計の考え方が、そのまま必要になる。

何を測るか#

比較する前に、何をもって良いとするかを決める。

指標
精度 誤差、成功率、到達率
速度 実時間、反復回数、関数評価回数
資源 メモリ、通信量
安定性 実行ごとのばらつき

実時間だけで比べると、実装の質や機種の差が混ざる。 アルゴリズムの比較なら、 機種に依存しない量(関数評価回数など)も併記する。

条件を揃える#

揃えるもの 理由
初期値 有利な初期値で差が出うる
停止条件 「収束」の定義が違うと比較不能
ハイパーパラメータの調整量 片方だけ丁寧に調整しない
計算環境 熱による周波数低下、他プロセス

最後から 2 番目が特に重要。 自分の手法だけ丁寧に調整して比較するのは、 広く見られる不公正(tuning bias)。

確率的な手法の扱い#

1 回の実行結果は標本 1 つにすぎない
   ↓
複数の[[科学計算/乱数|種]]で繰り返す(20〜30 回以上)
   ↓
中央値・四分位範囲・箱ひげ図で報告する
   ↓
差が偶然でないか[[研究/統計的検定|検定]]する

平均だけの報告は、外れ値に引きずられるので、 分布が分かる形で示す。

記録#

記録するもの
コードのバージョン(コミットハッシュ)
全パラメータ
乱数の種
環境(OS、ライブラリのバージョン、CPU/GPU)
生の結果(加工前)

加工後の数値だけ残しても、後から検証できない。

参考文献#

ノート一覧を閉じる