コンピュータサイエンス論文を多読する試み
コンピュータサイエンスに関連した論文をもっと読むべく新しい試みを始めてみました。本記事ではなぜ始めたのか、どのようにやるのか言語化してみます。
はじめに
論文を読むのは一般的に労力のかかる作業です。労力のかかる部分は人によって違うと思いますが、私の場合は徹底的に内容を理解しようと論文の枝葉末節まで精読し、それを詳細に記録に残そうとして膨大な時間がかかっていました。これを意識レベルで直すことが難しかったので、論文を全文精読しないようにする仕組みを作ることにしました。
問題意識
好奇心から論文を読むようにしています。例えば、昨年は以下の論文を読んで記事にしました。
- Reconsidering Custom Memory Allocation (OOPSLA 2002) (07/22)
- snmalloc: A Message Passing Allocator (ISMM 2019) (07/08)
- MESH: Compacting Memory Management for C/C++ Applications (PLDI 2019) (02/26)
読みたい論文がいっぱいある一方、各論文をじっくり読み込まないと内容を詳しく理解できないため、一編の論文を読むのにとてつもない時間がかかっていました1。また「読んだ論文は記事に残す」という自分ルールによってその負荷はさらに重くなっていました。慣れない英文を読み解いて理解しそれを自分なりに整理して記事にまとめるコストは莫大で、上記の記事を書くのにそれぞれ一週間以上かかっています。またこれら以外にも読みながら記事を書いていたけど途中で力尽きてそのまま放置されている論文がいくつもあります。仮にモチベーションを維持してこの作業に時間を注ぎ込めたとしても、一年は約 52 週間なので単純計算で年間 52 編しか読めません。
論文もっと読みたいんだけど「読んだものはブログにまとめる」「後で自分が読み返したときに同じ理解度まで一気にたどり着けるようにまとめる」という自分ルールのコストが高くて、まとめ途中で放置してるものがいくつかある。もっと気軽に読んで気軽に記事に残していきたい…
— nhiroki (@nhiroki_) November 28, 2019
この状況を打破するために今まで何度か精読をやめて流し読みを心がけてみましたがことごとく失敗しています。
論文、意識的に流し読みしようと試みるんだけど、読んだ後まったく人に説明できなくて愕然とするので結局精読してしまう・・・
— nhiroki (@nhiroki_) November 28, 2019
意識ではなく仕組みで読み方を矯正していく必要がありそうです。
方法
そこで今年は「論文のアブストラクトだけを精読していく」という方法を試していきます。ただ、アブストラクトだけを精読するというのは意外と難しく、アブストラクト中で分からないことがあると本文中の該当する段落を探したり、関連研究のリストを見に行ってしまったりして結局全文精読しがちです。これに仕組みで抗うために以下のフォーマットを作りました。
- Google Docs などでノートを作ります。ノートを作る粒度は何でも構いませんが、私は国際会議単位で作っています。
- ノートに論文名・著者名と所属・アブストラクトの全文をコピーしておきます。国際会議は参加者の興味に合わせてセッションに細分化されているのが一般的ですが、自分の今の嗜好で読む論文が偏るのを防ぐためにセッションを気にせずに全ての論文のアブストラクトをコピーします。
- アブストラクトを読んで分かったことや分からなかったことを「メモ」と「雑感」に分けて記録します。読み進める敷居を下げるために記録は雑にし、ただの翻訳調の文章になっても気にしないようにします。ただし後で自分が読み返したときに一瞬で同じ理解度まで到達できることを意識して書きます。何か調べたら参考にしたページを引用しておきます。分かること (分かったこと) と分からないことを明確にするのが重要なので、分からないことは「分からない」とはっきり書きます。
このフォーマットの利点は次の通りです。
- アブストラクトだけを予めコピーしておくことで本文を参照できなくし、うっかり全文精読モードに入って時間を浪費するのを防ぎます。
- Google Docs のようなオンラインコラボレーションツールを使うことで、スマートフォンからも読んだりメモを書いたりできてスキマ時間を有効活用できます。また、読んだ人からコメントをもらったり、何人かと共同で読み進めることもできそうです。論文が PDF や紙媒体だとノートとそれらの間を行ったり来たりする必要がありますが、本フォーマットだと読むべきものがすべてノートに転記されているのでコンテキストスイッチがかかりません。
- 一編の論文当たりに読む文章が短いので負荷が軽く、多くの論文に触れることができます。少しずつ読み進められるため、以前記事にした「少しずつコツコツやる」というスタイルとの親和性が高いです。
実践
FAST 2020 の論文をここで紹介するフォーマットで読んでいます。ノートを公開しているので参考にしてみてください。論文に対するコメントも大歓迎です。
先日開催された FAST 2020 論文のアブストだけを少しずつ読み進めています。現時点で Cloud Storage, File Systems, HPC Storage, SSD and Reliability, Consistency and Reliability セッションと +α で 15/23 編のアブストを読みました https://t.co/150tbOsebq #nhpaper
— nhiroki (@nhiroki_) February 29, 2020
まとめ
本記事では全文精読による時間の浪費を防ぐことを目的とした論文読書フォーマットについて紹介しました。この仕組みは全文精読に比べてメモの質や理解度は下がります。しかしそれらを追求すると全く時間が足りないので、今年は読書量を増やし興味ある分野の範囲を広げることを目指してこの仕組みを育ててみようと思っています。
注釈
-
論文を過度に精読してしまう癖は学生時代の輪講に起因している気がします。輪講では論文を一編選んでそれについてあたかも著者になったような気持ちでプレゼンをしていました。発表資料を作るには前提知識や提案手法や評価手法の詳細を理解しておく必要があり、また質疑応答でうまく答えられるように当日聞かれそうな質問を用意して細かい部分まで調べていました。今振り返ると他者の論文を紹介するのにそこまでしなくてよかった気もしますが、これはこれで良い訓練になりました。一方で特定のテーマに関連する論文数編をざっと読んで全体の流れ (研究動向) をまとめるような訓練もするべきだったと思っています。 ↩