ジョイジョイジョイ

ジョイジョイジョイジョイジョイ

論文読みの日課について

かれこれ三年以上ほぼ毎朝論文を読んでいます。

ほぼ毎朝、というのは本当にほぼ毎朝です。この三年のうち読まなかった日はワクチンの副反応でダウンしている日など、あわせて 10 ~ 20 日ほどでしかありません。この日課だけでも 1000 本以上は論文を読んだことになります。

論文読みの日課についての知見が溜まってきたのでこの記事で共有します。

主な想定読者は研究者と学生の皆さんですが、それ以外の論文読みに興味のある皆さんにも有用な情報が詰まっているはずです。

日課の流れ

  1. ブラウザを開く
  2. 論文を選ぶ(選び方は後述)
  3. Readable で論文を翻訳する
  4. ざっと呼んで一通り内容を理解する(目安 30 分)
  5. 著者の情報や関連する文献を軽く調べる(目安 5 分)
  6. 論文メモを執筆する(目安 25 分)

論文メモはこんな感じです(クリックで拡大)

以上の作業を、朝食後ただちに、最初の作業として毎朝行っています。目安時間はあくまで目安で、選んだ論文によって半分になることもあれば倍になることもあります。詳しくは時間を計測するの項を参照ください。以下ではそれぞれの段階のやり方、気をつけていること、そしてその理由を詳しく解説します。

Readable について

Readable は英語論文をレイアウトを保ったまま日本語に翻訳するツールです。僕が作りました。

実は、Readable はこの日課を快適にするために自分用に作ったツールが原型となっています。今でも僕自身、この日課をこなすために Readable をバリバリ使っています。

そういう経緯なので、この記事でお話するような論文速読をこなすためには非常に適したツールとなっています。論文速読の際には皆さんぜひ一度使ってみてくださいね。

readable.jp

🧐 論文の選び方

現在の方針は以下の通りです。

まず、今自分がやっている研究内容とは直接関係がないものを選ぶ。査読で読まないといけない論文も、この日課では読まない。これらの論文はどのみち読むことになるので、そうではない論文を読むのが日課の目的です。(だたし、後述のように最初は研究内容直結のものを読むことをおすすめします。)

第二に、選定になるべく時間がかからないようにするために、ある程度自動的に選択できるような手段を構築してシステマティックに選ぶ。論文選定は日課の最初のステップです。ここで躓くと、日課にスムーズに入っていくことができなくなり、そのために日課を開始するのを先延ばしにしてダラダラしてしまうことになります。何も考えなくても論文を選べるような仕組み作りをしていくことで、最初のステップで弾みをつけ、サボりを防ぐことができます。この点でも、論文の選び方は日課において非常に重要な点です。

以下に、僕がこれまでに試したおすすめの選び方を紹介します。最高の方法が一つだけある訳ではありません。どれも一長一短であり、僕はこれらを数ヶ月周期で移っていっています。

自分の研究内容と直接関係あるものを読む(特におすすめ)

これは上述した第一の条件に相反していますが、初心者にはこの選び方が非常に有効です。僕自身、日課を始めた最初の数ヶ月はこの方針で論文を選んでいました。

具体的には僕の専門はグラフニューラルネットワークなので、こちらのレポジトリ https://github.com/naganandy/graph-based-deep-learning-literature/tree/master/conference-publications を片端から一本ずつ読んでいきました。同様のレポジトリは “awesome [分野名] papers” などで調べれば出てくるかと思います。レポジトリ内の読む論文が尽きた後は、関連する国際会議のプロシーディングスを graph などの単語で検索して片端から読んでいきました。

github.com

この方法を初心者におすすめする理由は、第一に、当然ですが、ここで読んだものは自分の研究に直接役立ちます。研究を始めたてのころは色んなことに手を出す余裕もなく、研究のリズムも確立できていません。日課に論文読みを組み込むことで、確実に研究を進められるようになります。

第二に、専門外の論文を読むのは一筋縄ではいきません。難しすぎるとすぐ挫折してしまうため、比較的スムーズに読めるトピックからはじめるのをお勧めします。

第三に、上達のスピードが目に見えるほど早いことです。専門を絞ると論文のバリエーションはそこまで多くありません。特定の分野の論文を読むことに集中すれば、1 ヶ月から 3 ヶ月程度で主要なパターンをカバーすることができます。3 ヶ月あれば約 100 本ですから、小さい国際会議であればプロシーディングス全て、大きい国際会議であってもサブ分野の論文全て読みきることができます。これをこなすと、その分野のプロの最先端の知見に一気に迫ることができます。

この論文の選び方をした時に起こる重要な現象は「飽きる」ことです。これは一見悪いようですが非常に良い兆候です。この手法と似たようなものは前にも見たなとか、この著者はいつも同じようなパターンの論文を書くなといったようなことが、意識的、あるいは感覚的に掴めるようになるというのは、その分野に精通した証拠に他なりません。こう来たらどうせ次はこう来るだろう、ほら当たった、というような予測ができるようにまでなれば、自分でその分野の論文が書けるようになります。次はこうなって、その次はこうなって…と逐次的に紡いでいけば論文ができあがります。(さながら言語モデルの next token prediction です。)

