データナード

機械学習と自然言語処理についての備忘録 (旧ナード戦隊データマン)

機械学習研究のためのREADME.mdテンプレート

開発者は、研究者と呼ばれる人々の研究成果をしばしば利用します。そのため、それらの研究成果の再現性は重要です。今回、Papers with Codeが機械学習コードの完全性のためのチェックリストを作成したようなので、それを見てみます。

英語読める人向け

英語が読める人は、この記事を読まず以下のリンクを読んでください

概要

  • paperswithcodeがML研究のコードをリリースするためのチェックリスト集を公開した。https://github.com/paperswithcode/releasing-research-code
  • NeurIPS2020のガイドラインになった。
  • README.mdのテンプレートが公開された。
  • チェックリストの事項を満たすと、その研究成果を利用したい人にとって特に役立つ。

README.mdのテンプレート

paperswithcodeのREADME.mdテンプレートを見ると、研究者がREADMEに何を書くべきかが参考にできます。

https://github.com/paperswithcode/releasing-research-code/blob/master/templates/README.md

タイトル

  • READMEの最上部のタイトルは論文タイトル。
  • その下に「このリポジトリは<論文タイトル>の公式実装です」と説明をつける。
  • オプションとして、手法の視覚的な説明図、bibtex entry, デモへのリンク、ブログ投稿・チュートリアルへのリンクなどをつけるとよい。

実行に必要なもの

  • コードの実行に必要なものを書き、それを導入する手順を書く。
  • pipでのインストール手順、環境設定、コマンド、データのダウンロード、等。

訓練コード

  • 再現するために必要な訓練の実行方法を書く。
  • 論文で書いたパラメータ等を再現できるコマンド例などのすべての手順を書く。

評価

  • 論文内で報告したすべての結果を再現するための評価手順(コマンド等)を書く。

事前訓練済みモデル

  • 事前訓練済みモデルのダウンロードリンクをのせる。
  • それがどのように訓練されたか書いたリンクをのせる。
  • モデルへのリンクを含むテーブルをのせることもできる。

結果

  • 当該のモデルによって得られる結果をのせる。
  • paperswithcodeの該当のタスクへのリンク等のせる。
  • 図などが成果物に含まれる場合は、その図そのものと、それを再現するためのnotebookへのリンクをのせる。

ライセンス

  • ライセンスと、コードレポジトリに貢献する方法を書く。

チェックリストについて

  • チェックリストは、「再現性を促進するためのツール」として考えられます。
  • 企業がすべてのコードとデータをリリースすることは (機密などの理由で) できない場合があることを考慮する必要があります。
  • チェックリストの目標は、科学的方法論や作業結果に対して、透明性と完全性をもたせることのようです。
  • 方法論についての混乱の排除や、業界の協調性を高めることなどが期待されています。

考察

  • 私は研究者ではなく開発者なので「論文を書く」といったことは行いませんが、研究者の人々が再現性を意識してコードを公開してくれれば、少なくともそれを再現しようとしている我々開発者にとって有益です。
  • 一部の研究については、データを公開すること自体がプライバシーの問題を含んでいたり、企業機密を含んでいる可能性がありますが、再現するために必要なすべての手順がコードとして自動化されていなければ、(不可能ではないとしても)再現することは非常に困難です。
  • 再現性を実現するために必要な情報が十分に公開されていないことがありますが、実験の説明だけでは不十分である場合が多いです。
  • 研究者はこのREADME.mdのような形式にしたがって、研究成果の再現性を示してください。(切にお願いします)
  • 開発者がコードを公開する場合にも参考にできそうです。

蛇足: sentiment_jaのREADMEを見る

sentiment_jaは私が作成した感情分析のツールですが、paperswithcodeのテンプレと比較してみます。

https://github.com/sugiyamath/sentiment_ja/blob/master/README.md

(もっとも根本的な問題は英語力ですが...)

タイトル

  • コードに対応した論文があるわけではないため、ツール名がタイトルです。
  • 概念的な図がありません。

実行に必要なもの

  • 実行に必要なもののインストールはすべて自動化されています。
  • インストール方法がコマンドで書かれています。

訓練コード

  • 上部に訓練方法へのリンクを載せています。
  • ただし、自動化された訓練手順はテストされていません。

評価

  • 評価データがありません。
  • サンプル文での出力結果だけが載せてあります。
  • 実行方法は載せてあります。

結果

  • 日本語感情分析の正式な共有タスクがないため、リーダーボードがありません。
  • なんらかの評価データでの結果を載せていません。

ライセンス

  • MITライセンスを付与しています。

開発者として

  • 何らかのテストデータでの評価結果をコードと共に載せたほうが良いかもしれない。
  • 事前訓練済みモデルの訓練時にテストデータが含まれないことを保証することが必要。
  • データを公開できる場合はデータを公開したいが、規模による。
  • 開発と研究の違いの一つは、結果を提示するにとどまることが多いのが研究であるのに対し、ツールとして使える状態にしている事が多いのが開発(という印象)。
  • テストデータを公開すると同時に、「このツールの結果をベースラインにしてください」的に公開する方法もありそう。

参考