はじめに
最近までというか、ついさっきまで我流で機械学習系の学術論文を読んできたのですが、どうも効率が悪いなーと感じていました。かつマレーシアにそんなことを教えてくれるような人も居ないので、有名なStanfordの講義「CS230」も観て得た「機械学習系の論文を読む際に抑えるポイント」を紹介します。(というか、この記事のコンセプトはもはや自分のためのメモみたいなカンジです)
読む論文をリスト化する
まず、自分が読みたい論文を5つリスト化します。
横軸は達成率になっていて、100%は「読み終わった、理解した」。0%は「まだ読んでいない。手をつけていない」を表します。
そして100%に到達した論文は新しい論文に更新していくという流れです。(常に論文が5つある状態をキープする)
なぜこのようなことをするかというと、論文によっては最初読み始めた時に、「いや、今の自分のレベルと照らし合わせると少し難しいなー」ということがあると思います。そのような論文は一旦キープしておいて、自分のレベルにあった論文を読むところからスタートして、そのレベルに達したらキープしておいた論文を読むというフローを作る為です。(人間なんで、読む前からこれムズそうとか判断するの難しいですし...しかも英語やし...)
読み方
- 読む流れ
- Title、Abstract、Figures (図) を抑える
- Introduction、Conclusion、Figureを抑えて、そのあと軽く全体をザッと流し読みする。
- 全体を読む。(ただし式などの数学の部分は飛ばすor軽く読むでOK)
- 全体を読む(ただし、なんかはっきりとわからないところは飛ばしてOK)
なぜ全体を読む前にIntroductionとConclusionを抑えるかというと、著者はその論文のポイントのまとめをその2つに書いている場合が多いからです。
- 著者が何を成し遂げたのか、トライしたのかを理解する
- その研究のアプローチのキー要素を理解する
- その研究内容、結果を自分は何に使えるかを考える
- その為どんな参考文献を追いたいかを考える
数学部分
ここは結構レベル高いが、新しいアプローチだったりアルゴリズムを作るヒントになることが多い。
例えば、Batch Normalizationの論文を読んで、スクラッチから実装する。
コード
- 研究で使われたオープンソースのコードを実行してみる
- スクラッチから自分で実装してみる
読むペース
短期集中ではなくて、長期的な期間安定的に読む。オススメのペースは1週間に2、3論文。
さいごに
以上、いかがだったでしょうか?
僕はこの読み方を今から実践して、また結果を記事にしようかなと思っています。
参考文献
[Stanford CS230: Deep Learning | Autumn 2018 | Lecture 8 - Career Advice / Reading Research Papers]https://youtu.be/733m6qBH-jI