初心者のうちはひとつの分野に絞り、パターンが見えて飽きてくるまで続けたあと、すなわちひとつの分野に精通したあとに、他の分野に移ると良いでしょう。他の分野に移る際は、その集中した分野を軸足に隣接分野に視野を広げてもよいですし、全く違う分野に挑戦するのも良いかと思います。

完全にランダムに選ぶ

国際会議のプロシーディングスを完全にランダムに選ぶことも試しました。関連する国際会議 (僕の場合 NeurIPS, ICML, KDD など)のプロシーディングスから自動で一本ランダムで選び通知するスクリプトを作ったりもしました。これは前述の第一と第二の基準を完全に忠実に守ることになります。

完全にランダムに選ぶと、馴染みのある国際会議であってもこんな論文があったのか、こんな種類の研究があるのかと、初めのうちは驚くことになります。今までいかにバイアスを含んだ論文の選び方をしていたかを痛感します。この選び方は見識を広める上で非常に役に立ちます。

大きな欠点としては、専門外の論文は読みづらいので、時間も心理的な負担もかかることです。自分と宗教を異にするようなグループが書いたものは特に時間がかかりストレスも大きいです。日課は 1 日 1 本必ず読むと決めているので、そのような論文に当たった場合でも最後まで読み通しています。これを繰り返していると、守備範囲外の論文であってもある程度までは読めるようになってきます。

これはかなり力が付く読み方なのですが、なにぶん骨が折れるので、なかなか継続できません。スケジュールに余裕がある期間や、選び方のテーマを切り替えるタイミングなどで、短期的に差し挟んでたまに行うぐらいが丁度良いと思います。

被引用数の多い順に選ぶ(特におすすめ)

これは質の高い論文を安定して選べるのでおすすめです。

権威ある国際会議やジャーナルといえども、読むに値しないような論文にまみれています。

一方で、読む前に論文の価値を推定するのはとても難しい問題です。色々試行を錯誤した中で、最も簡単で効果のある指標は被引用数であるということに結論になりました。冒頭で述べた通り、簡単に選べるというのが重要であり、被引用数は簡単さと精度の良いトレードオフを達成します。

この選び方をより楽にするために https://psearch.joisino.net/ というツールも自分用に作りました。(最近はデータを更新していません。需要があればまた更新します。)

psearch.joisino.net

同様のツールを自分用に作りたい方は、Semantic Scholar が便利な API とデータを用意してくれているのでオススメです。

被引用数でソートをするには、全ての論文を用いる方法と、年や国際会議やジャーナルでフィルタした後にソートをする二通りが考えられます。

国際会議やジャーナルでフィルタリングするのは、簡単に関連論文をフィルタリングすることができ、かつ権威ある国際会議やジャーナルであれば良いクオリティフィルターにもなります。

最新の国際会議のみに限って被引用数でソートをすると不安定になることに注意は必要です。というのも、まだ十分な時間が経過していないために被引用数が安定せず、かつ過去にリジェクトされて再投稿されたものほど時間の利が働いて多くの引用が集まり、結果としてリジェクト経験論文ばかりが上位に来るようになるからです。そのような論文も、引用が集まっているからには基本的には良い論文なのですが、クセのあるものも多いので頭に留めておくと良いでしょう。

最もおすすめなのは年を限定することなく、特定の国際会議やキーワードの中で被引用数でソートするということです。こうすると自然と古典的な論文が上位に来ます。古典を読むことは中長期的に非常にみてとても力がつきます。また、やはり古典は古典となっているだけあって、読んでいて面白いものが多いです。ランダムな論文だと記述が完結しておらず、理解に苦しみ、イライラすることがありますが、古典ではそういうことはなく表現も上手なものが多いと感じます(あまりに古いとスタイルが違いすぎて読むのが大変になります。ここでいう古典は機械学習分野の場合、2000 - 2010 年くらいを指しています。)この点でも日課で読むには古典は適していると言えます。

トピックごとに重要な論文を読んでいく

一週間ごとにひとテーマを決めて、そのテーマに沿って論文を選ぶということをしていました。

具体的には、”causal inference week” や ”uncertainty week” や “prompt week” などと銘打って一週間連続で関連する論文を読みました。

一週間というのは、ちょうどその分野を概観するに足る長さで、かつ飽きが来ず、かつ多くのテーマを渡っていけるので、良い長さだと感じています。一週間でまだ物足りない場合や、途中で自分に合っていないと気づいた場合には、テーマごとに柔軟に長さを変更しました。

欠点は論文を選ぶのが難しいということです。システマティックにはなかなか選べず、ひとつ目の論文は Google Scholar などでそれなりに苦労して選び、その後、Connected Papers などで関連する文献を引用数の多い順に選んでいく戦略を取りました。ツールの力を借りたとはいえなかなか大変でした。また、テーマを毎週選ぶというのもなかなか大変でした。20 週くらいやりましたが、最後はテーマを無理やり捻り出す感じでした。

www.connectedpapers.com

この種の論文の選び方は、コンスタントに読み進める日課よりも、興味の持ったタイミングでまとまったサーベイとしてやっていく方が向いているように思います。日課でやるとすれば、軽く興味を持ったトピックとその論文をどこかにメモしておき、たまに引っ張り出して読んでいく方式が良いでしょう。

