数値実験
計算によって仮説を検証する。 実験設計の考え方が、そのまま必要になる。
何を測るか#
比較する前に、何をもって良いとするかを決める。
| 指標 | 例 |
|---|---|
| 精度 | 誤差、成功率、到達率 |
| 速度 | 実時間、反復回数、関数評価回数 |
| 資源 | メモリ、通信量 |
| 安定性 | 実行ごとのばらつき |
実時間だけで比べると、実装の質や機種の差が混ざる。 アルゴリズムの比較なら、 機種に依存しない量(関数評価回数など)も併記する。
条件を揃える#
| 揃えるもの | 理由 |
|---|---|
| 初期値 | 有利な初期値で差が出うる |
| 停止条件 | 「収束」の定義が違うと比較不能 |
| ハイパーパラメータの調整量 | 片方だけ丁寧に調整しない |
| 計算環境 | 熱による周波数低下、他プロセス |
最後から 2 番目が特に重要。 自分の手法だけ丁寧に調整して比較するのは、 広く見られる不公正(tuning bias)。
確率的な手法の扱い#
1 回の実行結果は標本 1 つにすぎない
↓
複数の[[科学計算/乱数|種]]で繰り返す(20〜30 回以上)
↓
中央値・四分位範囲・箱ひげ図で報告する
↓
差が偶然でないか[[研究/統計的検定|検定]]する平均だけの報告は、外れ値に引きずられるので、 分布が分かる形で示す。
記録#
| 記録するもの |
|---|
| コードのバージョン(コミットハッシュ) |
| 全パラメータ |
| 乱数の種 |
| 環境(OS、ライブラリのバージョン、CPU/GPU) |
| 生の結果(加工前) |
加工後の数値だけ残しても、後から検証できない。
参考文献#
- Nikolaus Hansen et al. COCO: A platform for comparing continuous optimizers in a black-box setting. Optimization Methods and Software 36(1), 2021. https://doi.org/10.1080/10556788.2020.1808977
- Joaquín Derrac et al. A practical tutorial on the use of nonparametric statistical tests. Swarm and Evolutionary Computation 1(1), 2011. https://doi.org/10.1016/j.swevo.2011.02.002
- Charles R. Harris et al. Array programming with NumPy. Nature 585, 2020. https://doi.org/10.1038/s41586-020-2649-2