再現性
同じ手順で同じ結果が得られること。 科学的主張の前提であり、 再現できない結果は主張として成立しない。
段階#
| 用語 | 意味 |
|---|---|
| 再現 (reproducibility) | 同じデータ・同じコードで同じ結果 |
| 追試 (replicability) | 別のデータ・別の実装で同じ結論 |
前者は最低限の要求。後者が本当の検証。
妨げるもの#
| 要因 | 対処 |
|---|---|
| 乱数の種 | 固定して記録する |
| ライブラリのバージョン | ロックファイル、コンテナ |
| 浮動小数点の非決定性 | 演算順序を固定する |
| 並列実行の順序 | 決定的な集約を使う |
| GPU の非決定性 | 決定的アルゴリズムを指定する |
| 環境変数、ハードウェア | 記録する |
浮動小数点の順序依存#
浮動小数点の加算は結合則を満たさない。
並列に総和を取ると、 スレッドの終了順で結果がわずかに変わる。 反復的なアルゴリズムではこの差が増幅されうる。
**「同じコード・同じデータなのに結果が違う」**の 主要な原因のひとつ。
実践#
| 手段 | 内容 |
|---|---|
| バージョン管理 | コードと設定を git に |
| 依存の固定 | package-lock.json、requirements.txt、uv.lock |
| コンテナ | Docker で環境ごと固定 |
| 実験管理 | 設定・結果・成果物を紐づけて保存 |
| 自動化 | 手作業の手順を残さない |
| 公開 | コードとデータを出す |
手で実行した手順は必ず失われる。 スクリプトにしておけば、それ自体が記録になる。
このノートでの実践#
出典リンクの実在を 機械的に検証する仕組みを CI に組み込んでいる。 人間の記憶や善意ではなく、 自動化された検査によって主張の根拠を保つという考え方は、 再現性の実践と同じ発想にある。
参考文献#
- Monya Baker. 1,500 scientists lift the lid on reproducibility. Nature 533, 2016. https://doi.org/10.1038/533452a
- Roger D. Peng. Reproducible Research in Computational Science. Science 334(6060), 2011. https://doi.org/10.1126/science.1213847
- Odd Erik Gundersen, Sigbjørn Kjensmo. State of the Art: Reproducibility in Artificial Intelligence. AAAI, 2018. https://doi.org/10.1609/aaai.v32i1.11503