研究者ごとに論文を読んでいく

上記のトピックごとと同じように、一週間ごとに一人研究者を決めて、その人の書いた代表的な論文を順に読んでいきました。

具体的には僕の場合、Christos Faloutsos, Aleksander Mądry, Charles Elkan などを選びました。(彼らの論文はとても面白いものばかりなのでおすすめです)。

一週間その人の論文を読み続けると、その人の癖や、どういう方向性で研究を進めているかといったことが分かります。これは自分で研究する時の引き出しの一つとして活用することができるので、研究者としての能力を上げるにはとても良い方法です。

Google Scholar Citations を使えば、その人の引用数の多い順に簡単に論文を選ぶことができるのも利点です。

初心者のうちは、良い研究者を選ぶのはなかなか難しいかもしれません。Google Scholar Citations を使えば分野ごとに有名な研究者を選ぶことができます e.g., https://scholar.google.com/citations?view_op=search_authors&hl=ja&mauthors=label:machine_learning 慣れてくると、よく見かける研究者や自分の嗜好にあう研究者で絞っていくとよいでしょう。

📝 論文メモの書き方

論文メモは力を入れて書いています。時には論文を読むのと同等かそれ以上の時間をかけて論文メモを書いています。読んだことを忘れてしまっては意味がないので、このステップは非常に重要です。

メモを書くうえで重要なことは、第一には、問題設定をできるだけ詳細に書くことです。手法は細かいところを忘れても自分で補完できますが、問題設定はそうはいきません。問題設定はメモの中で一番気を使って書いている箇所です。自分の研究をしている時や査読をしているときに、あの既存研究はこの設定に使えるかな、ということが確認したくなることがよくあります。これをチェックするために、条件はできるだけ細かいところまで書いておくべきです。教師データは必要か?必要ならばどういう形式か?出力はどういう形式で得られるのか、分類だけか、回帰問題にも使えるのかなどです。これらをちゃんとメモしておくと、原論文を見返さずともメモを見るだけでわかるようになり、あとあと役に立ちます。

第二に、どういう内容のものであったかを簡単に確認できるようにするということは重要です。後でこんな論文があったなとぼんやり思い出したとき、当該論文を探し出すのは時間がかかります。すぐに正誤をチェックできると便利です。僕はメモの一行目に一行で完結なまとめを書いて、それを読めば迅速なチェックができるようにしています(記事冒頭の論文メモのサンプルを参照)。

第三に、検索フレンドリーにすることです。「提案手法は」と書くのではなく、少なくとも一箇所では提案手法名を書き下して、手法名および手法の略称でテキスト検索したときに引っかかるようにするべきです。また、実験で使われているデータセット名は書き下すよう心がけています。これは、サーベイ中や査読中に、論文に登場するデータセット名で検索することで直接比較できる過去の論文をすぐに引っ張ってこれるようにするためです。

第四に、メモを読み返すとそこから論文の概要を自力で復元できる程度の粒度は保つことです。上述の第二と第三の点で検索に引っかかるようにして、所望の論文メモを見つけたあと、原論文に戻らずともメモだけで目的が完遂できると作業効率がとても上がります。メモを読むことになるのは大抵数ヶ月後や数年後です。あまりに簡潔ではメモを読んでも全く意味が取れません。数年経つと別の研究トピックに移っていることもあり、その時には当時の細かい感覚は忘れてしまうので、必要と思う以上に緻密に書くことが肝要です。

上記の要件を満たすような、できるだけ簡潔でかつ分かりやすく技術は、日課として論文メモを書いていると自然と上達していきます。ライティング技術の向上という点でも論文読みの日課は有用だと感じています。

以上のことができていると、ミーティング中に人から文献を訪ねられた場合であったり、考察中にこんな論文があったなと思い出したときにただちに検索し確認できるため、とても便利です。

最後に、もう一つ重要なことは、論文の感想をメモに含めていることです。メモのメインの部分ではできるだけ論文の主張を忠実に記述し、感想のところで面白いと感じた箇所や、論文の主張に対する反対意見、あるいは評価において怪しいと思った点を自分なりに述べることにしています。この感想部分は長文になることもしばしばあります。この感想は後で読み返した時に論文を読んだ感覚を呼び起こすのに役に立ちます。しかしそれ以上に、この感想パートがある故に論文を読む行為が受け身ではなく主体的かつ創造的な営みとなることが重要であると考えています。既存の研究に賛成であるとか反対であると述べるのは研究における最も基礎的な行為です。完璧な論文などないので、何かしら欠点は見つかるはずです。そのような箇所を言語化することで新しい研究のアイデアが見つかることもあります。あるいは素直に面白いと思った箇所は、自分の研究や論文に取り入れられるようストックしておくと後々役に立つでしょう。

メモを取るためのツールは好みで良いと思います。僕はひとつの Markdown ファイルに全てのメモをまとめています。このファイルはテキストだけで 3.8 MB もあります。検索するのが大変になってきたので自分用にこのメモ専用の簡単な検索ツールを作ったりもしました。流石にこのやり方は万人向けではないので、Notion を使ったり Google Docs を使ったり、ブログ記事にまとめたり、各々の好みでツールを選ぶのが良いかと思います。

