概要
深層学習の論文を読んで再現実験を行うときに、あっさりうまくいくこともあるが、全然再現できないことのも多い。ベースラインからほとんど変わらないとか、そもそもこの論文、ベースライン手法のチューニングしてないじゃんとか、いろいろ問題が出てくる。
機械学習分野の論文は再現性が低い、という問題を少しでも解決するために、NeurIPSが論文投稿者に求めているチェックリストを読んでみた。
Andrew Ng先生のdeeplearning.aiがやっているニュースレターであるThe Batchで、紹介されていた。
意訳
アルゴリズムについて
提示しているアルゴリズムについて、以下の事項を満たしていること。
- 数学的な設定、アルゴリズム、およびモデルの明確な説明をする。
- 任意のアルゴリズムに対する複雑さ(時間、空間、サンプルサイズ)の分析をする。
- 外部ライブラリを含む、すべての依存関係を特定している、ダウンロード可能なソースコードへのリンクを提示する。
理論的な主張について
理論的な主張については、以下の事項を満たしていること。
- 結果がどうだったのかについての明記する。
- 仮定を明確に説明する。
- 主張の完全な証明を提供する。
図と表について
経験的な結果(つまり、実験結果)を示す図と表については、以下の事項を満たしていること。
- サンプルサイズなど、データ収集プロセスに関する完全な説明を行う。
- データセットまたはシミュレーション環境のダウンロード可能なバージョンへのリンクを貼る。
- 除外されたデータの説明、前処理ステップの説明。
- Training/Validation/Testのためにサンプルがどのように割り当てられたかの説明をする。
- 考慮されるハイパーパラメーターの範囲、最適なハイパーパラメーター構成を選択する方法、示している結果で使用されたすべてのハイパーパラメーターを明記する。
- 評価実行の正確な回数を明記する。
- 実験の実行方法の説明をする。
- 結果の報告に使用される特定の指標または統計の明確な定義を提示する。
- エラーバーを明確に定義する。
- 中心的な傾向(例:平均)と変動(例:標準偏差)を伴う結果の説明を行う。
- 使用されるコンピューティングインフラストラクチャの説明を行う。
PyTorch周辺の補助ツール(2020年01月10日追記)
Facebook AIのブログ記事で、このチェックリストに関する言及がなされていました。その記事の中で、一部とはいえ再現性をサポートするためのツールやサービスが紹介されていましたので、簡単に列挙しておきます。
- PyTorch Hub: Colabの組み込みサポートとPapers With Codeとの統合が組み込まれている。これにより結果をより迅速かつ簡単に評価できるようになっている。
- PyTorch Lightning: 研究ワークフローの多くを自動化し、最新のベストプラクティスを保証してくれる。
- sotabench: GitHubの実際のコードと、研究を再現するための透過的で継続的な統合のようなインフラストラクチャを使用して、論文の自動比較を提供している。
再現性の保証のためには個々の研究者の努力だけではなく、このあたりのツールやサービスの整備や、コミュニティの成熟が必要であるという書き方がなされていて、なるほどなあと思いました。
感想
再現実験マンにとっては、以下が重要かなと思った。
-
外部ライブラリを含む、すべての依存関係を特定している、ダウンロード可能なソースコードへのリンクを提示する。
- ソースコードは公開しないより公開するほうがはるかにマシなわけですが、「githubにソースコード置いとくよ(ただしMNISTの実験のぶんだけね)」、みたいなものも多いので、すべての実験に関する完全なソースコードの共有をしてほしいもんです。
-
中心的な傾向(例:平均)と変動(例:標準偏差)を伴う結果の説明を行う。
- 精度評価の表に「±」が入っていないと悲しくなる。
- 精度の分布を示してほしい。深層学習はどうしても訓練の過程にランダム性が入るので、極端に悪かった結果は、平均や標準偏差の計算から除いてもいいと思うが、outperformな結果が2回に1回くらいの割合で得られるのか、10回に1回しか得られないのか、で再現する人にとっての物理的・心理的負担がぜんぜん違う。