⏳ 時間を計測する

日課をこなすときには毎回時間を計っています。

具体的には冒頭で述べた三つのフェーズ、すなわち内容を把握するフェーズ、周辺情報を調べるフェーズ、論文メモを書くフェーズ、それぞれの時間をストップウォッチで計っています。

これを行う理由の第一は、ダラダラするのを防ぐためです。どんどん数字が進んでいくので、気が散ってぼーっとしてしまったときにすぐに作業に戻ることができます。また、明確に数字として出てくるので、集中力が足りなかったといった反省が終わった直後にすぐにフィードバックできます。

第二には論文を読んだり、ちょっとした研究メモを書いたり、査読する際にかかる時間の感覚が非常に正確になることです。20 分かければこの程度の解像度で理解ができる、40 分かければこの程度というようことがあらかじめ見積もれるようになります。この感覚は、締め切り直前に追加で緊急でサーベイしないといけない際や、査読業務のスケジュールを確定させる際に非常に役立ちます。また、作業の気が進まない大きな要因は不確実性です。どれだけ時間がかかるか分からないという状態よりも、30 分でこれが出来るなというのがあらかじめ分かっている状態の方が、査読やサーベイ作業を始める時の心理的ハードルも下がり、研究がスムーズに進むようになります。

計ったタイムは以下のように Google スプレッドシートでまとめています。

計測時間のスプレッドシート

過去の統計と比較して自動で色を付けるようにすると、今日はメモに時間をかけすぎた、というようなフィードバックも分かりやすくできるのでおすすめです。

🤗 論文メモを公開する

書いた論文メモは毎日研究室 Slack のパブリックチャンネルに投稿しています。

投稿することで、他人に見られているという意識が働き、丁寧にメモを書くようになるほか、サボるのを防ぐことができます。

また、投稿する論文メモが元になってディスカッションがはじまることもあります。毎日研究の話題が投下されることで、研究室 Slack の賑やかしにも貢献していると思っています。

なぜ完全にオープンにしないのか、ですが、一つは歴史的な経緯、もう一つはあまり他人に見られると気兼ねなく書けなくなるということがあります。面白くない論文はちゃんと面白くないとメモに書いてあります。あまり辛辣なのは研究室 Slack に投稿するときにもいちいち削除しています。読んだ論文の共同研究者が身近にいたというようなことはよくあるので、これが原因でトラブルになるのは避けたいと考えています。

とはいえ、もっと広く公開すると喜んでくれる人もいるかと思うので、今後どのように公開していくかについては検討中です。

📜 表現集の作成

論文を読んでいて気に入ったフレーズがあればメモして表現集にまとめています。これは日課に限ったことではないですが、論文を読む上で取り入れるとよい習慣です。

僕は以下のように原文と自動翻訳した日本語を並べて列挙しています。

  • We hope that this benchmark is useful to the community and inspires more research on uncertainty under dataset shift (Can You Trust Your Model's Uncertainty? Evaluating Predictive Uncertainty Under Dataset Shift) このベンチマークがコミュニティにとって有用であり、データセットシフトの下での不確実性に関するより多くの研究を刺激することを期待しています。
  • View synthesis results are best viewed as videos, so we urge readers to view our supplementary video for convincing comparisons. (NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis) ビューイング合成の結果は、動画で見るのが一番わかりやすいので、読者の皆様にはぜひ補足動画をご覧いただき、納得のいく比較をしていただきたいと思います。
  • While we could not solve this challenge sufficiently within the scope of this work, the fact that this is reproducible even in the minimalistic variant proves that this a fundamental problem shared by all offline training settings, and is a critical problem for the community to study in the future. (A Minimalist Approach to Offline Reinforcement Learning) 今回の作業範囲では、この課題を十分に解決することはできませんでしたが、ミニマムなバリエーションでも再現可能であるという事実は、これがすべてのオフライントレーニング設定に共通する基本的な問題であることを証明しており、コミュニティが今後研究すべき重要な問題であると考えています。

日本語を付けているのは、後で適切なフレーズを探すときに目で追いやすいからです。自動翻訳を使っているのは作業コストとの兼ね合いです。

これらのフレーズは、英語の構文的な勉強はもちろんですが、研究や論文執筆における視点や構成方法を取り入れることを大事な目標としてまとめています。研究に欠点がある場合にもそういう方向でまとめるとポジティブな印象になるのか、とか、アピールポイントはこうするとより確実に強く伝えられるのか、ということが分かる表現をできるだけストックしています。構文だけであれば『アカデミック・フレーズバンク』など表現がまとまった成書があります。しかし、より抽象的な視点や構成方法を多く学ぶには、やはり論文を自分で読む中で、文脈を理解しながら自分で採取していくしかないように思います。

www.phrasebank.manchester.ac.uk

取り入れたフレーズは後に自分で論文を書く時に使います。もちろんそのままコピペするのはダメですが、構文や視点を取り入れるくらいは良いでしょう。

🔨 他のツールについて

最近は言語モデルや要約ツールの性能が上がり、これらを論文読みに取り入れている人も多いかと思います。現状では、僕はそれらのツールは日課の論文読みには取り入れていません。

理由の第一は、慣れると普通に読んだ方が早いからです。そもそも、論文にはアブストラクトという、著者自身が書いた最高の要約が付いています。また、品質の高い論文であれば、図表の位置や説明の順序も考え抜かれています。特に、権威のある国際会議に通っているような論文では、論文の構成について非常にこだわっているものが多いです。論文の流れに慣れてくれば、流れに沿って拾い読みする方が早く正確に読めます。半年も日課を続ければ読み方はかなりの程度身につきます。

第二に、本文を読むことは自分で論文を書く際に参考になります。上述のように表現集を作ることもできます。また、自分で論文を書く際には理由の第一で述べた「論文の流れ」というのを習得して自分でも構成できるようになることが求められます。品質の高い論文を原文のまま多く読むことは論文執筆の上達の近道です。

とはいえ、ツールも日進月歩なので、自分の肌に合うものが見つかれば、今後はそのようなツールを取り入れていくことになると思います。現状、Readable が上記の点と便利さの良い妥協点になっています。

⌚️ いつ読むべきか

論文を読むタイミングは朝イチに固定しています。日課をはじめたてのころは他の時間帯も試しましたが朝イチが良いという結論に到達しました。

いったん別の作業をはじめてしまうと、そちらに集中してしまったり、なかなかキリの良いタイミングが訪れずに、日課をこなすタイミングを失ってしまいます。一度タイミングを逃すと習慣が途切れてしまいます。長く続けるには途切れうる要因を極力排除するべきです。朝イチや昼休憩の直後など、強制的に訪れるキリの良いタイミングを活用するのが継続のコツです。

なぜ昼ではなく朝なのかついては、第一には昼はミーティングが入り阻害される場合が多いこと、第二には論文読みは大きな集中力が必要なので朝の方が捗ること、第三には僕が早起きであることが理由です。

いずれにしても、阻害されることなく毎日固定した時間帯に行えることが重要です。時間帯については各々の生活リズムに合わせて選ぶのが良いかと思います。

😣 日課の欠点

大変です。骨が折れます。時間も大きく削られます。

特に、論文締め切り前などバタバタしている期間は継続するのはかなりの意志力を要求されます。

それでも、やる価値は大いにあります。論文読みの日課のおかげで幅広い分野の知識を身につけることができました。論文の読み方や書き方も以前に比べてはるかに上達しました。

三年間なんとかやってこれたのは、これまで述べてきた、論文選びの作業コストを下げるであったり、メモを公開することで追い込むであったり、読むスケジュールを固定化するといった工夫があってこそです。また、少しでも日課の負荷を下げるために開発した Readable をはじめとするツールも役立ちました。これらの合わせ技でなんとか途切れずに今まで続けられています。

忙しい時期には論文の選び方を工夫して、簡単めな論文を選ぶ、たとえば理論系ではなく実験系の論文を重点的に選ぶ、といったことも有効かと思います。

大変だからといって、二日に一回にするとか、週一回にするというのはあまりおすすめしません。毎日やるというリズムは強力なので、これを破ると長続きしません。また、特に機械学習系ではスピード感が大事なので、一日一本、三ヶ月で百本というスピードで論文に触れられるのは研究をする上で大きな強みになります。

大変な場合は、アブストラクトだけ読むとか、イントロまで読むとか、目標分量を下げるのが良いと思います。調子づいてきたら分量を上げていけばよいでしょう。

まとめ

論文読みの日課は大変ですが、やる価値はあります。三年やってもやり切ったという感じではなく、まだまだ読むべき論文は多いなと感じています。これからもこの日課は続けていくつもりです。

以上で述べたことが唯一の方法ではありません。あくまでも一例として捉え、部分的にでも取り入れて、皆さんの読み方のスタイル作りに役立てて貰えればと思います。

連絡先: @joisino_ / https://joisino.net

2022 まとめ

2022年にはいろんなことがありました。

研究

今年もたくさん研究をして論文を書きました。主著だけでも10本出版しました。記念のスクリーンショットです。

出しすぎで草

これについての想定アンチコメントは「研究は量より質」です。
ごもっともです。すみませんでした。

本の執筆

この1年はずっと『最適輸送の理論とアルゴリズム』という本を書いていました。ベストセラー記念のスクリーンショットです。

たくさん予約いただきありがとうございました。

本屋大賞への投票もよろしくお願いします。
(追記:本屋大賞受賞の対象外だそうです。すみませんでした。)

本を書くのは初めての経験でした。僕は論文執筆のスピードは速い方だと自負しているので、本を書くのも余裕だろうとたかをくくっていましたが、計算違いでした。本を書き上げるのはめちゃくちゃ大変です(主に長大な原稿の整合性を保つ点と、論文よりも広いスコープの読者に配慮する必要がある点)。これから本を書く予定の皆さんは覚悟しておきましょう。執筆経験のおかげで、世に流通している本達へのリスペクトがアップしました。

なんだかんだ言っても、本の執筆は楽しかったです。いつかまた。

Readable

Readable という PDF 翻訳のサービスをリリースしました。もともと自分の論文読みを快適にする補助ツールとして長い間使っていたのですが、8月頃自分の研究に行き詰まったときに、本腰を入れてサービス化に乗り出しました。

ありがたいことに、これがとてもバズって10万いいねなんていうとんでもない数の反応を頂きました。反応いただいた方ありがとうございました。

さらにサービスを便利にするべく11月末に有料のプロ版もリリースしました。こちらも多くの人に利用していただきありがとうございます。論文読みが快適になること請け合いなので、皆さん是非 Readable へのご登録お願いします。

readable.jp

趣味

プリティーシリーズ

今年一番ショックだった出来事は、11年半続いたプリティーシリーズのアニメが終了したことです。人生の一部と化していたのでなかなか立ち直ることができませんでした。というか、まだ立ち直れていません。一週間のリズムが崩れまくりです。これを克服するのは来年の大きな課題です。

ひがしやしき

今年は1年中ひがしやしきの音楽を聴いていました。1人のアーティストにここまではまったのは人生で初めてです。ドストライクなアーティストに出会えるのはインターネットのめちゃいい点ですね。

聴きすぎで草

好きなひがしやしきベストテンをいきなり発表します(順不同)

今年行われたひがしやしきファーストライブにも参加しました。地下ライブハウスに行くなんて人生で初めてで、ピアスを開けた兄ちゃんがタバコを吸っていたりしてびびり散らしたりしました。とてもいい人生経験になりました。

アニメオタクやまんがタイムきららオタクの方はひがしやしきを聞きましょう。これは勧誘ではなく義務勧告です。

読書

今年も色々な本を読みました。特に面白かったベストテンをいきなり発表します(時系列順)

中でも面白かったのは『脚本を書くための101の習慣』です。映画の脚本執筆と論文執筆は似ているので普段から脚本執筆の本をよく読んでいましたが、この本は特に刺さりました。「好きなことを書く。市場の要求に応えて書こうなんて思わないこと。市場の要求なんてわかりはしないからね。自分が一番の客だと知っておくといい。」という言葉は勇気づけられますね。一方で「重要なのは君が誰を知っているかじゃなくて、誰が君を知っているかということだ」 という言葉は、引きこもりグセのある僕には大ダメージでした。もっと勢力的に外へアウトプットしていきます(来年の抱負)。

おわりに

以上!

連絡先: @joisino_ / https://joisino.net

論文の書き方

どのようにして論文を書いているかを尋ねられることが最近よくあります。場当たり的に回答することが多かったのですが、このことについて改めてしっかり考えて公開することにしました。

ここで扱う内容は、科学者とはこうあるべき、という理想論ではなく、等身大の大学院生がいかにして論文を捻りだすかという実践的な方法論です。科学者の規範に照らすと適切ではない内容もあるかと思いますがご容赦ください。その代わり、現役の大学院生にとってはただちに活用できる内容になったと思います。

以下では時系列に沿って各段階の方法について述べていきます。

イデアを考える

まずは論文のアイデアを収集します。僕は普段からネタ帳にアイデアを書き溜めていき、論文を書こうと思い立ったタイミングでその中からアイデアを一つ(または二つの組み合わせ)を選んで作業をはじめます。

どのようにアイデアを得るかはあまり一貫性がありません。ここでは代表的な二つの方法を紹介します。

論文や教科書読んでいて思いつく

これはやりやすい方法かと思います。気をつけないといけないことは、論文で提案されていることを改善することを目指すと、得てしてインクリメンタルな研究となりインパクトが小さくなることです。

おススメの方法は、既存論文に書かれている言い訳を覆す方法です。例えば、論文 A で「タスク X の実データは利用できないので人工データで代用する」と書かれていれば、タスク X の実データを収集して公開できないか考える、論文 B で「アプローチ Y は動作が遅すぎて実用的でないので比較からは除外する」と書かれていれば、アプローチ Y を高速にする方法を考える、といった要領です。

この方法の利点の第一は、新規性が担保されることです。こんな手法やデータがあったらいいなと自分で勝手に考えると、よくよく調べたところ同じような手法やデータが見つかり新規性がなかったということが多くあります。論文中で「ない」と述べられていれば、存在しないか、存在していたとしても何かしらの問題があるのでしょう。これにより、実は新規性がなかったと後で発覚する失敗を避けることができます。

第二の利点は、潜在的な顧客が確保できることです。タスク X の実データを収集して公開すれば、おそらく論文 A の著者は利用してくれるはずです。アプローチ Y の高速な手法を提案すれば、論文 B の著者は利用してくれなくとも、比較には含めてくれるか、引用してくれる可能性はあります。また論文 A, B の著者がいるということは、コミュニティーには他にも興味を持ってくれる研究者がいると期待できます。これにより、研究内容が独りよがりになる失敗を避けることができます。

日常生活の不満を解消するアイデアを考える

ビジネスや発明では基本的なアプローチかと思います。

このアプローチの利点は、自分という顧客を確保できること、自分の欲求に基づくのでモチベーションが保ちやすいことです。

欠点は論文化が難しいことです。日常生活の不満を解消するためには、解法は複合的になることが多く、性能を高めようとするほど設定が特殊化していきます。一方、研究に必要なのは普遍性と再現性です。自分の用途に特殊化した複雑な手法から良い論文を生成するのはなかなか難易度が高いです。慣れていないとあっという間に「素人思考・素人実行」な論文ができあがります。このため、日常生活から研究のアイデアを考えるのは、初心者こそやりがちですがむしろ上級者向けです。まずはインクリメンタルな研究を無難にこなして研究に慣れてからこの方向性に進むのがおすすめです。

このパターンの論文を書くときのコツは、いったん自分の用途にカスタマイズした手法を考え、そこから核となる普遍的な構造を抽出することです。最初から普遍的な手法を考えるよりも取っかかりやすく軸がブレづらいのが利点です。

論文化するアイデアを選ぶ

よし、論文を書くぞと思い立ったタイミングで、前述のネタ帳からアイデアを選びます。

イデアの選定で気をつけているのは、第一には、良い面も悪い面もハッキリしたアイデアを選ぶことです。多くの人に受け入れられなくても、良い面を受け入れてくれる少数の人に強く突き刺されば十分です。査読者全員から weak accept を貰って採択されるくらいであれば、strong accept と strong reject を貰って不採択を食らってやるというくらいの気概で選んでいます。

この基準で選ぶに際しては、論文を書き終わったあとに「こういう論文を書きました」と Twitter に投稿する場面を想像しています。グダグダ説明が必要になりそうならあまり良いアイデアとはいえず、短い言葉や 1 枚の画像で良い面を伝えられれば良いアイデアと言えます。

ハッキリしたアイデアであれば、読者のペルソナを想定しやすく、この後の論文執筆がやりやすくなります。また、学会で発表する際にも、アイデアを短い時間で確実に伝えられ、有益なディスカッションに繋がることが多くなります。

第二に気をつけているのは、できるだけアイデアを寝かせておくことです。最近思いついた最高のアイデアよりも一年前に思いついたそれなりのアイデアを優先するくらいの感覚で選んでいます。

研究でよくある失敗は、研究し始めた段階では素晴らしいアイデアに思えても、一年後には、あるいは研究の途中で既に、つまらないと感じてきてしまうことです。思いつきたてのアイデアは特に魅力的に見えますが、その分色褪せるスピードも早いので、一年後にはつまらなくなる可能性が高いです。一方、一年前に思いついたそれなりのアイデアは既に一年耐えたのだから一年後にもそれなりを保っていることが期待できます。また、最近思いついたアイデアのモチベーションは開始した時点がピークであとは下降するだけですが、昔思いついたアイデアはやってみると意外と面白いじゃんと上昇するケースも多くあります。研究は長期戦なので、こういう長期的なモチベーションコントロールは重要だと考えています。

イデアを一年も寝かすとライバルに先を越されると心配してしまうかもしれませんが、数か月を争うようなアイデアに取り掛かるのはそもそも博打度が高いです。あえて一年寝かすという制約を付けることは、そのような移り変わりの激しい分野から遠ざかることにもつながるので、むしろ利点であると考えています。

サーベイする

イデアを選び終わるとサーベイを行います。サーベイは最初に行う派と最後に行う派がいるようですが、僕はできるだけ先に行います。なぜなら、サーベイで見つけた類似研究が論文の方向性を決定づけるからです。

サーベイによって類似研究が見つかると、その研究と自分の研究の差異を考えます。全く同一のアイデアであることはあり得ないので、小さなことでも何かしらの差は見つかるはずです。また、物事には必ず良い面と悪い面の両面があるものなので、差さえ見つかればそこから提案法の優位な点を抽出できるものです。例えば、提案法は既存法よりも大胆な近似を行っている場合、精度は悪いが高速に動作するでしょう。この場合、時間制約が厳しいアプリケーションや、大規模処理が必要なアプリケーションを考えれば、提案法の良い面が強調できます。論文を書く際には、この差が強調されるようにストーリーを構築して、この差が強調されるように実験設定を考え、この差が強調されるように書き進めていくことになります。既存研究との差は、論文を書き進める方向性を決定づけるものなので、できるだけ早い段階で確定していることが望ましいです。

予備実験を行う

論文を本格的に書き始める前に、アイデアがちゃんと動作するかを予備実験で確かめておきます。ここで気をつけているのは、できるだけ最初の段階から最終形に近い形で実験を行うことです。つまり、人工データ→小規模実データ→大規模実データの順で段階的に実験するのではなく、最初から大規模実データを使って実験を行います。うまく出版できるかは実データにおける実験の成否にかかっているので、予備実験では、この条件がクリアできるかを確認することにまずは全力を注ぎます。この予備実験は実弾(本実験)の前の曳光弾のようなイメージです。

論文を書く

論文を書くにあたっては、まずはいわゆる吐き出し稿 (vomit draft) を仕上げることに注力します。この時には、英文法の誤りは気にせず、適切な引用先を知らなければ空欄にしておきます。特に、引用文献を調べ始めると芋づる式に文献が見つかり際限なく時間がかかるので、最初のフェーズ(アイデアを選んだ直後に方向性を定めるフェーズ)でサーベイは十分に行ったことを信じて、まずは書ききることを目指します。

この方式を採用する理由は先延ばしを避けるためです。初稿が完成するまでは、サーベイが足りないとか、ストーリーが固まっていないとか、様々な先延ばしの言い訳を考えてしまいます。この先延ばしの根本的な要因は、初稿が書き上がるまでは不確定要素が多く、そのために様々な可能性を模索してしまって手に負えなくなることだと思っています。なので、できるだけ早く初稿を書き上げて不確定要素を無理やり確定させてしまいます。その後で、局所探索的に改善を行い、ベストエフォート品質で締切に間に合わせるということを常に意識しています。

推敲する

原稿ができあがった後は推敲を重ねます。ここはひたすら地道に、印刷して赤ペンを持って推敲することを時間間隔をあけて繰り返します。

論文を書くのに慣れないうちは、特に意識して推敲を繰り返すことをおすすめします。初心者が書く論文は多くの場合、推敲が不十分です。推敲が十分でない論文は日本語が不自然な Amazon の商品説明のようなもので、読者は商品(提案手法)の品質まで悪いんじゃないかと勝手に想像してしまいます。推敲不足のせいでリジェクトされるのは悲しいので、やりすぎなくらいに原稿をチェックすることをおすすめします。

一方で、論文を書くのに慣れた後(主著で十本程度論文を書くことを経験した後)は、推敲を止めるタイミングにも気をつけています。慣れてくると最低限の体裁は初期の段階で整えられるようになります。また、研究が軌道に乗ってくると論文化したいアイデアがどんどん溜まっていきます。こうなると推敲を最後まで重ねて打率を 1 パーセント上げるよりも打数を稼ぐ方が効率的になってきます。慣れるとずっと推敲したくなってきますが、時にはグッとこらえて次に進むことも重要です。

精神的に大事なこと

イデアをちゃんと深掘れば何か面白いものが書けるはず、という自信は研究を進める上で重要です。この自信は、アイデアの筋が良いという自信と、どのようなアイデアであれ面白く仕上げられるという自信の両面から成ります。前者については、何が既にやられていて何がまだやられていないかという分野の地図をまずは頭の中に構築して、こっちに進めばまだ見つかっていない面白い発見があるだろうという感覚を養うのが重要です。後者については、研究をして辿り着いた先にある成果物のみをあてにするのではなく、そちらに進んだということそのもの、そしてその過程で見た色んな材料・景色を基に研究のストーリーを構築できるようになるのが大切だと感じています。これらの感覚が得られると、精神的にも業績的にも安定して仕事を進めることができるようになりました。

おすすめ文献

Eamonn Keogh の How to do good research, get it published in SIGKDD and get it cited! は何度も読み返して大きな影響を受けました。ぜひご一読をおすすめします。

おわりに

ビビっときたやり方があればぜひ取り入れてみてください。皆さんのとっておきの論文の書き方もいつかお聞かせ願います。

連絡先: @joisino_ / https://joisino.net

自分の研究を自腹で広告した体験談

皆さんは自分の研究成果をどうやって広めていますか?

ひとつの研究は実働時間だけでも最低数ヶ月、全出版プロセスを考えると一年単位で取り組むこととなります。そうして手塩にかけて育てた研究が誰にも認知されない、というのはなんとも悲しいことです。

僕が所属している機械学習分野は人工知能ブームにより、日々洪水のように論文が発表され、その中で存在感を発揮するのは難しくなっています。

一昔前であれば、名のある国際会議やジャーナルに採択されればそれなりに存在感を発揮できたようですが、今では一つの会議に数千本の論文が採択されるため、採択された後にも競争に勝たなければ目立てないという事態になっています。

論文のクオリティを上げて名のある国際会議に採択されるだけでは不十分、となれば一体どうすれば良いでしょう。

続きを読む

実対称行列が直交行列で対角化できる直感的な証明

English Version

実対称行列の固有値が実数であること、および実対称行列の固有ベクトルで正規直交基底が作れることは様々な領域で非常に重要な役割を果たしています。例えば、主成分分析の導出はこの事実に基づいています。

線形代数の教科書であれば必ず証明が載っているこの定理ですが、その証明は直感的に分かりづらいものばかりです。この記事では、より直感的な説明を試みたいと思います。

続きを読む

合同な凸図形でn要素ベン図を構成する方法

この記事は Concrete Mathematics の演習問題 1.22 を元に作成しています。

ベン図とは複数の集合の関係を図式化したものです。例えば以下は 3 要素のベン図です。

f:id:joisino:20210214180502p:plain

n 要素のベン図には n 個の図形があり、2n 個の領域に分かれ、それぞれの領域は含まれる図形の集合が異なるようになっています。

3 要素のベン図は上記のように円で描けるのですが、4 要素のベン図は円で描けないことが知られています。(4 つの円で 24 = 16 個の領域を構成するのが無理なため。)

どんな図形を使ってもよければ多要素のベン図を構成するのは容易ですが、任意の n について合同な凸図形のみで n 要素のベン図構成することは可能でしょうか?

取っ掛かりのなく難しそうな問題ですが、実はキレイに解けることが知られています。

続きを読む

まんがタイムきらら系列誌の発売日をSlackに通知する

皆さん、忙しい日々の生活に追われ、まんがタイムきらら系列誌を買い忘れてしまうことはありませんか?

まんがタイムきらら系列誌を買い忘れると QOL が大きく低下してしまうので、これだけはなんとしても避けたいものです。

そこで、買い忘れないように発売日に Slack に通知してくれるスクリプトを書きました。

レポジトリ

github.com

レポジトリです。

続きを読む